1414import static org .mockito .Matchers .eq ;
1515import static org .mockito .Mockito .doAnswer ;
1616import static org .mockito .Mockito .doReturn ;
17+ import static org .mockito .Mockito .doThrow ;
1718import static org .mockito .Mockito .mock ;
1819import static org .mockito .Mockito .reset ;
1920import static org .mockito .Mockito .times ;
2021import static org .mockito .Mockito .verify ;
2122import static org .mockito .Mockito .verifyNoMoreInteractions ;
2223import static org .mockito .Mockito .verifyZeroInteractions ;
24+ import static org .mockito .MockitoAnnotations .initMocks ;
2325
2426import java .util .Arrays ;
25- import java .util .Collection ;
2627import java .util .HashSet ;
2728import java .util .Set ;
2829
2930import javax .jcr .RepositoryException ;
3031import javax .jcr .Session ;
32+ import javax .jcr .SimpleCredentials ;
3133import javax .jcr .Value ;
3234import javax .jcr .ValueFactory ;
3335
3638import org .apache .jackrabbit .api .security .user .Group ;
3739import org .apache .jackrabbit .api .security .user .User ;
3840import org .apache .jackrabbit .api .security .user .UserManager ;
41+ import org .apache .sling .jcr .api .SlingRepository ;
3942import org .hamcrest .BaseMatcher ;
4043import org .hamcrest .Description ;
4144import org .junit .Before ;
4245import org .junit .Test ;
4346import org .junit .runner .RunWith ;
4447import org .junit .runners .Enclosed ;
45- import org .junit . runners . Parameterized ;
48+ import org .mockito . InjectMocks ;
4649import org .mockito .Matchers ;
4750import org .mockito .Mock ;
4851import org .mockito .Mockito ;
49- import org .mockito .MockitoAnnotations ;
5052import org .mockito .Spy ;
5153import org .mockito .invocation .InvocationOnMock ;
5254import org .mockito .runners .MockitoJUnitRunner ;
5961import biz .netcentric .cq .tools .actool .configmodel .AuthorizableConfigBean ;
6062import biz .netcentric .cq .tools .actool .configmodel .GlobalConfiguration ;
6163import biz .netcentric .cq .tools .actool .crypto .DecryptionService ;
64+ import biz .netcentric .cq .tools .actool .history .InstallationLogger ;
6265import biz .netcentric .cq .tools .actool .history .PersistableInstallationLogger ;
6366
6467@ RunWith (Enclosed .class )
@@ -300,6 +303,7 @@ public void describeTo(Description desc) {
300303
301304 public static final class SetUserPassword {
302305
306+ private static final String USER_ID = "userid" ;
303307 private static final String UNPROTECTED_PASSWORD = "unprotected_pass" ;
304308
305309 @ Mock
@@ -308,26 +312,48 @@ public static final class SetUserPassword {
308312 @ Mock
309313 private DecryptionService decryptionService ;
310314
315+ @ Mock
316+ private InstallationLogger installationLogger ;
317+
318+ @ Mock
319+ private SlingRepository repository ;
320+
321+ @ Mock
322+ private Session session ;
323+
324+ @ Spy
325+ @ InjectMocks
311326 private AuthorizableInstallerServiceImpl service ;
312327
328+ private AuthorizableConfigBean configBean ;
329+
313330 @ Before
314- public void setUp () throws CryptoException {
315- MockitoAnnotations . initMocks (this );
331+ public void setUp () throws CryptoException , RepositoryException {
332+ initMocks (this );
316333
317- service = new AuthorizableInstallerServiceImpl ();
318- service .decryptionService = decryptionService ;
334+ doReturn (USER_ID ).when (user ).getID ();
319335
320336 doReturn (UNPROTECTED_PASSWORD ).when (decryptionService ).decrypt (anyString ());
337+
338+ configBean = new AuthorizableConfigBean ();
339+ configBean .setPassword ("{some_protected_pass1}" );
321340 }
322341
323342 @ Test
324- public void test () throws RepositoryException , AuthorizableCreatorException {
325- final AuthorizableConfigBean bean = new AuthorizableConfigBean ();
326- bean .setPassword ("{some_protected_pass1}" );
343+ public void testPasswordExists () throws RepositoryException , AuthorizableCreatorException {
327344
328- service .setUserPassword (bean , user );
345+ doReturn (session ).when (repository ).login (any (SimpleCredentials .class ));
346+ service .setUserPassword (configBean , user , installationLogger );
347+ verify (user , times (0 )).changePassword (anyString ());
348+ }
329349
330- verify (user ).changePassword (eq (UNPROTECTED_PASSWORD ));
350+ @ Test
351+ public void testPasswordDifferent () throws RepositoryException , AuthorizableCreatorException {
352+ final AuthorizableConfigBean bean = new AuthorizableConfigBean ();
353+ bean .setPassword ("{some_protected_pass1}" );
354+ doThrow (javax .jcr .LoginException .class ).when (repository ).login (any (SimpleCredentials .class ));
355+ service .setUserPassword (configBean , user , installationLogger );
356+ verify (user , times (1 )).changePassword (UNPROTECTED_PASSWORD );
331357 }
332358 }
333359}
0 commit comments