18
18
use Symfony \Component \PropertyAccess \Exception \NoSuchPropertyException ;
19
19
use Symfony \Component \PropertyAccess \PropertyAccessor ;
20
20
use Symfony \Component \Security \Core \Signature \SignatureHasher ;
21
+ use Symfony \Component \Security \Core \Tests \Fixtures \DummyHasher ;
21
22
use Symfony \Component \Security \Core \Tests \Fixtures \DummyUserWithProperties ;
22
23
use Symfony \Component \Security \Core \Tests \Fixtures \Enum \IntBackedEnum ;
23
24
use Symfony \Component \Security \Core \Tests \Fixtures \Enum \NonBackedEnum ;
@@ -32,14 +33,15 @@ class SignatureHasherTest extends TestCase
32
33
/**
33
34
* @dataProvider providerComputeSignatureHash
34
35
*/
35
- public function testComputeSignatureHash (mixed $ arbitraryValue , array $ signatureProperties , string $ expectedHash )
36
+ public function testComputeSignatureHash (mixed $ arbitraryValue , array $ signatureProperties , bool $ useDummyHasher , string $ expectedHash )
36
37
{
37
38
$ user = new DummyUserWithProperties (self ::USER_IDENTIFIER , $ arbitraryValue );
38
39
39
40
$ signatureHasher = new SignatureHasher (
40
41
new PropertyAccessor (),
41
42
$ signatureProperties ,
42
43
self ::SECRET ,
44
+ ...($ useDummyHasher ? ['hasher ' => new DummyHasher ()] : []),
43
45
);
44
46
45
47
$ actualHash = $ signatureHasher ->computeSignatureHash ($ user , self ::EXPIRES );
@@ -49,22 +51,26 @@ public function testComputeSignatureHash(mixed $arbitraryValue, array $signature
49
51
public function providerComputeSignatureHash (): array
50
52
{
51
53
return [
52
- ['someValue ' , [], 'G8FxuQ7xlU0L132MkzxZu5KRob7AQBcxzpaDAUC6b54~47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU~ ' ],
53
- ['someValue ' , ['identifier ' ], 'a5YdlgWCmg7usTIoClr2uFFOEfO_XY1f7rCAoswmstE~blXCO2vRdOtJA_aCJPBaNpRpsaS957uvosMktnrI6wY~ ' ],
54
- ['someValue ' , ['arbitraryValue ' ], 'kfMzZgYYD1oeqSSW7m0k94VuRvS7LeHcKq-PKU8WD7k~0nuV8X2IlHqxDdPRNOLP-wp_v2KdVL9dNYJ0_557fGc~ ' ],
55
- ['someValue ' , ['identifier ' , 'arbitraryValue ' ], 'myxvvho8WkMuOcMMeuRlZQFe58TNDQFgDrVFb8SZ50g~iJ4d_Agaa0AaCHZinVr_zZCgR2nSZgokvXIkv7ne1b4~ ' ],
56
- [null , ['arbitraryValue ' ], 'RMzJFvIb5BMTbyJb_VZwuKEchdxH8bA00ci1kYVJgEc~56wHhmaOD_DwK2K9BPRf9jb9gttjsRBGAcl13ABfOmc~ ' ],
57
- [false , ['arbitraryValue ' ], 'RMzJFvIb5BMTbyJb_VZwuKEchdxH8bA00ci1kYVJgEc~56wHhmaOD_DwK2K9BPRf9jb9gttjsRBGAcl13ABfOmc~ ' ],
58
- [true , ['arbitraryValue ' ], 'otQtMUGvEkdfOynddQ5WvoRldq8honHbEb1HcM8UR8I~D60nAF03Qti0aU2B2Z5nVMOl_evP1uYHUVXRtHzgea0~ ' ],
59
- [123 , ['arbitraryValue ' ], 'FTEV8ag4ndPfukNSOgsQtT7M7V0_Ab0Q6xnpqbWNhZ0~wWwB3p8Bp_5t2VDeCwTuCFHI-3gDxIPgP-C9ZZHEzaY~ ' ],
60
- [123.456 , ['arbitraryValue ' ], 'bmSC3nku_rZA6KjVLJgEZhfx7GOhrQDfxaAubuncdII~nriT5yCE-wjOnuk-yycrgCtch4raCAhuuVeja7X6N7k~ ' ],
61
- [['foo ' , 'bar ' , 'baz ' ], ['arbitraryValue[0] ' , 'arbitraryValue[1] ' ], 'RRujHUR7iidZDEMkSHXEGvyaTCA5C4m0n5H200gqLxw~Zt46jI-2GYxtNTzeTcOoq2_jxow7h7PuI2C0qp7-H28~ ' ],
62
- [['a ' => 'foo ' , 'b ' => 'bar ' , 'c ' => 'baz ' ], ['arbitraryValue[b] ' , 'arbitraryValue[c] ' ], 'J6hgo51Cax5NBrtIH1JpZSuLgNXZ0G24dN1v7WGFyqg~fePV3ZmKYu5tz49IF6nlmAwhchNOkkGMCEIFapsOVYw~ ' ],
63
- [(object ) ['a ' => 'foo ' , 'b ' => 'bar ' , 'c ' => 'baz ' ], ['arbitraryValue.c ' , 'arbitraryValue.a ' , 'arbitraryValue.b ' ], 'sXS_9yKjlog_OhI6oI5I0oG-M-A8TCaHhE7yhuUfhQU~6bdXP2SGmxK_WmYcg_mBySv40I_aKpbySb78NfJLQVA~ ' ],
64
- [IntBackedEnum::FOO , ['arbitraryValue ' ], '3CtZMZJ-YGRX6xUInO9pn3Re0oyojM57L-7CDWzY51k~BtLamVEszxpZWe7HwvgW9MB2XJfepVW7yEWydNHdr2k~ ' ],
65
- [IntBackedEnum::BAR , ['arbitraryValue ' ], 'otQtMUGvEkdfOynddQ5WvoRldq8honHbEb1HcM8UR8I~D60nAF03Qti0aU2B2Z5nVMOl_evP1uYHUVXRtHzgea0~ ' ],
66
- [StringBackedEnum::FOO , ['arbitraryValue ' ], 'H0kSG0c8UDJswEoMdkvpPvksK5yL7XO-UOPT93H-1Xo~JFWxxE-9gSaxRbu2nBFRqYShfEIp87D6nFTv3Qcidas~ ' ],
67
- [StringBackedEnum::BAR , ['arbitraryValue ' ], '5UzmukUROyA6-v0VEac9Tc2Wz1HiV_nbqbWraFXbIu0~ZYCW1TBi_AyktUQPgz9tP3utfjTx-lv2Ea45T-0o4w8~ ' ],
54
+ // test with dummy hasher
55
+ ['someValue ' , [], true , 'HMAC(HASH():1234567890:username,s3cr3t)HASH() ' ],
56
+ ['someValue ' , ['identifier ' ], true , 'HMAC(HASH(:username):1234567890:username,s3cr3t)HASH(:username) ' ],
57
+ ['someValue ' , ['arbitraryValue ' ], true , 'HMAC(HASH(:someValue):1234567890:username,s3cr3t)HASH(:someValue) ' ],
58
+ ['someValue ' , ['identifier ' , 'arbitraryValue ' ], true , 'HMAC(HASH(:username:someValue):1234567890:username,s3cr3t)HASH(:username:someValue) ' ],
59
+ [null , ['arbitraryValue ' ], true , 'HMAC(HASH(:):1234567890:username,s3cr3t)HASH(:) ' ],
60
+ [false , ['arbitraryValue ' ], true , 'HMAC(HASH(:):1234567890:username,s3cr3t)HASH(:) ' ],
61
+ [true , ['arbitraryValue ' ], true , 'HMAC(HASH(:1):1234567890:username,s3cr3t)HASH(:1) ' ],
62
+ [123 , ['arbitraryValue ' ], true , 'HMAC(HASH(:123):1234567890:username,s3cr3t)HASH(:123) ' ],
63
+ [123.456 , ['arbitraryValue ' ], true , 'HMAC(HASH(:123.456):1234567890:username,s3cr3t)HASH(:123.456) ' ],
64
+ [['foo ' , 'bar ' , 'baz ' ], ['arbitraryValue[0] ' , 'arbitraryValue[1] ' ], true , 'HMAC(HASH(:foo:bar):1234567890:username,s3cr3t)HASH(:foo:bar) ' ],
65
+ [['a ' => 'foo ' , 'b ' => 'bar ' , 'c ' => 'baz ' ], ['arbitraryValue[b] ' , 'arbitraryValue[c] ' ], true , 'HMAC(HASH(:bar:baz):1234567890:username,s3cr3t)HASH(:bar:baz) ' ],
66
+ [(object ) ['a ' => 'foo ' , 'b ' => 'bar ' , 'c ' => 'baz ' ], ['arbitraryValue.c ' , 'arbitraryValue.a ' , 'arbitraryValue.b ' ], true , 'HMAC(HASH(:baz:foo:bar):1234567890:username,s3cr3t)HASH(:baz:foo:bar) ' ],
67
+ [IntBackedEnum::FOO , ['arbitraryValue ' ], true , 'HMAC(HASH(:0):1234567890:username,s3cr3t)HASH(:0) ' ],
68
+ [IntBackedEnum::BAR , ['arbitraryValue ' ], true , 'HMAC(HASH(:1):1234567890:username,s3cr3t)HASH(:1) ' ],
69
+ [StringBackedEnum::FOO , ['arbitraryValue ' ], true , 'HMAC(HASH(:Foo):1234567890:username,s3cr3t)HASH(:Foo) ' ],
70
+ [StringBackedEnum::BAR , ['arbitraryValue ' ], true , 'HMAC(HASH(:Bar):1234567890:username,s3cr3t)HASH(:Bar) ' ],
71
+ // test with actual hasher
72
+ ['someValue ' , ['identifier ' ], false , 'a5YdlgWCmg7usTIoClr2uFFOEfO_XY1f7rCAoswmstE~blXCO2vRdOtJA_aCJPBaNpRpsaS957uvosMktnrI6wY~ ' ],
73
+ ['someValue ' , ['identifier ' , 'arbitraryValue ' ], false , 'myxvvho8WkMuOcMMeuRlZQFe58TNDQFgDrVFb8SZ50g~iJ4d_Agaa0AaCHZinVr_zZCgR2nSZgokvXIkv7ne1b4~ ' ],
68
74
];
69
75
}
70
76
0 commit comments