Skip to content

Commit 1bb5fb3

Browse files
Israel CamachoDalton Hubble
authored andcommitted
Adds logic to notify only on session changes
Change-Id: Ie48363c9b9c0df20c9cc6b3fa6d88142500ad0c9
1 parent 53fb3f8 commit 1bb5fb3

File tree

4 files changed

+46
-2
lines changed

4 files changed

+46
-2
lines changed

digits/changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
## Unreleased
55

6+
* (IC) Fixed issue that invalidates current session.
7+
68
## v1.7.0
79

810
* (IC) Added SessionListener to receive session changes.

digits/src/main/java/com/digits/sdk/android/DigitsSessionVerifier.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,8 @@ static class VerificationCallback extends Callback<VerifyAccountResponse> {
7575
public void success(Result<VerifyAccountResponse> result) {
7676
if (result.data != null) {
7777
final DigitsSession newSession = DigitsSession.create(result.data);
78-
if (newSession.isValidUser()) {
78+
if (newSession.isValidUser() &&
79+
!newSession.equals(sessionManager.getSession(newSession.getId()))) {
7980
sessionManager.setSession(newSession.getId(), newSession);
8081
for (SessionListener listener : sessionListenerMap.keySet()) {
8182
if (listener != null) {

digits/src/test/java/com/digits/sdk/android/TestConstants.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ public class TestConstants {
2727
public static final String TOKEN = "token";
2828
public static final String SECRET = "secret";
2929
public static final long USER_ID = 11;
30+
public static final TwitterAuthToken ANY_TOKEN = new TwitterAuthToken("", "");
31+
3032

3133
public static final String RAW_PHONE = "+123456789";
3234
public static final String ES_RAW_PHONE = "+3423456789";

digits/src/test/java/com/digits/sdk/android/VerificationCallbackTest.java

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
import com.twitter.sdk.android.core.Result;
2121
import com.twitter.sdk.android.core.SessionManager;
22+
import com.twitter.sdk.android.core.TwitterAuthToken;
2223

2324
import org.junit.Before;
2425
import org.junit.Test;
@@ -31,7 +32,9 @@
3132
import static org.mockito.Matchers.any;
3233
import static org.mockito.Mockito.mock;
3334
import static org.mockito.Mockito.verify;
35+
import static org.mockito.Mockito.verifyNoMoreInteractions;
3436
import static org.mockito.Mockito.verifyZeroInteractions;
37+
import static org.mockito.Mockito.when;
3538

3639
@RunWith(RobolectricGradleTestRunner.class)
3740
@Config(constants = BuildConfig.class, sdk = 21)
@@ -58,16 +61,52 @@ public void setUp() throws Exception {
5861
}
5962

6063
@Test
61-
public void testSuccess() throws Exception {
64+
public void testSuccess_tokenChanged() throws Exception {
65+
final DigitsSession changedSession = new DigitsSession(TestConstants.ANY_TOKEN,
66+
TestConstants.USER_ID, TestConstants.PHONE);
67+
when(sessionManager.getSession(TestConstants.USER_ID)).thenReturn(changedSession);
68+
69+
verificationCallback.addSessionListener(sessionListener);
70+
verificationCallback.addSessionListener(sessionListener2);
71+
verificationCallback.success(result);
72+
73+
verify(sessionManager).setSession(TestConstants.USER_ID,
74+
DigitsSession.create(result.data));
75+
verify(sessionListener).changed(any(DigitsSession.class));
76+
verify(sessionListener2).changed(any(DigitsSession.class));
77+
}
78+
79+
@Test
80+
public void testSuccess_phoneChanged() throws Exception {
81+
final DigitsSession changedSession =
82+
new DigitsSession(new TwitterAuthToken(TestConstants.TOKEN, TestConstants.SECRET),
83+
TestConstants.USER_ID, TestConstants.ES_RAW_PHONE);
84+
when(sessionManager.getSession(TestConstants.USER_ID)).thenReturn(changedSession);
85+
6286
verificationCallback.addSessionListener(sessionListener);
6387
verificationCallback.addSessionListener(sessionListener2);
6488
verificationCallback.success(result);
89+
6590
verify(sessionManager).setSession(TestConstants.USER_ID,
6691
DigitsSession.create(result.data));
6792
verify(sessionListener).changed(any(DigitsSession.class));
6893
verify(sessionListener2).changed(any(DigitsSession.class));
6994
}
7095

96+
@Test
97+
public void testSuccess_noSessionChange() throws Exception {
98+
when(sessionManager.getSession(TestConstants.USER_ID)).thenReturn(
99+
DigitsSession.create(result.data));
100+
101+
verificationCallback.addSessionListener(sessionListener);
102+
verificationCallback.addSessionListener(sessionListener2);
103+
verificationCallback.success(result);
104+
105+
verifyZeroInteractions(sessionListener);
106+
verify(sessionManager).getSession(TestConstants.USER_ID);
107+
verifyNoMoreInteractions(sessionManager);
108+
}
109+
71110
public void testSuccess_nullListener() throws Exception {
72111
sessionListenerMap.put(null, Boolean.TRUE);
73112
verificationCallback.success(result);

0 commit comments

Comments
 (0)