15
15
import org .junit .Test ;
16
16
import org .junit .rules .ExpectedException ;
17
17
import org .junit .runner .RunWith ;
18
+ import org .mockito .ArgumentCaptor ;
18
19
import org .mockito .Matchers ;
19
20
import org .robolectric .RobolectricGradleTestRunner ;
20
21
import org .robolectric .annotation .Config ;
@@ -217,10 +218,11 @@ public void testSignUpAsyncWithMergeInDiskAnonymousUser() throws Exception {
217
218
ParseUser currentUser = mock (ParseUser .class );
218
219
when (currentUser .getUsername ()).thenReturn ("oldUserName" );
219
220
when (currentUser .getPassword ()).thenReturn ("oldPassword" );
221
+ when (currentUser .isLazy ()).thenReturn (false );
220
222
when (currentUser .isLinked (ParseAnonymousUtils .AUTH_TYPE )).thenReturn (true );
221
223
when (currentUser .getSessionToken ()).thenReturn ("oldSessionToken" );
222
224
when (currentUser .getAuthData ()).thenReturn (new HashMap <String , Map <String , String >>());
223
- when (currentUser .saveAsync (anyString (), Matchers .<Task <Void >>any ()))
225
+ when (currentUser .saveAsync (anyString (), eq ( false ), Matchers .<Task <Void >>any ()))
224
226
.thenReturn (Task .<Void >forResult (null ));
225
227
ParseUser .State state = new ParseUser .State .Builder ()
226
228
.put ("oldKey" , "oldValue" )
@@ -248,7 +250,8 @@ public void testSignUpAsyncWithMergeInDiskAnonymousUser() throws Exception {
248
250
verify (currentUser , times (1 )).setUsername ("userName" );
249
251
verify (currentUser , times (1 )).setPassword ("password" );
250
252
// Make sure we save currentUser
251
- verify (currentUser , times (1 )).saveAsync (eq ("oldSessionToken" ), Matchers .<Task <Void >>any ());
253
+ verify (currentUser , times (1 ))
254
+ .saveAsync (eq ("oldSessionToken" ), eq (false ), Matchers .<Task <Void >>any ());
252
255
// Make sure we merge currentUser with user after save
253
256
assertEquals ("oldValue" , user .get ("oldKey" ));
254
257
// Make sure set currentUser
@@ -262,14 +265,15 @@ public void testSignUpAsyncWithMergeInDiskAnonymousUserSaveFailure() throws Exce
262
265
Map <String , String > oldAnonymousAuthData = new HashMap <>();
263
266
oldAnonymousAuthData .put ("oldKey" , "oldToken" );
264
267
currentUser .putAuthData (ParseAnonymousUtils .AUTH_TYPE , oldAnonymousAuthData );
265
- ParseUser partialMockCurrentUser = spy (currentUser );
268
+ ParseUser partialMockCurrentUser = spy (currentUser ); // Spy since we need mutex
266
269
when (partialMockCurrentUser .getUsername ()).thenReturn ("oldUserName" );
267
270
when (partialMockCurrentUser .getPassword ()).thenReturn ("oldPassword" );
268
271
when (partialMockCurrentUser .getSessionToken ()).thenReturn ("oldSessionToken" );
272
+ when (partialMockCurrentUser .isLazy ()).thenReturn (false );
269
273
ParseException saveException = new ParseException (ParseException .OTHER_CAUSE , "" );
270
274
doReturn (Task .<Void >forError (saveException ))
271
275
.when (partialMockCurrentUser )
272
- .saveAsync (anyString (), Matchers .<Task <Void >>any ());
276
+ .saveAsync (anyString (), eq ( false ), Matchers .<Task <Void >>any ());
273
277
ParseCurrentUserController currentUserController = mock (ParseCurrentUserController .class );
274
278
when (currentUserController .getAsync (anyBoolean ()))
275
279
.thenReturn (Task .forResult (partialMockCurrentUser ));
@@ -294,7 +298,7 @@ public void testSignUpAsyncWithMergeInDiskAnonymousUserSaveFailure() throws Exce
294
298
verify (partialMockCurrentUser , times (1 )).copyChangesFrom (eq (user ));
295
299
// Make sure we save currentUser
296
300
verify (partialMockCurrentUser , times (1 ))
297
- .saveAsync (eq ("oldSessionToken" ), Matchers .<Task <Void >>any ());
301
+ .saveAsync (eq ("oldSessionToken" ), eq ( false ), Matchers .<Task <Void >>any ());
298
302
// Make sure we restore old username and password after save fails
299
303
verify (partialMockCurrentUser , times (1 )).setUsername ("oldUserName" );
300
304
verify (partialMockCurrentUser , times (1 )).setPassword ("oldPassword" );
@@ -574,7 +578,7 @@ public void testLinkWithAsyncWithSaveAsyncSuccess() throws Exception {
574
578
ParseUser partialMockUser = spy (user );
575
579
doReturn (Task .<Void >forResult (null ))
576
580
.when (partialMockUser )
577
- .saveAsync (anyString (), Matchers .<Task <Void >>any ());
581
+ .saveAsync (anyString (), eq ( false ), Matchers .<Task <Void >>any ());
578
582
String authType = "facebook" ;
579
583
Map <String , String > authData = new HashMap <>();
580
584
authData .put ("token" , "test" );
@@ -586,7 +590,8 @@ public void testLinkWithAsyncWithSaveAsyncSuccess() throws Exception {
586
590
// Make sure new authData is added
587
591
assertSame (authData , partialMockUser .getAuthData ().get ("facebook" ));
588
592
// Make sure we save the user
589
- verify (partialMockUser , times (1 )).saveAsync (eq ("sessionTokenAgain" ), Matchers .<Task <Void >>any ());
593
+ verify (partialMockUser , times (1 ))
594
+ .saveAsync (eq ("sessionTokenAgain" ), eq (false ), Matchers .<Task <Void >>any ());
590
595
// Make sure synchronizeAuthData() is called
591
596
verify (provider , times (1 )).restoreAuthentication (authData );
592
597
}
@@ -609,7 +614,7 @@ public void testLinkWithAsyncWithSaveAsyncFailure() throws Exception {
609
614
Exception saveException = new Exception ();
610
615
doReturn (Task .<Void >forError (saveException ))
611
616
.when (partialMockUser )
612
- .saveAsync (anyString (), Matchers .<Task <Void >>any ());
617
+ .saveAsync (anyString (), eq ( false ), Matchers .<Task <Void >>any ());
613
618
String facebookAuthType = "facebook" ;
614
619
Map <String , String > facebookAuthData = new HashMap <>();
615
620
facebookAuthData .put ("facebookToken" , "facebookTest" );
@@ -621,7 +626,8 @@ public void testLinkWithAsyncWithSaveAsyncFailure() throws Exception {
621
626
// Make sure new authData is added
622
627
assertSame (facebookAuthData , partialMockUser .getAuthData ().get ("facebook" ));
623
628
// Make sure we save the user
624
- verify (partialMockUser , times (1 )).saveAsync (eq ("sessionTokenAgain" ), Matchers .<Task <Void >>any ());
629
+ verify (partialMockUser , times (1 ))
630
+ .saveAsync (eq ("sessionTokenAgain" ), eq (false ), Matchers .<Task <Void >>any ());
625
631
// Make sure old authData is restored
626
632
assertSame (anonymousAuthData , partialMockUser .getAuthData ().get (ParseAnonymousUtils .AUTH_TYPE ));
627
633
// Verify exception
@@ -632,13 +638,6 @@ public void testLinkWithAsyncWithSaveAsyncFailure() throws Exception {
632
638
633
639
//region testResolveLazinessAsync
634
640
635
- @ Test
636
- public void testResolveLazinessAsyncWithNotLazyUser () throws Exception {
637
- ParseUser user = new ParseUser ();
638
-
639
- ParseTaskUtils .wait (user .resolveLazinessAsync (Task .<Void >forResult (null )));
640
- }
641
-
642
641
@ Test
643
642
public void testResolveLazinessAsyncWithAuthDataAndNotNewUser () throws Exception {
644
643
ParseUser user = new ParseUser ();
@@ -660,14 +659,16 @@ public void testResolveLazinessAsyncWithAuthDataAndNotNewUser() throws Exception
660
659
.thenReturn (Task .<Void >forResult (null ));
661
660
ParseCorePlugins .getInstance ().registerCurrentUserController (currentUserController );
662
661
663
- ParseUser userAfterResolveLaziness =
664
- ParseTaskUtils .wait (user .resolveLazinessAsync (Task .<Void >forResult (null )));
662
+ ParseTaskUtils .wait (user .resolveLazinessAsync (Task .<Void >forResult (null )));
663
+ ArgumentCaptor <ParseUser > userAfterResolveLazinessCaptor =
664
+ ArgumentCaptor .forClass (ParseUser .class );
665
665
666
666
// Make sure we logIn the lazy user
667
667
verify (userController , times (1 )).logInAsync (
668
668
any (ParseUser .State .class ), any (ParseOperationSet .class ));
669
669
// Make sure we save currentUser
670
- verify (currentUserController , times (1 )).setAsync (any (ParseUser .class ));
670
+ verify (currentUserController , times (1 )).setAsync (userAfterResolveLazinessCaptor .capture ());
671
+ ParseUser userAfterResolveLaziness = userAfterResolveLazinessCaptor .getValue ();
671
672
// Make sure user's data is correct
672
673
assertEquals ("newSessionToken" , userAfterResolveLaziness .getSessionToken ());
673
674
assertEquals ("newValue" , userAfterResolveLaziness .get ("newKey" ));
@@ -697,21 +698,18 @@ public void testResolveLazinessAsyncWithAuthDataAndNewUser() throws Exception {
697
698
ParseCurrentUserController currentUserController = mock (ParseCurrentUserController .class );
698
699
ParseCorePlugins .getInstance ().registerCurrentUserController (currentUserController );
699
700
700
- ParseUser userAfterResolveLaziness =
701
- ParseTaskUtils .wait (user .resolveLazinessAsync (Task .<Void >forResult (null )));
701
+ ParseTaskUtils .wait (user .resolveLazinessAsync (Task .<Void >forResult (null )));
702
702
703
703
// Make sure we logIn the lazy user
704
704
verify (userController , times (1 )).logInAsync (
705
705
any (ParseUser .State .class ), any (ParseOperationSet .class ));
706
706
// Make sure we do not save currentUser
707
707
verify (currentUserController , never ()).setAsync (any (ParseUser .class ));
708
708
// Make sure userAfterResolveLaziness's data is correct
709
- assertEquals ("newSessionToken" , userAfterResolveLaziness .getSessionToken ());
710
- assertEquals ("newValue" , userAfterResolveLaziness .get ("newKey" ));
709
+ assertEquals ("newSessionToken" , user .getSessionToken ());
710
+ assertEquals ("newValue" , user .get ("newKey" ));
711
711
// Make sure userAfterResolveLaziness is not lazy
712
- assertFalse (userAfterResolveLaziness .isLazy ());
713
- // Make sure we do not create new user
714
- assertSame (user , userAfterResolveLaziness );
712
+ assertFalse (user .isLazy ());
715
713
}
716
714
717
715
@ Test
@@ -739,8 +737,9 @@ public void testResolveLazinessAsyncWithAuthDataAndNotNewUserAndLDSEnabled() thr
739
737
// Enable LDS
740
738
Parse .enableLocalDatastore (null );
741
739
742
- ParseUser userAfterResolveLaziness =
743
- ParseTaskUtils .wait (user .resolveLazinessAsync (Task .<Void >forResult (null )));
740
+ ParseTaskUtils .wait (user .resolveLazinessAsync (Task .<Void >forResult (null )));
741
+ ArgumentCaptor <ParseUser > userAfterResolveLazinessCaptor =
742
+ ArgumentCaptor .forClass (ParseUser .class );
744
743
745
744
// Make sure we logIn the lazy user
746
745
verify (userController , times (1 )).logInAsync (
@@ -749,7 +748,8 @@ public void testResolveLazinessAsyncWithAuthDataAndNotNewUserAndLDSEnabled() thr
749
748
// field should be cleaned
750
749
assertEquals ("password" , user .getPassword ());
751
750
// Make sure we do not save currentUser
752
- verify (currentUserController , times (1 )).setAsync (any (ParseUser .class ));
751
+ verify (currentUserController , times (1 )).setAsync (userAfterResolveLazinessCaptor .capture ());
752
+ ParseUser userAfterResolveLaziness = userAfterResolveLazinessCaptor .getValue ();
753
753
// Make sure userAfterResolveLaziness's data is correct
754
754
assertEquals ("newSessionToken" , userAfterResolveLaziness .getSessionToken ());
755
755
assertEquals ("newValue" , userAfterResolveLaziness .get ("newKey" ));
0 commit comments