4545@ RunWith (RobolectricTestRunner .class )
4646public 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