Search in sources :

Example 1 with OauthRefreshTokenAuthenticator

use of org.edx.mobile.http.authenticator.OauthRefreshTokenAuthenticator in project edx-app-android by edx.

the class AuthenticationTests method testAuthenticate_withoutRefreshToken.

@Test
public void testAuthenticate_withoutRefreshToken() throws Exception {
    loginPrefs.storeAuthTokenResponse(MockDataUtil.getMockResponse("post_oauth2_access_token_no_refresh_token", AuthResponse.class), LoginPrefs.AuthBackend.PASSWORD);
    client = client.newBuilder().authenticator(new OauthRefreshTokenAuthenticator(context)).build();
    Request request = new Request.Builder().url(mockServer.url("/dummy/endpoint/")).header("Authorization", "expired_token").build();
    Response response = client.newCall(request).execute();
    assertEquals(HttpStatus.UNAUTHORIZED, response.code());
    assertEquals("expired_token", response.request().header("Authorization"));
}
Also used : OauthRefreshTokenAuthenticator(org.edx.mobile.http.authenticator.OauthRefreshTokenAuthenticator) AuthResponse(org.edx.mobile.authentication.AuthResponse) Response(okhttp3.Response) MockResponse(okhttp3.mockwebserver.MockResponse) Request(okhttp3.Request) RecordedRequest(okhttp3.mockwebserver.RecordedRequest) AuthResponse(org.edx.mobile.authentication.AuthResponse) Test(org.junit.Test)

Example 2 with OauthRefreshTokenAuthenticator

use of org.edx.mobile.http.authenticator.OauthRefreshTokenAuthenticator in project edx-app-android by edx.

the class AuthenticationTests method testAuthenticate_notForExpiredAccessToken.

@Test
public void testAuthenticate_notForExpiredAccessToken() throws Exception {
    client = client.newBuilder().authenticator(new OauthRefreshTokenAuthenticator(context)).build();
    Request request = new Request.Builder().url(mockServer.url("/dummy/endpoint/")).header("Authorization", "401_not_caused_by_expired_token").build();
    Response response = client.newCall(request).execute();
    assertEquals(HttpStatus.UNAUTHORIZED, response.code());
    assertEquals("401_not_caused_by_expired_token", response.request().header("Authorization"));
}
Also used : OauthRefreshTokenAuthenticator(org.edx.mobile.http.authenticator.OauthRefreshTokenAuthenticator) AuthResponse(org.edx.mobile.authentication.AuthResponse) Response(okhttp3.Response) MockResponse(okhttp3.mockwebserver.MockResponse) Request(okhttp3.Request) RecordedRequest(okhttp3.mockwebserver.RecordedRequest) Test(org.junit.Test)

Example 3 with OauthRefreshTokenAuthenticator

use of org.edx.mobile.http.authenticator.OauthRefreshTokenAuthenticator in project edx-app-android by edx.

the class AuthenticationTests method testAuthenticate_forExpiredAccessToken.

@Test
public void testAuthenticate_forExpiredAccessToken() throws Exception {
    // create a client with the authenticator
    client = client.newBuilder().authenticator(new OauthRefreshTokenAuthenticator(context)).build();
    // Build a new dummy request to trigger authenticator
    Request request = new Request.Builder().url(mockServer.url("/dummy/endpoint/")).header("Authorization", "expired_token").build();
    // Make request
    Response response = client.newCall(request).execute();
    assertEquals(HttpStatus.OK, response.code());
    assertEquals("Bearer dummy", response.request().header("Authorization"));
    // Assert the expired token request was sent
    RecordedRequest expiredRequest = mockServer.takeRequest();
    assertEquals("/dummy/endpoint/", expiredRequest.getPath());
    assertEquals("expired_token", expiredRequest.getHeader("Authorization"));
    // Assert the authenticator requests for a new access token using the refresh token
    RecordedRequest refreshTokenRequest = mockServer.takeRequest();
    assertEquals("/oauth2/access_token/", refreshTokenRequest.getPath());
    String actual_body = refreshTokenRequest.getBody().readUtf8();
    assertTrue(actual_body.contains("grant_type=refresh_token"));
    assertTrue(actual_body.contains("refresh_token=dummy_refresh_token"));
    // Assert that the original request was made again with the new token.
    RecordedRequest refreshedRequest = mockServer.takeRequest();
    assertEquals("/dummy/endpoint/", refreshedRequest.getPath());
    assertEquals("Bearer dummy", refreshedRequest.getHeader("Authorization"));
}
Also used : OauthRefreshTokenAuthenticator(org.edx.mobile.http.authenticator.OauthRefreshTokenAuthenticator) AuthResponse(org.edx.mobile.authentication.AuthResponse) Response(okhttp3.Response) MockResponse(okhttp3.mockwebserver.MockResponse) RecordedRequest(okhttp3.mockwebserver.RecordedRequest) Request(okhttp3.Request) RecordedRequest(okhttp3.mockwebserver.RecordedRequest) Test(org.junit.Test)

Aggregations

Request (okhttp3.Request)3 Response (okhttp3.Response)3 MockResponse (okhttp3.mockwebserver.MockResponse)3 RecordedRequest (okhttp3.mockwebserver.RecordedRequest)3 AuthResponse (org.edx.mobile.authentication.AuthResponse)3 OauthRefreshTokenAuthenticator (org.edx.mobile.http.authenticator.OauthRefreshTokenAuthenticator)3 Test (org.junit.Test)3