13
13
14
14
use Symfony \Component \Security \Core \Encoder \MessageDigestPasswordEncoder ;
15
15
use Symfony \Component \Security \Core \Encoder \EncoderFactory ;
16
+ use Symfony \Component \Security \Core \Encoder \EncoderAwareInterface ;
16
17
use Symfony \Component \Security \Core \User \User ;
17
18
use Symfony \Component \Security \Core \User \UserInterface ;
18
19
@@ -78,6 +79,59 @@ public function testGetEncoderConfiguredForConcreteClassWithClassName()
78
79
$ expectedEncoder = new MessageDigestPasswordEncoder ('sha1 ' );
79
80
$ this ->assertEquals ($ expectedEncoder ->encodePassword ('foo ' , '' ), $ encoder ->encodePassword ('foo ' , '' ));
80
81
}
82
+
83
+ public function testGetNamedEncoderForEncoderAware ()
84
+ {
85
+ $ factory = new EncoderFactory (array (
86
+ 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser ' => new MessageDigestPasswordEncoder ('sha256 ' ),
87
+ 'encoder_name ' => new MessageDigestPasswordEncoder ('sha1 ' )
88
+ ));
89
+
90
+ $ encoder = $ factory ->getEncoder (new EncAwareUser ('user ' , 'pass ' ));
91
+ $ expectedEncoder = new MessageDigestPasswordEncoder ('sha1 ' );
92
+ $ this ->assertEquals ($ expectedEncoder ->encodePassword ('foo ' , '' ), $ encoder ->encodePassword ('foo ' , '' ));
93
+ }
94
+
95
+ public function testGetNullNamedEncoderForEncoderAware ()
96
+ {
97
+ $ factory = new EncoderFactory (array (
98
+ 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser ' => new MessageDigestPasswordEncoder ('sha1 ' ),
99
+ 'encoder_name ' => new MessageDigestPasswordEncoder ('sha256 ' )
100
+ ));
101
+
102
+ $ user = new EncAwareUser ('user ' , 'pass ' );
103
+ $ user ->encoderName = null ;
104
+ $ encoder = $ factory ->getEncoder ($ user );
105
+ $ expectedEncoder = new MessageDigestPasswordEncoder ('sha1 ' );
106
+ $ this ->assertEquals ($ expectedEncoder ->encodePassword ('foo ' , '' ), $ encoder ->encodePassword ('foo ' , '' ));
107
+ }
108
+
109
+ /**
110
+ * @expectedException RuntimeException
111
+ */
112
+ public function testGetInvalidNamedEncoderForEncoderAware ()
113
+ {
114
+ $ factory = new EncoderFactory (array (
115
+ 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser ' => new MessageDigestPasswordEncoder ('sha1 ' ),
116
+ 'encoder_name ' => new MessageDigestPasswordEncoder ('sha256 ' )
117
+ ));
118
+
119
+ $ user = new EncAwareUser ('user ' , 'pass ' );
120
+ $ user ->encoderName = 'invalid_encoder_name ' ;
121
+ $ encoder = $ factory ->getEncoder ($ user );
122
+ }
123
+
124
+ public function testGetEncoderForEncoderAwareWithClassName ()
125
+ {
126
+ $ factory = new EncoderFactory (array (
127
+ 'Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser ' => new MessageDigestPasswordEncoder ('sha1 ' ),
128
+ 'encoder_name ' => new MessageDigestPasswordEncoder ('sha256 ' )
129
+ ));
130
+
131
+ $ encoder = $ factory ->getEncoder ('Symfony\Component\Security\Core\Tests\Encoder\EncAwareUser ' );
132
+ $ expectedEncoder = new MessageDigestPasswordEncoder ('sha1 ' );
133
+ $ this ->assertEquals ($ expectedEncoder ->encodePassword ('foo ' , '' ), $ encoder ->encodePassword ('foo ' , '' ));
134
+ }
81
135
}
82
136
83
137
class SomeUser implements UserInterface
@@ -92,3 +146,13 @@ public function eraseCredentials() {}
92
146
class SomeChildUser extends SomeUser
93
147
{
94
148
}
149
+
150
+ class EncAwareUser extends SomeUser implements EncoderAwareInterface
151
+ {
152
+ public $ encoderName = 'encoder_name ' ;
153
+
154
+ public function getEncoderName ()
155
+ {
156
+ return $ this ->encoderName ;
157
+ }
158
+ }
0 commit comments