Skip to content

Commit f3bf740

Browse files
committed
Refactored revokeRefreshToken to use a new helper method buildRevokeRefreshTokenRequest
Added test for buildRevokeRefreshTokenRequest
1 parent 8eccdf3 commit f3bf740

2 files changed

Lines changed: 43 additions & 6 deletions

File tree

  • libs
    • SalesforceSDK/src/com/salesforce/androidsdk/auth
    • test/SalesforceSDKTest/src/com/salesforce/androidsdk/auth

libs/SalesforceSDK/src/com/salesforce/androidsdk/auth/OAuth2.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -471,19 +471,23 @@ public static TokenEndpointResponse refreshAuthToken(HttpAccess httpAccessor, UR
471471
* @param reason The reason the refresh token is being revoked.
472472
*/
473473
public static void revokeRefreshToken(HttpAccess httpAccessor, URI loginServer, String refreshToken, LogoutReason reason) {
474-
final String requestUrl = loginServer.toString() + OAUTH_REVOKE_PATH;
475-
final FormBody body = new FormBody.Builder()
476-
.add(TOKEN, refreshToken)
477-
.add(REVOKE_REASON, reason.toString())
478-
.build();
479-
final Request request = new Request.Builder().url(requestUrl).post(body).build();
474+
final Request request = buildRevokeRefreshTokenRequest(loginServer, refreshToken, reason);
480475
try {
481476
httpAccessor.getOkHttpClient().newCall(request).execute();
482477
} catch (IOException e) {
483478
SalesforceSDKLogger.w(TAG, "Exception thrown while revoking refresh token", e);
484479
}
485480
}
486481

482+
protected static Request buildRevokeRefreshTokenRequest(URI loginServer, String refreshToken, LogoutReason reason) {
483+
final String requestUrl = loginServer.toString() + OAUTH_REVOKE_PATH;
484+
final FormBody body = new FormBody.Builder()
485+
.add(TOKEN, refreshToken)
486+
.add(REVOKE_REASON, reason.toString())
487+
.build();
488+
return new Request.Builder().url(requestUrl).post(body).build();
489+
}
490+
487491
/**
488492
* Swaps a JWT for regular OAuth tokens. This is typically the first step after
489493
* receiving a JWT from a link. In addition, this will also call the identity

libs/test/SalesforceSDKTest/src/com/salesforce/androidsdk/auth/OAuth2Test.java

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
import okhttp3.HttpUrl;
6262
import okhttp3.Request;
6363
import okhttp3.Response;
64+
import okio.Buffer;
6465

6566
/**
6667
* Tests for OAuth2.
@@ -482,4 +483,36 @@ public void testGetOpenIDToken() {
482483
TestCredentials.CLIENT_ID, TestCredentials.REFRESH_TOKEN);
483484
Assert.assertNotNull("OpenID token should not be null", openIdToken);
484485
}
486+
487+
/**
488+
* Testing buildRevokeRefreshTokenRequest.
489+
*/
490+
@Test
491+
public void testBuildRevokeRefreshTokenRequest() throws Exception {
492+
String refreshToken = "test_refresh_token_123";
493+
OAuth2.LogoutReason reason = OAuth2.LogoutReason.USER_LOGOUT;
494+
URI loginServer = new URI(TestCredentials.LOGIN_URL);
495+
496+
Request request = OAuth2.buildRevokeRefreshTokenRequest(loginServer, refreshToken, reason);
497+
498+
// Verify URL
499+
String expectedUrl = TestCredentials.LOGIN_URL + "/services/oauth2/revoke";
500+
Assert.assertEquals(expectedUrl, request.url().toString());
501+
502+
// Verify method
503+
Assert.assertEquals("POST", request.method());
504+
505+
// Verify body contains expected parameters
506+
String body = getRequestBodyAsString(request);
507+
Assert.assertTrue(body.contains("token=" + refreshToken));
508+
Assert.assertTrue(body.contains("revoke_reason=" + reason.toString()));
509+
}
510+
511+
private String getRequestBodyAsString(Request request) throws IOException {
512+
okio.Buffer buffer = new okio.Buffer();
513+
if (request.body() != null) {
514+
request.body().writeTo(buffer);
515+
}
516+
return buffer.readUtf8();
517+
}
485518
}

0 commit comments

Comments
 (0)