|
14 | 14 | use PHPUnit\Framework\TestCase;
|
15 | 15 | use Symfony\Component\Security\Core\Authentication\Token\SwitchUserToken;
|
16 | 16 | use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
|
| 17 | +use Symfony\Component\Security\Core\Tests\Authentication\Token\Fixtures\CustomUser; |
17 | 18 | use Symfony\Component\Security\Core\User\UserInterface;
|
18 | 19 |
|
19 | 20 | class SwitchUserTokenTest extends TestCase
|
@@ -90,13 +91,33 @@ public function testSerializeNullImpersonateUrl()
|
90 | 91 | $this->assertNull($unserializedToken->getOriginatedFromUri());
|
91 | 92 | }
|
92 | 93 |
|
| 94 | + /** |
| 95 | + * Tests if an old version of SwitchUserToken can still be unserialized. |
| 96 | + * |
| 97 | + * The fixture was generated by running the following code with Symfony 4.4 and PHP 7.2. |
| 98 | + * |
| 99 | + * serialize( |
| 100 | + * new SwitchUserToken( |
| 101 | + * new CustomUser('john', ['ROLE_USER']), |
| 102 | + * ['foo' => 'bar'], |
| 103 | + * 'main', ['ROLE_USER'], |
| 104 | + * new UsernamePasswordToken( |
| 105 | + * new CustomUser('jane', ['ROLE_USER']), |
| 106 | + * ['foo' => 'bar'], |
| 107 | + * 'main', |
| 108 | + * ['ROLE_USER'] |
| 109 | + * ) |
| 110 | + * ) |
| 111 | + * ) |
| 112 | + */ |
93 | 113 | public function testUnserializeOldToken()
|
94 | 114 | {
|
95 | 115 | /** @var SwitchUserToken $token */
|
96 | 116 | $token = unserialize(file_get_contents(__DIR__.'/Fixtures/switch-user-token-4.4.txt'));
|
97 | 117 |
|
98 | 118 | self::assertInstanceOf(SwitchUserToken::class, $token);
|
99 | 119 | self::assertInstanceOf(UsernamePasswordToken::class, $token->getOriginalToken());
|
| 120 | + self::assertInstanceOf(CustomUser::class, $token->getUser()); |
100 | 121 | self::assertSame('john', $token->getUserIdentifier());
|
101 | 122 | self::assertSame(['foo' => 'bar'], $token->getCredentials());
|
102 | 123 | self::assertSame('main', $token->getFirewallName());
|
|
0 commit comments