|
3 | 3 |
|
4 | 4 | use PHPUnit\Framework\Attributes\DataProvider; |
5 | 5 | use PHPUnit\Framework\TestCase; |
| 6 | +use ValueError; |
6 | 7 |
|
7 | 8 | class PropertyObfuscatorTest extends TestCase |
8 | 9 | { |
@@ -103,6 +104,33 @@ class PropertyObfuscatorTest extends TestCase |
103 | 104 | } |
104 | 105 | EOD; |
105 | 106 |
|
| 107 | + public function testDuplicateCaseSensitivePropertyNames(): void |
| 108 | + { |
| 109 | + $obfuscator = Obfuscate::fixedLength(3); |
| 110 | + $builder = PropertyObfuscator::builder() |
| 111 | + ->withProperty('test', $obfuscator) |
| 112 | + ->withProperty('test', $obfuscator, false) |
| 113 | + ->withProperty('TEST', $obfuscator); |
| 114 | + |
| 115 | + $this->expectException(ValueError::class); |
| 116 | + $this->expectExceptionMessage('Duplicate key: test (case sensitive)'); |
| 117 | + |
| 118 | + $builder->withProperty('test', $obfuscator, true); |
| 119 | + } |
| 120 | + |
| 121 | + public function testDuplicateCaseInsensitivePropertyNames(): void |
| 122 | + { |
| 123 | + $obfuscator = Obfuscate::fixedLength(3); |
| 124 | + $builder = PropertyObfuscator::builder() |
| 125 | + ->withProperty('test', $obfuscator) |
| 126 | + ->withProperty('test', $obfuscator, false); |
| 127 | + |
| 128 | + $this->expectException(ValueError::class); |
| 129 | + $this->expectExceptionMessage('Duplicate key: TEST (case insensitive)'); |
| 130 | + |
| 131 | + $builder->withProperty('TEST', $obfuscator, false); |
| 132 | + } |
| 133 | + |
106 | 134 | #[DataProvider('obfuscatePropertyGloballyCaseSensitiveParameters')] |
107 | 135 | public function testObfuscatePropertyGloballyCaseSensitive(string $propertyName, string $value, string $expected): void |
108 | 136 | { |
@@ -1984,4 +2012,34 @@ public function testObfuscateArrayOverridableInheritedObfuscators(): void |
1984 | 2012 | EOD; |
1985 | 2013 | $this->assertEquals($expectedJson, $obfuscatedJson); |
1986 | 2014 | } |
| 2015 | + |
| 2016 | + #[DataProvider('obfuscateScalarsParameters')] |
| 2017 | + public function testObfuscateScalars(mixed $value): void |
| 2018 | + { |
| 2019 | + $obfuscator = Obfuscate::fixedLength(3); |
| 2020 | + $propertyObfuscator = PropertyObfuscator::builder() |
| 2021 | + ->caseSensitiveByDefault() |
| 2022 | + ->withProperty('string', $obfuscator) |
| 2023 | + ->withProperty('notObfuscated', Obfuscate::none()) |
| 2024 | + ->forObjects(PropertyObfuscationMode::SKIP) |
| 2025 | + ->forArrays(PropertyObfuscationMode::SKIP) |
| 2026 | + ->build(); |
| 2027 | + |
| 2028 | + $obfuscated = $propertyObfuscator->obfuscateProperties($value); |
| 2029 | + |
| 2030 | + $this->assertEquals($value, $obfuscated); |
| 2031 | + } |
| 2032 | + |
| 2033 | + /** |
| 2034 | + * @return array<array<mixed>> |
| 2035 | + */ |
| 2036 | + public static function obfuscateScalarsParameters(): array |
| 2037 | + { |
| 2038 | + return [ |
| 2039 | + ['foo'], |
| 2040 | + [1], |
| 2041 | + [true], |
| 2042 | + [false], |
| 2043 | + ]; |
| 2044 | + } |
1987 | 2045 | } |
0 commit comments