/* * Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://aws.amazon.com/apache2.0 * * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES * OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and * limitations under the License. */ package com.amazonaws.mobileconnectors.amazonmobileanalytics; import android.app.Activity; import android.content.Context; import android.content.ContextWrapper; import android.content.pm.PackageManager; import com.amazonaws.auth.AWSCredentials; import com.amazonaws.auth.AWSCredentialsProvider; import com.amazonaws.auth.AnonymousAWSCredentials; import com.amazonaws.mobileconnectors.amazonmobileanalytics.core.MockAnalyticsContext; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.idresolver.Id; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.system.MockSystem; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.core.util.SDKInfo; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.event.DefaultEventClient; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.event.InternalEventClient; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.session.FileSessionStore; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.session.InternalSessionClient; import com.amazonaws.mobileconnectors.amazonmobileanalytics.internal.session.client.DefaultSessionClient; import com.amazonaws.mobileconnectors.amazonmobileanalytics.utils.ApplyLocalesRule; import com.amazonaws.mobileconnectors.amazonmobileanalytics.utils.LocaleTestingSetupAndTeardown; import com.amazonaws.regions.Regions; import org.junit.Rule; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; import org.robolectric.annotation.Config; import java.util.Locale; @RunWith(RobolectricTestRunner.class) @Config(manifest = Config.NONE) public abstract class AWSErsLocaleTestBase implements LocaleTestingSetupAndTeardown { private static final Locale[] locales = new Locale[] { new Locale("en", "US"), new Locale("ar", "SA"), new Locale("ja", "JP", "JP"), new Locale("fr", "FR") }; @Rule public ApplyLocalesRule applyLocalesRule = new ApplyLocalesRule(locales); protected static final String SDK_VERSION = "2.1.test"; protected static final String SDK_NAME = "AmazonAnalyticsSDK"; protected static final String UNIQUE_ID = "BEEFBEEF-BEEF-BEEF-BEEF-BEEFBEEFBEEF"; protected MockAnalyticsContext context; protected MobileAnalyticsManager instance; private class ContextWithPermissions extends ContextWrapper { public ContextWithPermissions(Context base) { super(base); } @Override public int checkCallingOrSelfPermission(String permission) { if (permission.equalsIgnoreCase("android.permission.INTERNET") || permission.equalsIgnoreCase("android.permission.ACCESS_NETWORK_STATE")) return PackageManager.PERMISSION_GRANTED; else return super.checkCallingOrSelfPermission(permission); } } @Override public void setupForRepeatedTestCase() { Context mockAndroidContext = new ContextWithPermissions(new Activity()); AWSCredentialsProvider provider = new AWSCredentialsProvider() { AWSCredentials creds = new AnonymousAWSCredentials(); @Override public AWSCredentials getCredentials() { return creds; } @Override public void refresh() { }; }; AnalyticsConfig options = new AnalyticsConfig(); context = new MockAnalyticsContext(new SDKInfo(SDK_NAME, SDK_VERSION), Id.valueOf(UNIQUE_ID)); InternalEventClient iec = new DefaultEventClient(context, false); InternalSessionClient isc = new DefaultSessionClient(context, iec, new FileSessionStore( context)); instance = new MobileAnalyticsManager(mockAndroidContext, UNIQUE_ID, Regions.US_EAST_1, provider, options, null, context, iec, isc, context.getERSClient()); } @Override public void teardownForRepeatedTestCase() { ((MockSystem) context.getSystem()).reset(); } }