@Test
 public void testAcquireTokenAuthCode_ClientCredential() throws Exception {
   ctx =
       PowerMock.createPartialMock(
           AuthenticationContext.class,
           new String[] {"acquireTokenCommon"},
           TestConfiguration.AAD_TENANT_ENDPOINT,
           true,
           service);
   PowerMock.expectPrivate(
           ctx,
           "acquireTokenCommon",
           EasyMock.isA(AdalAuthorizatonGrant.class),
           EasyMock.isA(ClientAuthentication.class),
           EasyMock.isA(ClientDataHttpHeaders.class))
       .andReturn(
           new AuthenticationResult(
               "bearer",
               "accessToken",
               "refreshToken",
               new Date().getTime(),
               "idToken",
               null,
               false));
   PowerMock.replay(ctx);
   Future<AuthenticationResult> result =
       ctx.acquireTokenByAuthorizationCode(
           "auth_code",
           new URI(TestConfiguration.AAD_DEFAULT_REDIRECT_URI),
           new ClientCredential("clientId", "clientSecret"),
           null);
   AuthenticationResult ar = result.get();
   Assert.assertNotNull(ar);
   PowerMock.verifyAll();
 }
 @Test(
     expectedExceptions = IllegalArgumentException.class,
     expectedExceptionsMessageRegExp = "redirect uri is null")
 public void testAcquireTokenAuthCode_RedirectUriNull() throws Exception {
   ctx = new AuthenticationContext(TestConfiguration.AAD_TENANT_ENDPOINT, true, service);
   ctx.acquireTokenByAuthorizationCode(
       "auth_code", null, new ClientCredential("clientId", "clientSecret"), null);
 }
 @Test(
     expectedExceptions = IllegalArgumentException.class,
     expectedExceptionsMessageRegExp = "authorization code is null or empty")
 public void testcAquireTokenAuthCode_AuthCodeNull() throws Exception {
   ctx = new AuthenticationContext(TestConfiguration.AAD_TENANT_ENDPOINT, true, service);
   ctx.acquireTokenByAuthorizationCode(
       null,
       new URI(TestConfiguration.AAD_DEFAULT_REDIRECT_URI),
       new ClientCredential("clientId", "clientSecret"),
       null);
 }
  @Test
  public void testAcquireTokenAuthCode_KeyCredential() throws Exception {
    ctx =
        PowerMock.createPartialMock(
            AuthenticationContext.class,
            new String[] {"acquireTokenCommon"},
            TestConfiguration.AAD_TENANT_ENDPOINT,
            true,
            service);
    PowerMock.expectPrivate(
            ctx,
            "acquireTokenCommon",
            EasyMock.isA(AdalAuthorizatonGrant.class),
            EasyMock.isA(ClientAuthentication.class),
            EasyMock.isA(ClientDataHttpHeaders.class))
        .andReturn(
            new AuthenticationResult(
                "bearer",
                "accessToken",
                "refreshToken",
                new Date().getTime(),
                "idToken",
                null,
                false));
    final KeyStore keystore = KeyStore.getInstance("PKCS12", "SunJSSE");
    keystore.load(
        new FileInputStream(
            this.getClass().getResource(TestConfiguration.AAD_CERTIFICATE_PATH).getFile()),
        TestConfiguration.AAD_CERTIFICATE_PASSWORD.toCharArray());
    final String alias = keystore.aliases().nextElement();
    final PrivateKey key =
        (PrivateKey)
            keystore.getKey(alias, TestConfiguration.AAD_CERTIFICATE_PASSWORD.toCharArray());
    final X509Certificate cert = (X509Certificate) keystore.getCertificate(alias);

    PowerMock.replay(ctx);
    Future<AuthenticationResult> result =
        ctx.acquireTokenByAuthorizationCode(
            "auth_code",
            new URI(TestConfiguration.AAD_DEFAULT_REDIRECT_URI),
            AsymmetricKeyCredential.create(TestConfiguration.AAD_CLIENT_ID, key, cert),
            null);
    AuthenticationResult ar = result.get();
    Assert.assertNotNull(ar);
    PowerMock.verifyAll();
    PowerMock.resetAll(ctx);
  }