use of com.microsoft.identity.common.internal.dto.Credential in project microsoft-authentication-library-common-for-android by AzureAD.
the class SharedPreferencesAccountCredentialCacheTest method testAccessTokenMerge.
@Test
public void testAccessTokenMerge() {
final AccessTokenRecord accessTokenFirst = new AccessTokenRecord();
accessTokenFirst.setCredentialType(CredentialType.AccessToken.name());
accessTokenFirst.setHomeAccountId(HOME_ACCOUNT_ID);
accessTokenFirst.setRealm(REALM);
accessTokenFirst.setEnvironment(ENVIRONMENT);
accessTokenFirst.setClientId(CLIENT_ID);
accessTokenFirst.setTarget(TARGET);
accessTokenFirst.setCachedAt(CACHED_AT);
accessTokenFirst.setExpiresOn(EXPIRES_ON);
accessTokenFirst.setSecret(SECRET);
// Create and set some additional field data...
final String additionalKey = "extra-prop-1";
final String additionalValue = "extra-value-1";
final JsonElement additionalValueElement = new JsonPrimitive(additionalValue);
final Map<String, JsonElement> additionalFields = new HashMap<>();
additionalFields.put(additionalKey, additionalValueElement);
accessTokenFirst.setAdditionalFields(additionalFields);
// Save the Credential
mSharedPreferencesAccountCredentialCache.saveCredential(accessTokenFirst);
final AccessTokenRecord accessTokenSecond = new AccessTokenRecord();
accessTokenSecond.setCredentialType(CredentialType.AccessToken.name());
accessTokenSecond.setHomeAccountId(HOME_ACCOUNT_ID);
accessTokenSecond.setRealm(REALM);
accessTokenSecond.setEnvironment(ENVIRONMENT);
accessTokenSecond.setClientId(CLIENT_ID);
accessTokenSecond.setTarget(TARGET);
accessTokenSecond.setCachedAt(CACHED_AT);
accessTokenSecond.setExpiresOn(EXPIRES_ON);
accessTokenSecond.setSecret(SECRET);
// Create and set some additional field data...
final String additionalKey2 = "extra-prop-2";
final String additionalValue2 = "extra-value-2";
final JsonElement additionalValueElement2 = new JsonPrimitive(additionalValue2);
final Map<String, JsonElement> additionalFields2 = new HashMap<>();
additionalFields2.put(additionalKey2, additionalValueElement2);
accessTokenSecond.setAdditionalFields(additionalFields2);
// Save the Credential
mSharedPreferencesAccountCredentialCache.saveCredential(accessTokenSecond);
// Synthesize a cache key for it
final String credentialCacheKey = mDelegate.generateCacheKey(accessTokenFirst);
// Resurrect the Credential
final Credential restoredAccessToken = mSharedPreferencesAccountCredentialCache.getCredential(credentialCacheKey);
assertTrue(accessTokenFirst.equals(restoredAccessToken));
assertEquals(additionalValue, restoredAccessToken.getAdditionalFields().get(additionalKey).getAsString());
assertEquals(additionalValue2, restoredAccessToken.getAdditionalFields().get(additionalKey2).getAsString());
}
use of com.microsoft.identity.common.internal.dto.Credential in project microsoft-authentication-library-common-for-android by AzureAD.
the class SharedPreferencesAccountCredentialCacheTest method getCredentialsPartialMatchWithCapitalization.
@Test
public void getCredentialsPartialMatchWithCapitalization() {
final String[] targetScopes = TARGET.split("\\s+");
// Just in case this value changes on us, just assert that it take the expected format
assertEquals(3, targetScopes.length);
// Let's grab a subset of these in a different order and make sure we still get the right
// results back
final String searchTarget = targetScopes[2].toUpperCase() + " " + targetScopes[0].toUpperCase();
final RefreshTokenRecord refreshToken = new RefreshTokenRecord();
refreshToken.setCredentialType(CredentialType.RefreshToken.name());
refreshToken.setEnvironment(ENVIRONMENT);
refreshToken.setHomeAccountId(HOME_ACCOUNT_ID);
refreshToken.setClientId(CLIENT_ID);
refreshToken.setSecret(SECRET);
refreshToken.setTarget(TARGET);
final AccessTokenRecord accessToken = new AccessTokenRecord();
accessToken.setCredentialType(CredentialType.AccessToken.name());
accessToken.setHomeAccountId(HOME_ACCOUNT_ID);
accessToken.setRealm(REALM);
accessToken.setEnvironment(ENVIRONMENT);
accessToken.setClientId(CLIENT_ID);
accessToken.setTarget(TARGET);
accessToken.setCachedAt(CACHED_AT);
accessToken.setExpiresOn(EXPIRES_ON);
accessToken.setSecret(SECRET);
// Save the Credentials
mSharedPreferencesAccountCredentialCache.saveCredential(refreshToken);
mSharedPreferencesAccountCredentialCache.saveCredential(accessToken);
List<Credential> credentials = mSharedPreferencesAccountCredentialCache.getCredentialsFilteredBy(HOME_ACCOUNT_ID, ENVIRONMENT, CredentialType.RefreshToken, CLIENT_ID, REALM, searchTarget, BEARER_AUTHENTICATION_SCHEME.getName());
assertEquals(1, credentials.size());
final Credential retrievedCredential = credentials.get(0);
assertEquals(CredentialType.RefreshToken.name(), retrievedCredential.getCredentialType());
}
use of com.microsoft.identity.common.internal.dto.Credential in project microsoft-authentication-library-common-for-android by AzureAD.
the class SharedPreferencesAccountCredentialCacheTest method clearAccounts.
@Test
public void clearAccounts() {
// Save an Account into the cache
final AccountRecord account = new AccountRecord();
account.setHomeAccountId(HOME_ACCOUNT_ID);
account.setEnvironment(ENVIRONMENT);
account.setRealm(REALM);
account.setLocalAccountId(LOCAL_ACCOUNT_ID);
account.setUsername(USERNAME);
account.setAuthorityType(AUTHORITY_TYPE);
mSharedPreferencesAccountCredentialCache.saveAccount(account);
// Save an AccessToken into the cache
final AccessTokenRecord accessToken = new AccessTokenRecord();
accessToken.setCredentialType(CredentialType.AccessToken.name());
accessToken.setHomeAccountId(HOME_ACCOUNT_ID);
accessToken.setRealm(REALM);
accessToken.setEnvironment(ENVIRONMENT);
accessToken.setClientId(CLIENT_ID);
accessToken.setTarget(TARGET);
accessToken.setCachedAt(CACHED_AT);
accessToken.setExpiresOn(EXPIRES_ON);
accessToken.setSecret(SECRET);
mSharedPreferencesAccountCredentialCache.saveCredential(accessToken);
// Save a RefreshToken into the cache
final RefreshTokenRecord refreshToken = new RefreshTokenRecord();
refreshToken.setCredentialType(CredentialType.RefreshToken.name());
refreshToken.setEnvironment(ENVIRONMENT);
refreshToken.setHomeAccountId(HOME_ACCOUNT_ID);
refreshToken.setClientId(CLIENT_ID);
refreshToken.setSecret(SECRET);
refreshToken.setTarget(TARGET);
mSharedPreferencesAccountCredentialCache.saveCredential(refreshToken);
// Call clearAccounts()
mSharedPreferencesAccountCredentialCache.removeAccount(account);
// Verify getAccounts() returns zero items
assertTrue(mSharedPreferencesAccountCredentialCache.getAccounts().isEmpty());
// Verify getCredentials() returns two items
final List<Credential> credentials = mSharedPreferencesAccountCredentialCache.getCredentials();
assertTrue(credentials.size() == 2);
}
use of com.microsoft.identity.common.internal.dto.Credential in project microsoft-authentication-library-common-for-android by AzureAD.
the class SharedPreferencesAccountCredentialCacheTest method getCredentialsNoHomeAccountId.
@Test
public void getCredentialsNoHomeAccountId() {
final RefreshTokenRecord refreshToken = new RefreshTokenRecord();
refreshToken.setSecret(SECRET);
refreshToken.setTarget(TARGET);
refreshToken.setHomeAccountId("Foo");
refreshToken.setEnvironment(ENVIRONMENT);
refreshToken.setCredentialType(CredentialType.RefreshToken.name());
refreshToken.setClientId(CLIENT_ID);
refreshToken.setTarget(TARGET);
final AccessTokenRecord accessToken = new AccessTokenRecord();
accessToken.setCachedAt(CACHED_AT);
accessToken.setExpiresOn(EXPIRES_ON);
accessToken.setSecret(SECRET);
accessToken.setHomeAccountId("Bar");
accessToken.setRealm(REALM);
accessToken.setEnvironment(ENVIRONMENT);
accessToken.setCredentialType(CredentialType.AccessToken.name());
accessToken.setClientId(CLIENT_ID);
accessToken.setTarget(TARGET);
// Save the Credentials
mSharedPreferencesAccountCredentialCache.saveCredential(refreshToken);
mSharedPreferencesAccountCredentialCache.saveCredential(accessToken);
List<Credential> credentials = mSharedPreferencesAccountCredentialCache.getCredentialsFilteredBy(null, ENVIRONMENT, CredentialType.RefreshToken, CLIENT_ID, REALM, TARGET, BEARER_AUTHENTICATION_SCHEME.getName());
assertEquals(1, credentials.size());
}
use of com.microsoft.identity.common.internal.dto.Credential in project microsoft-authentication-library-common-for-android by AzureAD.
the class SharedPreferencesAccountCredentialCacheTest method getCredentialsCaseInsensitive.
@Test
public void getCredentialsCaseInsensitive() {
// Uppercase the value we're filtering on to assert
// that the match is case insensitive
final String searchTarget = TARGET.toUpperCase();
final RefreshTokenRecord refreshToken = new RefreshTokenRecord();
refreshToken.setCredentialType(CredentialType.RefreshToken.name());
refreshToken.setEnvironment(ENVIRONMENT);
refreshToken.setHomeAccountId(HOME_ACCOUNT_ID);
refreshToken.setClientId(CLIENT_ID);
refreshToken.setSecret(SECRET);
refreshToken.setTarget(TARGET);
final AccessTokenRecord accessToken = new AccessTokenRecord();
accessToken.setCredentialType(CredentialType.AccessToken.name());
accessToken.setHomeAccountId(HOME_ACCOUNT_ID);
accessToken.setRealm(REALM);
accessToken.setEnvironment(ENVIRONMENT);
accessToken.setClientId(CLIENT_ID);
accessToken.setTarget(TARGET);
accessToken.setCachedAt(CACHED_AT);
accessToken.setExpiresOn(EXPIRES_ON);
accessToken.setSecret(SECRET);
// Save the Credentials
mSharedPreferencesAccountCredentialCache.saveCredential(refreshToken);
mSharedPreferencesAccountCredentialCache.saveCredential(accessToken);
List<Credential> credentials = mSharedPreferencesAccountCredentialCache.getCredentialsFilteredBy(HOME_ACCOUNT_ID, ENVIRONMENT, CredentialType.RefreshToken, CLIENT_ID, REALM, searchTarget, BEARER_AUTHENTICATION_SCHEME.getName());
assertEquals(1, credentials.size());
final Credential retrievedCredential = credentials.get(0);
assertEquals(CredentialType.RefreshToken.name(), retrievedCredential.getCredentialType());
}
Aggregations