Fix addMainKey method of JsonManipulator with content having $n
This will store correctly passwords having a dolloar sign followed by a digit in the auth.json file. If the content variable has "$n" (where n consists of digits) it will match as a replacement reference for preg_replace and thus it will get stripped because there's no such parenthesized pattern.pull/5221/head
parent
c7c8335b8b
commit
3bdb0ee5fd
|
@ -353,7 +353,7 @@ class JsonManipulator
|
||||||
if ($this->pregMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) {
|
if ($this->pregMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) {
|
||||||
$this->contents = preg_replace(
|
$this->contents = preg_replace(
|
||||||
'#'.$match[1].'\}$#',
|
'#'.$match[1].'\}$#',
|
||||||
addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\'),
|
addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'),
|
||||||
$this->contents
|
$this->contents
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -363,7 +363,7 @@ class JsonManipulator
|
||||||
// append at the end of the file
|
// append at the end of the file
|
||||||
$this->contents = preg_replace(
|
$this->contents = preg_replace(
|
||||||
'#\}$#',
|
'#\}$#',
|
||||||
addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\'),
|
addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'),
|
||||||
$this->contents
|
$this->contents
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -2045,6 +2045,31 @@ class JsonManipulatorTest extends \PHPUnit_Framework_TestCase
|
||||||
', $manipulator->getContents());
|
', $manipulator->getContents());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testAddMainKeyWithContentHavingDollarSignFollowedByDigit()
|
||||||
|
{
|
||||||
|
$manipulator = new JsonManipulator('{
|
||||||
|
"foo": "bar"
|
||||||
|
}');
|
||||||
|
|
||||||
|
$this->assertTrue($manipulator->addMainKey('bar', '$1baz'));
|
||||||
|
$this->assertEquals('{
|
||||||
|
"foo": "bar",
|
||||||
|
"bar": "$1baz"
|
||||||
|
}
|
||||||
|
', $manipulator->getContents());
|
||||||
|
}
|
||||||
|
|
||||||
|
public function testAddMainKeyWithContentHavingDollarSignFollowedByDigit2()
|
||||||
|
{
|
||||||
|
$manipulator = new JsonManipulator('{}');
|
||||||
|
|
||||||
|
$this->assertTrue($manipulator->addMainKey('foo', '$1bar'));
|
||||||
|
$this->assertEquals('{
|
||||||
|
"foo": "$1bar"
|
||||||
|
}
|
||||||
|
', $manipulator->getContents());
|
||||||
|
}
|
||||||
|
|
||||||
public function testUpdateMainKey()
|
public function testUpdateMainKey()
|
||||||
{
|
{
|
||||||
$manipulator = new JsonManipulator('{
|
$manipulator = new JsonManipulator('{
|
||||||
|
@ -2105,6 +2130,19 @@ class JsonManipulatorTest extends \PHPUnit_Framework_TestCase
|
||||||
', $manipulator->getContents());
|
', $manipulator->getContents());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testUpdateMainKeyWithContentHavingDollarSignFollowedByDigit()
|
||||||
|
{
|
||||||
|
$manipulator = new JsonManipulator('{
|
||||||
|
"foo": "bar"
|
||||||
|
}');
|
||||||
|
|
||||||
|
$this->assertTrue($manipulator->addMainKey('foo', '$1bar'));
|
||||||
|
$this->assertEquals('{
|
||||||
|
"foo": "$1bar"
|
||||||
|
}
|
||||||
|
', $manipulator->getContents());
|
||||||
|
}
|
||||||
|
|
||||||
public function testIndentDetection()
|
public function testIndentDetection()
|
||||||
{
|
{
|
||||||
$manipulator = new JsonManipulator('{
|
$manipulator = new JsonManipulator('{
|
||||||
|
|
Loading…
Reference in New Issue