@@ -239,6 +239,48 @@ public void init_IgnoresClientIdIfServerClientIdIsProvided() {
239239 initAndAssertServerClientId (methodCall , serverClientId );
240240 }
241241
242+ @ Test
243+ public void init_PassesForceCodeForRefreshTokenFalseWithServerClientIdParameter () {
244+ MethodCall methodCall = buildInitMethodCall ("fakeClientId" , "fakeServerClientId" , false );
245+
246+ initAndAssertForceCodeForRefreshToken (methodCall , false );
247+ }
248+
249+ @ Test
250+ public void init_PassesForceCodeForRefreshTokenTrueWithServerClientIdParameter () {
251+ MethodCall methodCall = buildInitMethodCall ("fakeClientId" , "fakeServerClientId" , true );
252+
253+ initAndAssertForceCodeForRefreshToken (methodCall , true );
254+ }
255+
256+ @ Test
257+ public void init_PassesForceCodeForRefreshTokenFalseWithServerClientIdFromResources () {
258+ final String packageName = "fakePackageName" ;
259+ final String serverClientId = "fakeServerClientId" ;
260+ final int resourceId = 1 ;
261+ MethodCall methodCall = buildInitMethodCall (null , null , false );
262+ when (mockContext .getPackageName ()).thenReturn (packageName );
263+ when (mockResources .getIdentifier ("default_web_client_id" , "string" , packageName ))
264+ .thenReturn (resourceId );
265+ when (mockContext .getString (resourceId )).thenReturn (serverClientId );
266+
267+ initAndAssertForceCodeForRefreshToken (methodCall , false );
268+ }
269+
270+ @ Test
271+ public void init_PassesForceCodeForRefreshTokenTrueWithServerClientIdFromResources () {
272+ final String packageName = "fakePackageName" ;
273+ final String serverClientId = "fakeServerClientId" ;
274+ final int resourceId = 1 ;
275+ MethodCall methodCall = buildInitMethodCall (null , null , true );
276+ when (mockContext .getPackageName ()).thenReturn (packageName );
277+ when (mockResources .getIdentifier ("default_web_client_id" , "string" , packageName ))
278+ .thenReturn (resourceId );
279+ when (mockContext .getString (resourceId )).thenReturn (serverClientId );
280+
281+ initAndAssertForceCodeForRefreshToken (methodCall , true );
282+ }
283+
242284 public void initAndAssertServerClientId (MethodCall methodCall , String serverClientId ) {
243285 ArgumentCaptor <GoogleSignInOptions > optionsCaptor =
244286 ArgumentCaptor .forClass (GoogleSignInOptions .class );
@@ -249,13 +291,39 @@ public void initAndAssertServerClientId(MethodCall methodCall, String serverClie
249291 Assert .assertEquals (serverClientId , optionsCaptor .getValue ().getServerClientId ());
250292 }
251293
294+ public void initAndAssertForceCodeForRefreshToken (
295+ MethodCall methodCall , boolean forceCodeForRefreshToken ) {
296+ ArgumentCaptor <GoogleSignInOptions > optionsCaptor =
297+ ArgumentCaptor .forClass (GoogleSignInOptions .class );
298+ when (mockGoogleSignIn .getClient (any (Context .class ), optionsCaptor .capture ()))
299+ .thenReturn (mockClient );
300+ plugin .onMethodCall (methodCall , result );
301+ verify (result ).success (null );
302+ Assert .assertEquals (
303+ forceCodeForRefreshToken , optionsCaptor .getValue ().isForceCodeForRefreshToken ());
304+ }
305+
252306 private static MethodCall buildInitMethodCall (String clientId , String serverClientId ) {
253307 return buildInitMethodCall (
254- "SignInOption.standard" , Collections .<String >emptyList (), clientId , serverClientId );
308+ "SignInOption.standard" , Collections .<String >emptyList (), clientId , serverClientId , false );
309+ }
310+
311+ private static MethodCall buildInitMethodCall (
312+ String clientId , String serverClientId , boolean forceCodeForRefreshToken ) {
313+ return buildInitMethodCall (
314+ "SignInOption.standard" ,
315+ Collections .<String >emptyList (),
316+ clientId ,
317+ serverClientId ,
318+ forceCodeForRefreshToken );
255319 }
256320
257321 private static MethodCall buildInitMethodCall (
258- String signInOption , List <String > scopes , String clientId , String serverClientId ) {
322+ String signInOption ,
323+ List <String > scopes ,
324+ String clientId ,
325+ String serverClientId ,
326+ boolean forceCodeForRefreshToken ) {
259327 HashMap <String , Object > arguments = new HashMap <>();
260328 arguments .put ("signInOption" , signInOption );
261329 arguments .put ("scopes" , scopes );
@@ -265,6 +333,7 @@ private static MethodCall buildInitMethodCall(
265333 if (serverClientId != null ) {
266334 arguments .put ("serverClientId" , serverClientId );
267335 }
336+ arguments .put ("forceCodeForRefreshToken" , forceCodeForRefreshToken );
268337 return new MethodCall ("init" , arguments );
269338 }
270339}
0 commit comments