Search in sources :

Example 31 with AWSConfiguration

use of com.amazonaws.mobile.config.AWSConfiguration in project aws-sdk-android by aws-amplify.

the class AWSMobileClientPersistenceWithRestartabilityTest method beforeClass.

@BeforeClass
public static void beforeClass() throws Exception {
    setUpCredentials();
    Context appContext = ApplicationProvider.getApplicationContext();
    final CountDownLatch latch = new CountDownLatch(1);
    AWSMobileClient.getInstance().initialize(appContext, new Callback<UserStateDetails>() {

        @Override
        public void onResult(UserStateDetails result) {
            latch.countDown();
        }

        @Override
        public void onError(Exception e) {
            latch.countDown();
        }
    });
    latch.await();
    final AWSConfiguration awsConfiguration = AWSMobileClient.getInstance().getConfiguration();
    JSONObject userPoolConfig = awsConfiguration.optJsonObject("CognitoUserPool");
    assertNotNull(userPoolConfig);
    clientRegion = Regions.fromName(userPoolConfig.getString("Region"));
    userPoolId = userPoolConfig.getString("PoolId");
    JSONObject identityPoolConfig = awsConfiguration.optJsonObject("CredentialsProvider").getJSONObject("CognitoIdentity").getJSONObject("Default");
    assertNotNull(identityPoolConfig);
    deleteAllUsers(userPoolId);
}
Also used : Context(android.content.Context) JSONObject(org.json.JSONObject) CountDownLatch(java.util.concurrent.CountDownLatch) AWSConfiguration(com.amazonaws.mobile.config.AWSConfiguration) JSONException(org.json.JSONException) UserNotConfirmedException(com.amazonaws.services.cognitoidentityprovider.model.UserNotConfirmedException) BeforeClass(org.junit.BeforeClass)

Example 32 with AWSConfiguration

use of com.amazonaws.mobile.config.AWSConfiguration in project aws-sdk-android by aws-amplify.

the class AWSMobileClientTest method testGetConfiguration.

@Test
public void testGetConfiguration() {
    final AWSConfiguration awsConfiguration = AWSMobileClient.getInstance().getConfiguration();
    assertNotNull(awsConfiguration.optJsonObject("CognitoUserPool"));
    try {
        assertEquals("us-west-2", awsConfiguration.optJsonObject("CognitoUserPool").getString("Region"));
    } catch (JSONException e) {
        e.printStackTrace();
        fail(e.getMessage());
    }
}
Also used : JSONException(org.json.JSONException) AWSConfiguration(com.amazonaws.mobile.config.AWSConfiguration) Test(org.junit.Test)

Example 33 with AWSConfiguration

use of com.amazonaws.mobile.config.AWSConfiguration in project aws-sdk-android by aws-amplify.

the class TransferUtilityTest method testLocalTestingEnabled.

/**
 * Tests that transfer utility successfully mutated Amazon S3 client
 * if local testing flag is set to true.
 *
 * @throws Exception
 */
@Test
public void testLocalTestingEnabled() throws Exception {
    final String jsonString = "{\n" + "  \"S3TransferUtility\": {\n" + "    \"Default\": {\n" + "      \"Bucket\": \"name\",\n" + "      \"Region\": \"us-east-1\",\n" + "      \"DangerouslyConnectToHTTPEndpointForTesting\": true\n" + "    }\n" + "  }\n" + "}";
    try {
        JSONObject jsonConfig = new JSONObject(jsonString);
        awsConfig = new AWSConfiguration(jsonConfig);
    } catch (JSONException e) {
        fail("Error in constructing AWSConfiguration." + e.getLocalizedMessage());
    }
    AWSCredentials creds = new BasicAWSCredentials("accessKey", "secretKey");
    Region region = Region.getRegion(Regions.DEFAULT_REGION);
    AmazonS3Client s3 = new AmazonS3Client(creds, region);
    TransferUtility.builder().context(RuntimeEnvironment.application.getApplicationContext()).awsConfiguration(awsConfig).s3Client(s3).build();
    assertEquals(s3.getEndpoint(), Constants.LOCAL_TESTING_ENDPOINT);
    assertTrue(s3.clientOptions.isPathStyleAccess());
    assertTrue(s3.clientOptions.isContentMd5CheckSkipped());
}
Also used : JSONObject(org.json.JSONObject) JSONException(org.json.JSONException) Region(com.amazonaws.regions.Region) AWSConfiguration(com.amazonaws.mobile.config.AWSConfiguration) BasicAWSCredentials(com.amazonaws.auth.BasicAWSCredentials) AWSCredentials(com.amazonaws.auth.AWSCredentials) BasicAWSCredentials(com.amazonaws.auth.BasicAWSCredentials) Test(org.junit.Test)

Example 34 with AWSConfiguration

use of com.amazonaws.mobile.config.AWSConfiguration in project amplify-android by aws-amplify.

the class AWSCognitoAuthPlugin method configure.

@Override
public void configure(@NonNull JSONObject pluginConfiguration, @NonNull Context context) throws AuthException {
    final CountDownLatch latch = new CountDownLatch(1);
    final AtomicReference<Exception> asyncException = new AtomicReference<>();
    JSONObject mobileClientConfig;
    LogFactory.setLevel(LogFactory.Level.OFF);
    try {
        mobileClientConfig = new JSONObject(pluginConfiguration.toString());
        mobileClientConfig.put("UserAgentOverride", UserAgent.string());
    } catch (JSONException exception) {
        throw new AuthException("Failed to set user agent string", exception, AmplifyException.REPORT_BUG_TO_AWS_SUGGESTION);
    }
    awsMobileClient.initialize(context, new AWSConfiguration(mobileClientConfig), new Callback<UserStateDetails>() {

        @Override
        public void onResult(UserStateDetails result) {
            switch(result.getUserState()) {
                case GUEST:
                case SIGNED_OUT:
                    lastEvent = AuthChannelEventName.SIGNED_OUT;
                    userId = null;
                    break;
                case SIGNED_IN:
                    lastEvent = AuthChannelEventName.SIGNED_IN;
                    userId = getUserIdFromToken(result.getDetails().get(MOBILE_CLIENT_TOKEN_KEY));
                    break;
                case SIGNED_OUT_USER_POOLS_TOKENS_INVALID:
                case SIGNED_OUT_FEDERATED_TOKENS_INVALID:
                    lastEvent = AuthChannelEventName.SESSION_EXPIRED;
                    userId = getUserIdFromToken(result.getDetails().get(MOBILE_CLIENT_TOKEN_KEY));
                    break;
                default:
                    userId = null;
                    lastEvent = null;
            }
            // Set up a listener to asynchronously update the user id if the user state changes in the future
            awsMobileClient.addUserStateListener(userStateDetails -> {
                switch(userStateDetails.getUserState()) {
                    case SIGNED_OUT:
                    case GUEST:
                        userId = null;
                        if (lastEvent != AuthChannelEventName.SIGNED_OUT) {
                            lastEvent = AuthChannelEventName.SIGNED_OUT;
                            Amplify.Hub.publish(HubChannel.AUTH, HubEvent.create(AuthChannelEventName.SIGNED_OUT));
                        }
                        break;
                    case SIGNED_IN:
                        fetchAndSetUserId(() -> {
                            if (lastEvent != AuthChannelEventName.SIGNED_IN) {
                                lastEvent = AuthChannelEventName.SIGNED_IN;
                                Amplify.Hub.publish(HubChannel.AUTH, HubEvent.create(AuthChannelEventName.SIGNED_IN));
                            }
                        });
                        break;
                    case SIGNED_OUT_FEDERATED_TOKENS_INVALID:
                    case SIGNED_OUT_USER_POOLS_TOKENS_INVALID:
                        fetchAndSetUserId(() -> {
                        /* No response needed */
                        });
                        if (lastEvent != AuthChannelEventName.SESSION_EXPIRED) {
                            lastEvent = AuthChannelEventName.SESSION_EXPIRED;
                            Amplify.Hub.publish(HubChannel.AUTH, HubEvent.create(AuthChannelEventName.SESSION_EXPIRED));
                        }
                        break;
                    default:
                        userId = null;
                }
            });
            latch.countDown();
        }

        @Override
        public void onError(Exception error) {
            asyncException.set(error);
            latch.countDown();
        }
    });
    try {
        if (latch.await(SECONDS_BEFORE_TIMEOUT, TimeUnit.SECONDS)) {
            if (asyncException.get() != null) {
                throw new AuthException("Failed to instantiate AWSMobileClient", asyncException.get(), "See attached exception for more details");
            }
            return;
        } else {
            throw new AuthException("Failed to instantiate AWSMobileClient within " + SECONDS_BEFORE_TIMEOUT + " seconds", "Check network connectivity");
        }
    } catch (InterruptedException error) {
        throw new AuthException("Failed to instantiate AWSMobileClient", error, "See attached exception for more details");
    }
}
Also used : NonNull(androidx.annotation.NonNull) AuthException(com.amplifyframework.auth.AuthException) AuthProvider(com.amplifyframework.auth.AuthProvider) UserStateDetails(com.amazonaws.mobile.client.UserStateDetails) AWSCognitoAuthConfirmResetPasswordOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthConfirmResetPasswordOptions) AuthConfirmResetPasswordOptions(com.amplifyframework.auth.options.AuthConfirmResetPasswordOptions) AuthSignUpOptions(com.amplifyframework.auth.options.AuthSignUpOptions) JSONException(org.json.JSONException) AuthDevice(com.amplifyframework.auth.AuthDevice) AuthNextUpdateAttributeStep(com.amplifyframework.auth.result.step.AuthNextUpdateAttributeStep) AuthClient(com.amazonaws.mobileconnectors.cognitoauth.AuthClient) Map(java.util.Map) AuthPlugin(com.amplifyframework.auth.AuthPlugin) HubEvent(com.amplifyframework.hub.HubEvent) AuthCodeDeliveryDetails(com.amplifyframework.auth.AuthCodeDeliveryDetails) AuthResendSignUpCodeOptions(com.amplifyframework.auth.options.AuthResendSignUpCodeOptions) AuthNextSignInStep(com.amplifyframework.auth.result.step.AuthNextSignInStep) AuthConfirmSignUpOptions(com.amplifyframework.auth.options.AuthConfirmSignUpOptions) AuthResetPasswordOptions(com.amplifyframework.auth.options.AuthResetPasswordOptions) AuthUpdateAttributeStep(com.amplifyframework.auth.result.step.AuthUpdateAttributeStep) CountDownLatch(java.util.concurrent.CountDownLatch) Nullable(androidx.annotation.Nullable) AuthResetPasswordResult(com.amplifyframework.auth.result.AuthResetPasswordResult) AuthNextResetPasswordStep(com.amplifyframework.auth.result.step.AuthNextResetPasswordStep) SignInUIOptions(com.amazonaws.mobile.client.SignInUIOptions) UserState(com.amazonaws.mobile.client.UserState) AuthSignInOptions(com.amplifyframework.auth.options.AuthSignInOptions) AuthChannelEventName(com.amplifyframework.auth.AuthChannelEventName) AuthUserAttributeKey(com.amplifyframework.auth.AuthUserAttributeKey) AuthSignUpResult(com.amplifyframework.auth.result.AuthSignUpResult) AuthSession(com.amplifyframework.auth.AuthSession) Device(com.amazonaws.mobile.client.results.Device) ArrayList(java.util.ArrayList) SignUpResult(com.amazonaws.mobile.client.results.SignUpResult) AuthSessionResult(com.amplifyframework.auth.result.AuthSessionResult) AuthProviderConverter(com.amplifyframework.auth.cognito.util.AuthProviderConverter) AWSCognitoAuthConfirmSignUpOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthConfirmSignUpOptions) AuthWebUISignInOptions(com.amplifyframework.auth.options.AuthWebUISignInOptions) Tokens(com.amazonaws.mobile.client.results.Tokens) Action(com.amplifyframework.core.Action) AWSMobileClient(com.amazonaws.mobile.client.AWSMobileClient) SignInState(com.amazonaws.mobile.client.results.SignInState) AuthUserAttribute(com.amplifyframework.auth.AuthUserAttribute) AWSCognitoAuthUpdateUserAttributeOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthUpdateUserAttributeOptions) AuthSignUpStep(com.amplifyframework.auth.result.step.AuthSignUpStep) AmplifyException(com.amplifyframework.AmplifyException) SignOutOptions(com.amazonaws.mobile.client.SignOutOptions) AuthSignOutOptions(com.amplifyframework.auth.options.AuthSignOutOptions) UserAgent(com.amplifyframework.util.UserAgent) AuthResetPasswordStep(com.amplifyframework.auth.result.step.AuthResetPasswordStep) AWSConfiguration(com.amazonaws.mobile.config.AWSConfiguration) JSONObject(org.json.JSONObject) AuthResendUserAttributeConfirmationCodeOptions(com.amplifyframework.auth.options.AuthResendUserAttributeConfirmationCodeOptions) SignInStateConverter(com.amplifyframework.auth.cognito.util.SignInStateConverter) AuthUser(com.amplifyframework.auth.AuthUser) AuthSignInStep(com.amplifyframework.auth.result.step.AuthSignInStep) HubChannel(com.amplifyframework.hub.HubChannel) AWSCognitoAuthWebUISignInOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthWebUISignInOptions) SignInResult(com.amazonaws.mobile.client.results.SignInResult) Objects(java.util.Objects) ListDevicesResult(com.amazonaws.mobile.client.results.ListDevicesResult) List(java.util.List) Callback(com.amazonaws.mobile.client.Callback) CognitoJWTParser(com.amazonaws.mobileconnectors.cognitoidentityprovider.util.CognitoJWTParser) AWSCognitoAuthResetPasswordOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthResetPasswordOptions) AuthUpdateUserAttributesOptions(com.amplifyframework.auth.options.AuthUpdateUserAttributesOptions) UserCodeDeliveryDetails(com.amazonaws.mobile.client.results.UserCodeDeliveryDetails) AuthNextSignUpStep(com.amplifyframework.auth.result.step.AuthNextSignUpStep) AWSCognitoAuthSignInOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthSignInOptions) LogFactory(com.amazonaws.logging.LogFactory) Context(android.content.Context) NotAuthorizedException(com.amazonaws.services.cognitoidentityprovider.model.NotAuthorizedException) AuthUpdateUserAttributeOptions(com.amplifyframework.auth.options.AuthUpdateUserAttributeOptions) HostedUIOptions(com.amazonaws.mobile.client.HostedUIOptions) AWSCognitoAuthResendSignUpCodeOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthResendSignUpCodeOptions) Intent(android.content.Intent) HashMap(java.util.HashMap) ForgotPasswordResult(com.amazonaws.mobile.client.results.ForgotPasswordResult) AtomicReference(java.util.concurrent.atomic.AtomicReference) ForgotPasswordState(com.amazonaws.mobile.client.results.ForgotPasswordState) AWSCognitoAuthConfirmSignInOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthConfirmSignInOptions) Consumer(com.amplifyframework.core.Consumer) AuthSignInResult(com.amplifyframework.auth.result.AuthSignInResult) CognitoAuthExceptionConverter(com.amplifyframework.auth.cognito.util.CognitoAuthExceptionConverter) AuthUpdateAttributeResult(com.amplifyframework.auth.result.AuthUpdateAttributeResult) AWSCognitoAuthUpdateUserAttributesOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthUpdateUserAttributesOptions) Amplify(com.amplifyframework.core.Amplify) AuthFlowType(com.amplifyframework.auth.cognito.options.AuthFlowType) AuthConfirmSignInOptions(com.amplifyframework.auth.options.AuthConfirmSignInOptions) AuthNavigationException(com.amazonaws.mobileconnectors.cognitoauth.exceptions.AuthNavigationException) TimeUnit(java.util.concurrent.TimeUnit) AWSCognitoAuthResendUserAttributeConfirmationCodeOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthResendUserAttributeConfirmationCodeOptions) AWSCognitoAuthSignOutOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthSignOutOptions) Activity(android.app.Activity) VisibleForTesting(androidx.annotation.VisibleForTesting) AWSCognitoAuthSignUpOptions(com.amplifyframework.auth.cognito.options.AWSCognitoAuthSignUpOptions) Collections(java.util.Collections) JSONException(org.json.JSONException) AuthException(com.amplifyframework.auth.AuthException) AtomicReference(java.util.concurrent.atomic.AtomicReference) CountDownLatch(java.util.concurrent.CountDownLatch) AWSConfiguration(com.amazonaws.mobile.config.AWSConfiguration) UserStateDetails(com.amazonaws.mobile.client.UserStateDetails) AuthException(com.amplifyframework.auth.AuthException) JSONException(org.json.JSONException) AmplifyException(com.amplifyframework.AmplifyException) NotAuthorizedException(com.amazonaws.services.cognitoidentityprovider.model.NotAuthorizedException) AuthNavigationException(com.amazonaws.mobileconnectors.cognitoauth.exceptions.AuthNavigationException) JSONObject(org.json.JSONObject)

Example 35 with AWSConfiguration

use of com.amazonaws.mobile.config.AWSConfiguration in project aws-mobile-appsync-sdk-android by awslabs.

the class MultiClientInstrumentationTest method testConfigHasNoClientDatabasePrefixAndUseClientDatabasePrefixTrue.

@Test
public void testConfigHasNoClientDatabasePrefixAndUseClientDatabasePrefixTrue() {
    AWSConfiguration awsConfiguration = new AWSConfiguration(getTargetContext());
    awsConfiguration.setConfiguration("MultiAuthAndroidIntegTestApp_NoClientDatabasePrefix");
    RuntimeException exception = assertThrows(RuntimeException.class, () -> AWSAppSyncClient.builder().context(getTargetContext()).awsConfiguration(awsConfiguration).useClientDatabasePrefix(true).build());
    assertEquals("ClientDatabasePrefix is not present in AppSync configuration in awsconfiguration.json " + "however .useClientDatabasePrefix(true) is passed in.", exception.getCause().getLocalizedMessage());
}
Also used : AWSConfiguration(com.amazonaws.mobile.config.AWSConfiguration) Test(org.junit.Test)

Aggregations

AWSConfiguration (com.amazonaws.mobile.config.AWSConfiguration)48 JSONObject (org.json.JSONObject)28 Test (org.junit.Test)26 JSONException (org.json.JSONException)16 Context (android.content.Context)13 NonNull (androidx.annotation.NonNull)11 BasicAPIKeyAuthProvider (com.amazonaws.mobileconnectors.appsync.sigv4.BasicAPIKeyAuthProvider)9 CountDownLatch (java.util.concurrent.CountDownLatch)8 BeforeClass (org.junit.BeforeClass)7 AWSAppSyncClient (com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient)6 UserStateDetails (com.amazonaws.mobile.client.UserStateDetails)4 AWSCredentials (com.amazonaws.auth.AWSCredentials)3 BasicAWSCredentials (com.amazonaws.auth.BasicAWSCredentials)3 SignInResult (com.amazonaws.mobile.client.results.SignInResult)3 CognitoUserPool (com.amazonaws.mobileconnectors.cognitoidentityprovider.CognitoUserPool)3 UserNotConfirmedException (com.amazonaws.services.cognitoidentityprovider.model.UserNotConfirmedException)3 Nullable (androidx.annotation.Nullable)2 ApplicationProvider.getApplicationContext (androidx.test.core.app.ApplicationProvider.getApplicationContext)2 AWSMobileClient (com.amazonaws.mobile.client.AWSMobileClient)2 Callback (com.amazonaws.mobile.client.Callback)2