Skip to content

Commit 9aac923

Browse files
committed
Pattern property setter will always throw an exception on valid property names
1 parent da76d16 commit 9aac923

File tree

3 files changed

+10
-3
lines changed

3 files changed

+10
-3
lines changed

src/Property/PatternPropertySetter.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public function __construct(PhpConstant $patternConst, PhpAnyType $type)
3333
$this->setResult(PhpStdType::tSelf());
3434
$this->setBody(
3535
new PlaceholderString(<<<PHP
36-
if (preg_match(:helper::toPregPattern(self::{$patternConst->getName()}), \$name)) {
36+
if (!preg_match(:helper::toPregPattern(self::{$patternConst->getName()}), \$name)) {
3737
throw new StringException('Pattern mismatch', :stringException::PATTERN_MISMATCH);
3838
}
3939
\$this->addPatternPropertyName(self::{$patternConst->getName()}, \$name);

tests/src/PHPUnit/JsonSchema/AdvancedTest.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ public function getXValues()
477477
*/
478478
public function setXValue($name, $value)
479479
{
480-
if (preg_match(Swaggest\JsonSchema\Helper::toPregPattern(self::X_PROPERTY_PATTERN), $name)) {
480+
if (!preg_match(Swaggest\JsonSchema\Helper::toPregPattern(self::X_PROPERTY_PATTERN), $name)) {
481481
throw new StringException('Pattern mismatch', Swaggest\JsonSchema\Exception\StringException::PATTERN_MISMATCH);
482482
}
483483
$this->addPatternPropertyName(self::X_PROPERTY_PATTERN, $name);
@@ -512,7 +512,7 @@ public function getZedValues()
512512
*/
513513
public function setZedValue($name, $value)
514514
{
515-
if (preg_match(Swaggest\JsonSchema\Helper::toPregPattern(self::ZED_PROPERTY_PATTERN), $name)) {
515+
if (!preg_match(Swaggest\JsonSchema\Helper::toPregPattern(self::ZED_PROPERTY_PATTERN), $name)) {
516516
throw new StringException('Pattern mismatch', Swaggest\JsonSchema\Exception\StringException::PATTERN_MISMATCH);
517517
}
518518
$this->addPatternPropertyName(self::ZED_PROPERTY_PATTERN, $name);

tests/src/PHPUnit/JsonSchema/FeatureTest.php

+7
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Swaggest\PhpCodeBuilder\Tests\PHPUnit\JsonSchema;
44

55

6+
use Swaggest\JsonSchema\Exception\StringException;
67
use Swaggest\JsonSchema\Schema;
78
use Swaggest\PhpCodeBuilder\App\PhpApp;
89
use Swaggest\PhpCodeBuilder\JsonSchema\ClassHookCallback;
@@ -88,6 +89,10 @@ public function testGeneratedEntity()
8889
$e = Entity::import($data);
8990
$this->assertEquals(['x-sample' => 1], $e->getXValues());
9091
$this->assertEquals(['z-sample' => true], $e->getZValues());
92+
$e->setXValue('x-sample', 2);
93+
$this->assertEquals(['x-sample' => 2], $e->getXValues());
94+
$e->setXValue('x-sample-3', 3);
95+
$this->assertEquals(['x-sample' => 2, 'x-sample-3' => 3], $e->getXValues());
9196

9297
$this->assertEquals(['foo1' => 'bar1', 'foo2' => 'bar2'], $e->getAdditionalPropertyValues());
9398

@@ -98,6 +103,8 @@ public function testGeneratedEntity()
98103
$e->{'x-sample'} = 1;
99104
$e->{'z-sample'} = "one";
100105

106+
$this->expectException(StringException::class);
107+
$e->setXValue('invalid-name', 'invalid');
101108

102109
}
103110

0 commit comments

Comments
 (0)