use of com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient in project aws-mobile-appsync-sdk-android by awslabs.
the class MultiClientInstrumentationTest method testQueryPostsWithAllResponseFetchersAndMultipleClients.
@Test
public void testQueryPostsWithAllResponseFetchersAndMultipleClients() {
final ResponseFetcher[] appSyncResponseFetchers = new ResponseFetcher[] { AppSyncResponseFetchers.NETWORK_FIRST, AppSyncResponseFetchers.NETWORK_ONLY, AppSyncResponseFetchers.CACHE_FIRST };
for (ResponseFetcher appSyncResponseFetcher : appSyncResponseFetchers) {
Log.d(TAG, "Response Fetcher: " + appSyncResponseFetcher.toString());
Map<String, AWSAppSyncClient> appSyncClientMap = new HashMap<>();
appSyncClientMap.put("AMAZON_COGNITO_USER_POOLS", AWSAppSyncClients.withUserPoolsFromAWSConfiguration(appSyncResponseFetcher));
appSyncClientMap.put("AMAZON_COGNITO_USER_POOLS_2", AWSAppSyncClients.withUserPools2FromAWSConfiguration(idToken, appSyncResponseFetcher));
for (final String clientName : appSyncClientMap.keySet()) {
// List Posts
final AWSAppSyncClient awsAppSyncClient = appSyncClientMap.get(clientName);
Log.d(TAG, "AWSAppSyncClient for clientName: " + clientName + "; client: " + awsAppSyncClient);
assertNotNull(awsAppSyncClient);
Map<String, Response<AllPostsQuery.Data>> listPostsResponses = Posts.list(awsAppSyncClient, appSyncResponseFetcher);
Response<AllPostsQuery.Data> allPostsResponse = listPostsResponses.get("CACHE") != null ? listPostsResponses.get("CACHE") : listPostsResponses.get("NETWORK");
assertNotNull(allPostsResponse);
assertNotNull(allPostsResponse.data());
AllPostsQuery.ListPosts listPosts = allPostsResponse.data().listPosts();
assertNotNull(listPosts);
List<AllPostsQuery.Item> items = listPosts.items();
assertNotNull(items);
// Loop over the list and query each post
String postID;
for (AllPostsQuery.Item item : items) {
postID = item.id();
Map<String, Response<GetPostQuery.Data>> getPostResponses = Posts.query(awsAppSyncClient, appSyncResponseFetcher, postID);
if (clientName.equals("API_KEY") || clientName.equals("AWS_IAM")) {
assertResponseForQueryPost(appSyncResponseFetcher, getPostResponses, postID);
} else if (clientName.startsWith("AMAZON_COGNITO_USER_POOLS")) {
assertResponseForQueryPostWithUserPools(appSyncResponseFetcher, getPostResponses, postID);
}
}
}
// Clear the cache
for (final String clientName : appSyncClientMap.keySet()) {
final AWSAppSyncClient awsAppSyncClient = appSyncClientMap.get(clientName);
assertNotNull(awsAppSyncClient);
try {
awsAppSyncClient.clearCaches();
} catch (AWSAppSyncClientException e) {
fail("Error in clearing the cache." + e);
}
}
}
}
use of com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient in project aws-mobile-appsync-sdk-android by awslabs.
the class MultiClientInstrumentationTest method testCache.
@Test
public void testCache() {
List<AWSAppSyncClient> clients = Arrays.asList(AWSAppSyncClients.withAPIKEYFromAWSConfiguration(), AWSAppSyncClients.withIAMFromAWSConfiguration(), AWSAppSyncClients.withUserPoolsFromAWSConfiguration());
for (AWSAppSyncClient client : clients) {
Response<AllPostsQuery.Data> allPostsResponse = Posts.list(client, AppSyncResponseFetchers.NETWORK_ONLY).get("NETWORK");
assertNotNull(allPostsResponse);
assertNotNull(allPostsResponse.data());
assertNotNull(allPostsResponse.data().listPosts());
AllPostsQuery.ListPosts listPosts = allPostsResponse.data().listPosts();
assertNotNull(listPosts);
List<AllPostsQuery.Item> items = listPosts.items();
assertNotNull(items);
String postID;
long numPostsFromNetwork = 0;
for (AllPostsQuery.Item item : items) {
postID = item.id();
Response<GetPostQuery.Data> getPostQueryResponse = Posts.query(client, AppSyncResponseFetchers.NETWORK_ONLY, postID).get("NETWORK");
assertNotNull(getPostQueryResponse);
assertNotNull(getPostQueryResponse.data());
assertNotNull(getPostQueryResponse.data().getPost());
assertEquals(postID, getPostQueryResponse.data().getPost().id());
numPostsFromNetwork++;
}
long numPostsFromCache = 0;
for (AllPostsQuery.Item item : items) {
postID = item.id();
Response<GetPostQuery.Data> getPostQueryResponse = Posts.query(client, AppSyncResponseFetchers.CACHE_ONLY, postID).get("CACHE");
assertNotNull(getPostQueryResponse);
assertNotNull(getPostQueryResponse.data());
assertNotNull(getPostQueryResponse.data().getPost());
assertEquals(postID, getPostQueryResponse.data().getPost().id());
numPostsFromCache++;
}
assertEquals(numPostsFromNetwork, numPostsFromCache);
}
}
use of com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient in project aws-mobile-appsync-sdk-android by awslabs.
the class MultiClientInstrumentationTest method testCodeHasClientDatabasePrefixAndUseClientDatabasePrefixTrue.
@Test
public void testCodeHasClientDatabasePrefixAndUseClientDatabasePrefixTrue() throws JSONException {
AWSConfiguration awsConfiguration = new AWSConfiguration(getTargetContext());
JSONObject appSyncConfig = awsConfiguration.optJsonObject("AppSync");
AWSAppSyncClient.Builder awsAppSyncClientBuilder = AWSAppSyncClient.builder().context(getTargetContext()).apiKey(new BasicAPIKeyAuthProvider(appSyncConfig.getString("ApiKey"))).serverUrl(appSyncConfig.getString("ApiUrl")).region(Regions.fromName(appSyncConfig.getString("Region"))).useClientDatabasePrefix(true).clientDatabasePrefix(appSyncConfig.getString("ClientDatabasePrefix"));
AWSAppSyncClient awsAppSyncClient = awsAppSyncClientBuilder.build();
AWSAppSyncClients.validateAppSyncClient(awsAppSyncClient, appSyncConfig.getString("ClientDatabasePrefix"), appSyncConfig.getString("AuthMode"));
}
use of com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient in project aws-mobile-appsync-sdk-android by awslabs.
the class MultiClientInstrumentationTest method testCodeHasClientDatabasePrefixAndUseClientDatabasePrefixFalse.
@Test
public void testCodeHasClientDatabasePrefixAndUseClientDatabasePrefixFalse() throws JSONException {
AWSConfiguration awsConfiguration = new AWSConfiguration(getTargetContext());
JSONObject appSyncConfig = awsConfiguration.optJsonObject("AppSync");
AWSAppSyncClient awsAppSyncClient = AWSAppSyncClient.builder().context(getTargetContext()).apiKey(new BasicAPIKeyAuthProvider(appSyncConfig.getString("ApiKey"))).serverUrl(appSyncConfig.getString("ApiUrl")).region(Regions.fromName(appSyncConfig.getString("Region"))).useClientDatabasePrefix(false).clientDatabasePrefix(appSyncConfig.getString("ClientDatabasePrefix")).build();
AWSAppSyncClients.validateAppSyncClient(awsAppSyncClient, null, null);
}
use of com.amazonaws.mobileconnectors.appsync.AWSAppSyncClient in project aws-mobile-appsync-sdk-android by awslabs.
the class QueryInstrumentationTest method testBaseSyncQuery.
@Test
public void testBaseSyncQuery() {
AWSAppSyncClient awsAppSyncClient = AWSAppSyncClients.withIAMFromAWSConfiguration();
// Perform a base query and await success.
LatchedGraphQLCallback<Operation.Data> baseQueryCallback = LatchedGraphQLCallback.instance();
Cancelable syncCancelable = awsAppSyncClient.sync(AllPostsQuery.builder().build(), baseQueryCallback, 0);
assertFalse(syncCancelable.isCanceled());
baseQueryCallback.awaitResponse();
// Cancel the query. TODO: it just completed with success, so this probably does nothing.
syncCancelable.cancel();
assertTrue(syncCancelable.isCanceled());
// Canceling twice should land things in the same place.
syncCancelable.cancel();
assertTrue(syncCancelable.isCanceled());
}
Aggregations