Skip to content

Commit 774a9f5

Browse files
authored
Refactor/uri sanitize fix patterns (#3)
* add vscode and jetbrains ide folders into gitignore * refactor and add new patters and replacements * add tests
1 parent abec708 commit 774a9f5

File tree

3 files changed

+40
-1
lines changed

3 files changed

+40
-1
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
*.cache
2+
.idea
3+
.vscode
24
vendor/

src/Support/Uri.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,15 @@ public static function sanitize(string $uri): string
1717
{
1818
return preg_replace(
1919
[
20-
'/\/(?<=\/)([a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12})(?=\/)?/',
20+
'/\/(?<=\/)([A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12})(?=\/)?/i',
21+
'/\/(?<=\/)([A-Z]{3}-?\d[0-9A-Z]\d{2})(?=\/)?/i',
22+
'/\/(?<=\/)[0-9A-F]{24}(?=\/)?/i',
2123
'/\/(?<=\/)\d+(?=\/)?/',
2224
],
2325
[
2426
'/<UUID>',
27+
'/<LICENSE-PLATE>',
28+
'/<OID>',
2529
'/<NUMBER>',
2630
],
2731
$uri

tests/UriTest.php

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,25 @@ public function testSanitizeNumbers(): void
3232
self::assertSame('/v8/test/<NUMBER>/<NUMBER>/<NUMBER>/', Uri::sanitize('/v8/test/123/456/789/'));
3333
}
3434

35+
public function testSanitizeLicensePlatesStrings(): void
36+
{
37+
self::assertSame('/v1/test', Uri::sanitize('/v1/test'));
38+
self::assertSame('/v2/test/<LICENSE-PLATE>', Uri::sanitize('/v2/test/PET9D49'));
39+
self::assertSame('/v2/test/<LICENSE-PLATE>', Uri::sanitize('/v2/test/PET9349'));
40+
self::assertSame('/v3/test/<LICENSE-PLATE>/bar', Uri::sanitize('/v3/test/PET9D49/bar'));
41+
self::assertSame('/v3/test/<LICENSE-PLATE>/bar', Uri::sanitize('/v3/test/PET9349/bar'));
42+
self::assertSame('/v4/test/<LICENSE-PLATE>/bar/<LICENSE-PLATE>/', Uri::sanitize('/v4/test/PET9D49/bar/PET9D49/'));
43+
self::assertSame('/v4/test/<LICENSE-PLATE>/bar/<LICENSE-PLATE>/', Uri::sanitize('/v4/test/PET9349/bar/PET9349/'));
44+
self::assertSame('/v5/test/<LICENSE-PLATE>/<LICENSE-PLATE>', Uri::sanitize('/v5/test/PET9D49/PET9D49'));
45+
self::assertSame('/v5/test/<LICENSE-PLATE>/<LICENSE-PLATE>', Uri::sanitize('/v5/test/PET9349/PET9349'));
46+
self::assertSame('/v6/test/<LICENSE-PLATE>/<LICENSE-PLATE>/', Uri::sanitize('/v6/test/PET9D49/PET9D49/'));
47+
self::assertSame('/v6/test/<LICENSE-PLATE>/<LICENSE-PLATE>/', Uri::sanitize('/v6/test/PET9349/PET9349/'));
48+
self::assertSame('/v7/test/<LICENSE-PLATE>/<LICENSE-PLATE>/<LICENSE-PLATE>', Uri::sanitize('/v7/test/PET9D49/PET9D49/PET9D49'));
49+
self::assertSame('/v7/test/<LICENSE-PLATE>/<LICENSE-PLATE>/<LICENSE-PLATE>', Uri::sanitize('/v7/test/PET9349/PET9349/PET9349'));
50+
self::assertSame('/v8/test/<LICENSE-PLATE>/<LICENSE-PLATE>/<LICENSE-PLATE>/', Uri::sanitize('/v8/test/PET9D49/PET9D49/PET9D49/'));
51+
self::assertSame('/v8/test/<LICENSE-PLATE>/<LICENSE-PLATE>/<LICENSE-PLATE>/', Uri::sanitize('/v8/test/PET9349/PET9349/PET9349/'));
52+
}
53+
3554
public function testClearUriUuids(): void
3655
{
3756
$uuid = '123e4567-e89b-12d3-a456-426614174000';
@@ -45,4 +64,18 @@ public function testClearUriUuids(): void
4564
self::assertSame('/v7/test/<UUID>/<UUID>/<UUID>', Uri::sanitize("/v7/test/{$uuid}/{$uuid}/{$uuid}"));
4665
self::assertSame('/v8/test/<UUID>/<UUID>/<UUID>/', Uri::sanitize("/v8/test/{$uuid}/{$uuid}/{$uuid}/"));
4766
}
67+
68+
public function testClearUriOids(): void
69+
{
70+
$oid = '650229807612bba4984d1fc7';
71+
72+
self::assertSame('/v1/test', Uri::sanitize('/v1/test'));
73+
self::assertSame('/v2/test/<OID>', Uri::sanitize("/v2/test/{$oid}"));
74+
self::assertSame('/v3/test/<OID>/bar', Uri::sanitize("/v3/test/{$oid}/bar"));
75+
self::assertSame('/v4/test/<OID>/bar/<OID>/', Uri::sanitize("/v4/test/{$oid}/bar/{$oid}/"));
76+
self::assertSame('/v5/test/<OID>/<OID>', Uri::sanitize("/v5/test/{$oid}/{$oid}"));
77+
self::assertSame('/v6/test/<OID>/<OID>/', Uri::sanitize("/v6/test/{$oid}/{$oid}/"));
78+
self::assertSame('/v7/test/<OID>/<OID>/<OID>', Uri::sanitize("/v7/test/{$oid}/{$oid}/{$oid}"));
79+
self::assertSame('/v8/test/<OID>/<OID>/<OID>/', Uri::sanitize("/v8/test/{$oid}/{$oid}/{$oid}/"));
80+
}
4881
}

0 commit comments

Comments
 (0)