Skip to content

Commit 5a8ef11

Browse files
authored
fix(symfony): ECMA-262 pattern with RegExp validator (#6733)
1 parent cecd771 commit 5a8ef11

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

src/Validator/Metadata/Resource/Factory/ParameterValidationResourceMetadataCollectionFactory.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private function addSchemaValidation(Parameter $parameter, ?array $schema = null
130130
}
131131

132132
if (isset($schema['pattern'])) {
133-
$assertions[] = new Regex($schema['pattern']);
133+
$assertions[] = new Regex('#'.$schema['pattern'].'#');
134134
}
135135

136136
if (isset($schema['maxLength']) || isset($schema['minLength'])) {

tests/Fixtures/TestBundle/ApiResource/WithParameter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
'length' => new QueryParameter(schema: ['maxLength' => 1, 'minLength' => 3]),
6363
'array' => new QueryParameter(schema: ['minItems' => 2, 'maxItems' => 3]),
6464
'multipleOf' => new QueryParameter(schema: ['multipleOf' => 2]),
65-
'pattern' => new QueryParameter(schema: ['pattern' => '/\d/']),
65+
'pattern' => new QueryParameter(schema: ['pattern' => '\d']),
6666
],
6767
provider: [self::class, 'collectionProvider']
6868
)]

tests/Fixtures/TestBundle/Filter/PatternFilter.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ public function getDescription(string $resourceClass): array
3636
'type' => 'string',
3737
'required' => false,
3838
'schema' => [
39-
'pattern' => '/^(pattern|nrettap)$/',
39+
'pattern' => '^(pattern|nrettap)$',
4040
],
4141
],
4242
];

tests/Functional/Parameters/ValidationTest.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ public static function provideQueryStrings(): array
113113

114114
public function testBlank(): void
115115
{
116-
$response = self::createClient()->request('GET', 'validate_parameters?blank=f');
116+
self::createClient()->request('GET', 'validate_parameters?blank=f');
117117
$this->assertResponseIsSuccessful();
118118
}
119119

@@ -146,4 +146,10 @@ public function testValidatePropertyPlaceholder(): void
146146
],
147147
], $response->toArray(false));
148148
}
149+
150+
public function testValidatePattern(): void
151+
{
152+
self::createClient()->request('GET', 'validate_parameters?pattern=2');
153+
$this->assertResponseIsSuccessful();
154+
}
149155
}

0 commit comments

Comments
 (0)