Search in sources :

Example 6 with Tokens

use of com.okta.oidc.Tokens in project okta-oidc-android by okta.

the class SyncAuthClientTest method signInNative.

@Test
public void signInNative() throws AuthorizationException, OktaRepository.EncryptionException {
    String nonce = CodeVerifierUtil.generateRandomState();
    String state = CodeVerifierUtil.generateRandomState();
    String jws = TestValues.getJwt(mEndPoint.getUrl(), nonce, mConfig.getClientId());
    AuthenticationPayload payload = new AuthenticationPayload.Builder().addParameter("nonce", nonce).setState(state).build();
    mEndPoint.enqueueNativeRequestSuccess(state);
    mEndPoint.enqueueTokenSuccess(jws);
    Result result = mSyncNativeAuth.signIn(SESSION_TOKEN, payload);
    assertNotNull(result);
    Tokens tokens = new Tokens(mOktaState.getTokenResponse());
    assertNotNull(tokens);
    assertNotNull(tokens.getAccessToken());
    assertNotNull(tokens.getRefreshToken());
    assertNotNull(tokens.getIdToken());
}
Also used : AuthenticationPayload(com.okta.oidc.AuthenticationPayload) Result(com.okta.oidc.results.Result) Tokens(com.okta.oidc.Tokens) Test(org.junit.Test)

Example 7 with Tokens

use of com.okta.oidc.Tokens in project okta-oidc-android by okta.

the class SessionClientImplTest method refreshTokenInParallel.

@Test
public void refreshTokenInParallel() throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(2);
    String nonce = CodeVerifierUtil.generateRandomState();
    String jws = TestValues.getJwt(mEndPoint.getUrl(), nonce, mConfig.getClientId());
    mEndPoint.enqueueTokenSuccess(jws);
    MockRequestCallback<Tokens, AuthorizationException> cb = new MockRequestCallback<>(latch);
    MockRequestCallback<Tokens, AuthorizationException> cb2 = new MockRequestCallback<>(latch);
    new Thread(() -> mSessionClient.refreshToken(cb)).start();
    new Thread(() -> mSessionClient.refreshToken(cb2)).start();
    latch.await();
    Tokens result = cb.getResult();
    Tokens result2 = cb2.getResult();
    TokenResponse original = mGson.fromJson(String.format(TOKEN_SUCCESS, jws), TokenResponse.class);
    assertEquals(original.getIdToken(), result.getIdToken());
    assertEquals(original.getRefreshToken(), result.getRefreshToken());
    assertEquals(original.getIdToken(), result.getIdToken());
    assertEquals(result, result2);
}
Also used : MockRequestCallback(com.okta.oidc.util.MockRequestCallback) TokenResponse(com.okta.oidc.net.response.TokenResponse) AuthorizationException(com.okta.oidc.util.AuthorizationException) CountDownLatch(java.util.concurrent.CountDownLatch) Tokens(com.okta.oidc.Tokens) Test(org.junit.Test)

Example 8 with Tokens

use of com.okta.oidc.Tokens in project okta-oidc-android by okta.

the class SessionClientImplTest method refreshTokenFailure.

@Test
public void refreshTokenFailure() throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);
    mEndPoint.enqueueReturnInvalidClient();
    MockRequestCallback<Tokens, AuthorizationException> cb = new MockRequestCallback<>(latch);
    mSessionClient.refreshToken(cb);
    latch.await();
    assertNull(cb.getResult());
    assertNotNull(cb.getException());
    assertEquals(cb.getException().getMessage(), "No client credentials found.");
    assertEquals(cb.getException().type, TYPE_OAUTH_TOKEN_ERROR);
}
Also used : MockRequestCallback(com.okta.oidc.util.MockRequestCallback) AuthorizationException(com.okta.oidc.util.AuthorizationException) CountDownLatch(java.util.concurrent.CountDownLatch) Tokens(com.okta.oidc.Tokens) Test(org.junit.Test)

Example 9 with Tokens

use of com.okta.oidc.Tokens in project okta-oidc-android by okta.

the class SessionClientImplTest method requestsAreRunInSerial.

@Test
public void requestsAreRunInSerial() throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(2);
    MockRequestCallback<UserInfo, AuthorizationException> userProfileCallback = new MockRequestCallback<>(latch);
    mEndPoint.enqueueUserInfoSuccess();
    mSessionClient.getUserProfile(userProfileCallback);
    String nonce = CodeVerifierUtil.generateRandomState();
    String jws = TestValues.getJwt(mEndPoint.getUrl(), nonce, mConfig.getClientId());
    mEndPoint.enqueueTokenSuccess(jws);
    MockRequestCallback<Tokens, AuthorizationException> refreshCallback = new MockRequestCallback<>(latch);
    mSessionClient.refreshToken(refreshCallback);
    latch.await();
    UserInfo userInfoResult = userProfileCallback.getResult();
    assertNotNull(userInfoResult);
    assertEquals("John Doe", userInfoResult.get("name"));
    assertEquals("Jimmy", userInfoResult.get("nickname"));
    Tokens result = refreshCallback.getResult();
    TokenResponse original = mGson.fromJson(String.format(TOKEN_SUCCESS, jws), TokenResponse.class);
    assertEquals(original.getIdToken(), result.getIdToken());
    assertEquals(original.getRefreshToken(), result.getRefreshToken());
    assertEquals(original.getIdToken(), result.getIdToken());
}
Also used : MockRequestCallback(com.okta.oidc.util.MockRequestCallback) TokenResponse(com.okta.oidc.net.response.TokenResponse) AuthorizationException(com.okta.oidc.util.AuthorizationException) UserInfo(com.okta.oidc.net.response.UserInfo) CountDownLatch(java.util.concurrent.CountDownLatch) Tokens(com.okta.oidc.Tokens) Test(org.junit.Test)

Example 10 with Tokens

use of com.okta.oidc.Tokens in project okta-oidc-android by okta.

the class SessionClientImplTest method refreshTokenFailureInParallelCallbackCycle.

@Test
public void refreshTokenFailureInParallelCallbackCycle() throws InterruptedException {
    final CountDownLatch latch = new CountDownLatch(1);
    String nonce = CodeVerifierUtil.generateRandomState();
    String jws = TestValues.getJwt(mEndPoint.getUrl(), nonce, mConfig.getClientId());
    mEndPoint.enqueueTokenSuccess(jws);
    MockRequestCallback<Tokens, AuthorizationException> errorCb = new MockRequestCallback<>(latch);
    RequestCallback<Tokens, AuthorizationException> cb = new RequestCallback<Tokens, AuthorizationException>() {

        @Override
        public void onSuccess(@NonNull Tokens result) {
            try {
                mSessionClient.refreshToken(errorCb);
            } catch (RuntimeException runtimeException) {
                assertEquals(runtimeException.getMessage(), "refreshToken can't be called from callback.");
                latch.countDown();
            }
        }

        @Override
        public void onError(String error, AuthorizationException exception) {
            fail();
        }
    };
    mSessionClient.refreshToken(cb);
    latch.await();
}
Also used : MockRequestCallback(com.okta.oidc.util.MockRequestCallback) MockRequestCallback(com.okta.oidc.util.MockRequestCallback) RequestCallback(com.okta.oidc.RequestCallback) AuthorizationException(com.okta.oidc.util.AuthorizationException) NonNull(androidx.annotation.NonNull) CountDownLatch(java.util.concurrent.CountDownLatch) Tokens(com.okta.oidc.Tokens) Test(org.junit.Test)

Aggregations

Tokens (com.okta.oidc.Tokens)10 AuthorizationException (com.okta.oidc.util.AuthorizationException)8 Test (org.junit.Test)6 MockRequestCallback (com.okta.oidc.util.MockRequestCallback)5 CountDownLatch (java.util.concurrent.CountDownLatch)5 TokenResponse (com.okta.oidc.net.response.TokenResponse)4 AuthenticationPayload (com.okta.oidc.AuthenticationPayload)2 OIDCConfig (com.okta.oidc.OIDCConfig)2 RequestCallback (com.okta.oidc.RequestCallback)2 IntrospectInfo (com.okta.oidc.net.response.IntrospectInfo)2 DefaultEncryptionManager (com.okta.oidc.storage.security.DefaultEncryptionManager)2 NonNull (androidx.annotation.NonNull)1 Fragment (androidx.fragment.app.Fragment)1 FragmentTransaction (androidx.fragment.app.FragmentTransaction)1 Okta (com.okta.oidc.Okta)1 SessionClient (com.okta.oidc.clients.sessions.SessionClient)1 WebAuthClient (com.okta.oidc.clients.web.WebAuthClient)1 RefreshTokenRequest (com.okta.oidc.net.request.RefreshTokenRequest)1 UserInfo (com.okta.oidc.net.response.UserInfo)1 Result (com.okta.oidc.results.Result)1