Skip to content

Commit 8c602a2

Browse files
committed
Break out activity setup logic
1 parent f1c6313 commit 8c602a2

File tree

1 file changed

+38
-71
lines changed

1 file changed

+38
-71
lines changed

auth-lib/src/testAuth/java/com/spotify/sdk/android/auth/LoginActivityAuthTest.java

Lines changed: 38 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,17 @@
4545
@RunWith(RobolectricTestRunner.class)
4646
public class LoginActivityAuthTest {
4747

48-
@Test
49-
public void shouldFinishLoginActivityWhenCompleted() {
48+
private static class LoginActivitySetup {
49+
final LoginActivity loginActivity;
50+
final ShadowActivity shadowLoginActivity;
51+
52+
LoginActivitySetup(LoginActivity loginActivity, ShadowActivity shadowLoginActivity) {
53+
this.loginActivity = loginActivity;
54+
this.shadowLoginActivity = shadowLoginActivity;
55+
}
56+
}
5057

58+
private LoginActivitySetup createLoginActivity() {
5159
Activity context = Robolectric
5260
.buildActivity(Activity.class)
5361
.create()
@@ -57,106 +65,65 @@ public void shouldFinishLoginActivityWhenCompleted() {
5765
AuthorizationRequest request = new AuthorizationRequest.Builder("test", AuthorizationResponse.Type.TOKEN, "test://test")
5866
.setPkceInformation(pkceInfo)
5967
.build();
60-
AuthorizationResponse response = new AuthorizationResponse.Builder()
61-
.setType(AuthorizationResponse.Type.TOKEN)
62-
.setAccessToken("test_token")
63-
.setExpiresIn(3600)
64-
.build();
6568

6669
Bundle bundle = new Bundle();
6770
bundle.putParcelable(LoginActivity.REQUEST_KEY, request);
6871

6972
Intent intent = new Intent(context, LoginActivity.class);
7073
intent.putExtra(LoginActivity.EXTRA_AUTH_REQUEST, bundle);
7174

72-
ActivityController<LoginActivity> loginActivityActivityController = buildActivity(LoginActivity.class, intent);
73-
74-
final LoginActivity loginActivity = loginActivityActivityController.get();
75-
76-
final ShadowActivity shadowLoginActivity = shadowOf(loginActivity);
75+
ActivityController<LoginActivity> loginActivityController = buildActivity(LoginActivity.class, intent);
76+
LoginActivity loginActivity = loginActivityController.get();
77+
ShadowActivity shadowLoginActivity = shadowOf(loginActivity);
7778
shadowLoginActivity.setCallingActivity(context.getComponentName());
79+
loginActivityController.create();
7880

79-
loginActivityActivityController.create();
80-
81-
assertFalse(loginActivity.isFinishing());
81+
return new LoginActivitySetup(loginActivity, shadowLoginActivity);
82+
}
8283

83-
loginActivity.onClientComplete(response);
84+
private void assertCompletion(LoginActivitySetup setup, AuthorizationResponse response, int expectedResultCode) {
85+
setup.loginActivity.onClientComplete(response);
8486

85-
assertTrue(loginActivity.isFinishing());
86-
assertEquals(Activity.RESULT_OK, shadowLoginActivity.getResultCode());
87-
assertEquals(response, shadowLoginActivity.getResultIntent().getBundleExtra(LoginActivity.EXTRA_AUTH_RESPONSE).get(LoginActivity.RESPONSE_KEY));
87+
assertTrue(setup.loginActivity.isFinishing());
88+
assertEquals(expectedResultCode, setup.shadowLoginActivity.getResultCode());
89+
assertEquals(response, setup.shadowLoginActivity.getResultIntent().getBundleExtra(LoginActivity.EXTRA_AUTH_RESPONSE).get(LoginActivity.RESPONSE_KEY));
8890
}
8991

9092
@Test
91-
public void shouldReturnResultCanceledWhenUserCancels() {
92-
Activity context = Robolectric
93-
.buildActivity(Activity.class)
94-
.create()
95-
.get();
96-
97-
PKCEInformation pkceInfo = PKCEInformation.sha256("test_verifier", "test_challenge");
98-
AuthorizationRequest request = new AuthorizationRequest.Builder("test", AuthorizationResponse.Type.TOKEN, "test://test")
99-
.setPkceInformation(pkceInfo)
100-
.build();
93+
public void shouldFinishLoginActivityWhenCompleted() {
94+
LoginActivitySetup setup = createLoginActivity();
10195

102-
// Create CANCELLED response type (user cancellation)
10396
AuthorizationResponse response = new AuthorizationResponse.Builder()
104-
.setType(AuthorizationResponse.Type.CANCELLED)
97+
.setType(AuthorizationResponse.Type.TOKEN)
98+
.setAccessToken("test_token")
99+
.setExpiresIn(3600)
105100
.build();
106101

107-
Bundle bundle = new Bundle();
108-
bundle.putParcelable(LoginActivity.REQUEST_KEY, request);
102+
assertFalse(setup.loginActivity.isFinishing());
109103

110-
Intent intent = new Intent(context, LoginActivity.class);
111-
intent.putExtra(LoginActivity.EXTRA_AUTH_REQUEST, bundle);
104+
assertCompletion(setup, response, Activity.RESULT_OK);
105+
}
112106

113-
ActivityController<LoginActivity> loginActivityActivityController = buildActivity(LoginActivity.class, intent);
114-
final LoginActivity loginActivity = loginActivityActivityController.get();
115-
final ShadowActivity shadowLoginActivity = shadowOf(loginActivity);
116-
shadowLoginActivity.setCallingActivity(context.getComponentName());
117-
loginActivityActivityController.create();
107+
@Test
108+
public void shouldReturnResultCanceledWhenUserCancels() {
109+
LoginActivitySetup setup = createLoginActivity();
118110

119-
loginActivity.onClientComplete(response);
111+
AuthorizationResponse response = new AuthorizationResponse.Builder()
112+
.setType(AuthorizationResponse.Type.CANCELLED)
113+
.build();
120114

121-
assertTrue(loginActivity.isFinishing());
122-
assertEquals(Activity.RESULT_CANCELED, shadowLoginActivity.getResultCode());
123-
assertEquals(response, shadowLoginActivity.getResultIntent().getBundleExtra(LoginActivity.EXTRA_AUTH_RESPONSE).get(LoginActivity.RESPONSE_KEY));
115+
assertCompletion(setup, response, Activity.RESULT_CANCELED);
124116
}
125117

126118
@Test
127119
public void shouldReturnResultOkForTechnicalErrors() {
128-
Activity context = Robolectric
129-
.buildActivity(Activity.class)
130-
.create()
131-
.get();
120+
LoginActivitySetup setup = createLoginActivity();
132121

133-
PKCEInformation pkceInfo = PKCEInformation.sha256("test_verifier", "test_challenge");
134-
AuthorizationRequest request = new AuthorizationRequest.Builder("test", AuthorizationResponse.Type.TOKEN, "test://test")
135-
.setPkceInformation(pkceInfo)
136-
.build();
137-
138-
// Create EMPTY response (technical error)
139122
AuthorizationResponse response = new AuthorizationResponse.Builder()
140123
.setType(AuthorizationResponse.Type.EMPTY)
141124
.build();
142125

143-
Bundle bundle = new Bundle();
144-
bundle.putParcelable(LoginActivity.REQUEST_KEY, request);
145-
146-
Intent intent = new Intent(context, LoginActivity.class);
147-
intent.putExtra(LoginActivity.EXTRA_AUTH_REQUEST, bundle);
148-
149-
ActivityController<LoginActivity> loginActivityActivityController = buildActivity(LoginActivity.class, intent);
150-
final LoginActivity loginActivity = loginActivityActivityController.get();
151-
final ShadowActivity shadowLoginActivity = shadowOf(loginActivity);
152-
shadowLoginActivity.setCallingActivity(context.getComponentName());
153-
loginActivityActivityController.create();
154-
155-
loginActivity.onClientComplete(response);
156-
157-
assertTrue(loginActivity.isFinishing());
158-
assertEquals(Activity.RESULT_OK, shadowLoginActivity.getResultCode()); // Technical errors return OK
159-
assertEquals(response, shadowLoginActivity.getResultIntent().getBundleExtra(LoginActivity.EXTRA_AUTH_RESPONSE).get(LoginActivity.RESPONSE_KEY));
126+
assertCompletion(setup, response, Activity.RESULT_OK);
160127
}
161128

162129
}

0 commit comments

Comments
 (0)