|
11 | 11 |
|
12 | 12 | namespace Symfony\Component\Security\Core\Tests\Authentication\Token;
|
13 | 13 |
|
| 14 | +use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; |
14 | 15 | use Symfony\Component\Security\Core\Role\Role;
|
| 16 | +use Symfony\Component\Security\Core\Role\SwitchUserRole; |
| 17 | + |
| 18 | +class Wrap implements \Serializable |
| 19 | +{ |
| 20 | + public function serialize() |
| 21 | + { |
| 22 | + var_dump(\unserialize(\serialize($this->token)));die; |
| 23 | + return \serialize(unserialize(\serialize($this->token))); |
| 24 | + } |
| 25 | + |
| 26 | + public function unserialize($serialize) |
| 27 | + { |
| 28 | + $this->token = unserialize($serialize); |
| 29 | + } |
| 30 | +} |
15 | 31 |
|
16 | 32 | class TestUser
|
17 | 33 | {
|
@@ -71,6 +87,42 @@ public function testSerialize()
|
71 | 87 | $this->assertEquals($token->getAttributes(), $uToken->getAttributes());
|
72 | 88 | }
|
73 | 89 |
|
| 90 | + public function testSerializeRecursive() |
| 91 | + { |
| 92 | + $user = new TestUser('david'); |
| 93 | + $originalToken = new UsernamePasswordToken($user, 'credentials_previousz', 'secured_area', array('ROL1')); |
| 94 | + |
| 95 | + $ser = \serialize(\serialize($originalToken)); |
| 96 | + $this->assertEquals(\unserialize(\unserialize($ser)), $originalToken); |
| 97 | + |
| 98 | +// $wrap = new Wrap(); |
| 99 | +// $wrap->token = $originalToken; |
| 100 | + |
| 101 | + |
| 102 | +// $uToken = \unserialize(\serialize(array($wrap))); |
| 103 | +// var_dump($uToken);die; |
| 104 | + |
| 105 | +// succeeds |
| 106 | +// $serialized = \unserialize(\serialize($originalToken)); |
| 107 | +// $this->assertInstanceOf('Symfony\Component\Security\Core\Tests\Authentication\Token\TestUser', $serialized->getUser()); |
| 108 | + |
| 109 | + $roles = array(new SwitchUserRole('ROLE_PREVIOUS_ROLE', $originalToken)); |
| 110 | + |
| 111 | + $token = new UsernamePasswordToken($user, 'credentials', 'secured_area2', $roles); |
| 112 | + $serialized = \serialize($token); |
| 113 | + |
| 114 | + $token2 = \unserialize($serialized); |
| 115 | + |
| 116 | + print_r($token); |
| 117 | + print_r($token2); |
| 118 | + |
| 119 | + $user1 = \reset($token->getRoles())->getSource()->getUser(); |
| 120 | + $this->assertInstanceOf('Symfony\Component\Security\Core\Tests\Authentication\Token\TestUser', $user1); |
| 121 | + |
| 122 | + $user2 = \reset($token2->getRoles())->getSource()->getUser(); |
| 123 | + $this->assertInstanceOf('Symfony\Component\Security\Core\Tests\Authentication\Token\TestUser', $user2); |
| 124 | + } |
| 125 | + |
74 | 126 | /**
|
75 | 127 | * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::__construct
|
76 | 128 | */
|
@@ -242,3 +294,4 @@ protected function getToken(array $roles = array())
|
242 | 294 | return $this->getMockForAbstractClass('Symfony\Component\Security\Core\Authentication\Token\AbstractToken', array($roles));
|
243 | 295 | }
|
244 | 296 | }
|
| 297 | + |
0 commit comments