Esempio n. 1
0
        public void LoginsTests()
        {
            CognitoIdentity.CreateIdentityPool(out poolId, out poolName);

            TestCredentials(usePoolRoles: false);
            TestCredentials(usePoolRoles: true);
        }
Esempio n. 2
0
        public void Cleanup()
        {
            CognitoIdentity.CleanupIdentityPools();

            CleanupCreatedRoles();

            if (facebookUser != null)
            {
                FacebookUtilities.DeleteFacebookUser(facebookUser);
            }

            using (var sns = new AmazonSimpleNotificationServiceClient())
            {
                foreach (var topicArn in topicArns)
                {
                    sns.DeleteTopic(topicArn);
                }
                topicArns.Clear();

                if (platformApplicationArn != null)
                {
                    sns.DeletePlatformApplication(new DeletePlatformApplicationRequest
                    {
                        PlatformApplicationArn = platformApplicationArn
                    });
                }
            }
        }
Esempio n. 3
0
        public void IdentityTests()
        {
            CognitoIdentity.CreateIdentityPool(out poolId, out poolName);

            // Add retry logic to handle the eventual consistence of the identity pool getting created
            GetIdentityPoolConfigurationResponse config = null;

            UtilityMethods.WaitUntilSuccess(() => config = Client.GetIdentityPoolConfiguration(poolId));

            Assert.IsNotNull(config);
            Assert.AreEqual(poolId, config.IdentityPoolId);
            Assert.IsNull(config.PushSync);

            var usages = GetAllIdentityPoolUsages();

            Assert.IsNotNull(usages);
            Assert.AreNotEqual(0, usages.Count);
            int usagesCount = usages.Count;

            usages = GetAllIdentityPoolUsages();
            Assert.IsNotNull(usages);
            Assert.AreNotEqual(0, usages.Count);
            Assert.AreEqual(usagesCount, usages.Count);

            // Eventual consistency for IAM role
            UtilityMethods.WaitUntilSuccess(() => TestAuthenticatedClient(usePoolRoles: true));
            UtilityMethods.WaitUntilSuccess(() => TestAuthenticatedClient(usePoolRoles: false));
        }
Esempio n. 4
0
 public void Cleanup()
 {
     CognitoIdentity.CleanupIdentityPools();
     if (!string.IsNullOrEmpty(roleName))
     {
         DeleteRole(roleName);
     }
 }
Esempio n. 5
0
        public void CredentialsTests()
        {
            CognitoIdentity.CreateIdentityPool(out poolId, out poolName);

            var credentials = GetCognitoCredentials(poolId, usePoolRoles: false);

            TestCredentials(credentials);
            credentials = GetCognitoCredentials(poolId, usePoolRoles: true);
            TestCredentials(credentials);
        }
Esempio n. 6
0
        public void ConfigsTest()
        {
            CognitoIdentity.CreateIdentityPool(out poolId, out poolName);

            var config = Client.GetIdentityPoolConfiguration(new GetIdentityPoolConfigurationRequest
            {
                IdentityPoolId = poolId
            });

            Assert.AreEqual(poolId, config.IdentityPoolId);
            Assert.IsNull(config.PushSync);

            CreatePlatformApplication();

            Client.SetIdentityPoolConfiguration(new SetIdentityPoolConfigurationRequest
            {
                IdentityPoolId = poolId,
                PushSync       = new PushSync
                {
                    ApplicationArns = new List <string> {
                        platformApplicationArn
                    },
                    RoleArn = null
                }
            });

            config = Client.GetIdentityPoolConfiguration(new GetIdentityPoolConfigurationRequest
            {
                IdentityPoolId = poolId
            });
            Assert.AreEqual(poolId, config.IdentityPoolId);
            Assert.IsNotNull(config.PushSync);
            Assert.IsNull(config.PushSync.RoleArn);
            Assert.IsNotNull(config.PushSync.ApplicationArns);
            Assert.AreEqual(1, config.PushSync.ApplicationArns.Count);

            Client.SetIdentityPoolConfiguration(new SetIdentityPoolConfigurationRequest
            {
                IdentityPoolId = poolId,
                PushSync       = new PushSync
                {
                    //ApplicationArns = new List<string> { platformApplicationArn },
                    //RoleArn = null
                }
            });

            config = Client.GetIdentityPoolConfiguration(new GetIdentityPoolConfigurationRequest
            {
                IdentityPoolId = poolId
            });
            Assert.AreEqual(poolId, config.IdentityPoolId);
            Assert.IsNull(config.PushSync);
        }
Esempio n. 7
0
        public void EventsTest()
        {
            CognitoIdentity.CreateIdentityPool(out poolId, out poolName);

            var events = Client.GetCognitoEvents(new GetCognitoEventsRequest
            {
                IdentityPoolId = poolId
            }).Events;

            Assert.AreEqual(0, events.Count);

            string functionName, functionArn, roleName, roleArn;

            LambdaTests.CreateLambdaFunction(out functionName, out functionArn, out roleName, out roleArn);

            Client.SetCognitoEvents(new SetCognitoEventsRequest
            {
                IdentityPoolId = poolId,
                Events         = new Dictionary <string, string>
                {
                    { "SyncTrigger", functionArn }
                }
            });

            events = Client.GetCognitoEvents(new GetCognitoEventsRequest
            {
                IdentityPoolId = poolId
            }).Events;
            Assert.AreEqual(1, events.Count);

            Client.SetCognitoEvents(new SetCognitoEventsRequest
            {
                IdentityPoolId = poolId,
                Events         = new Dictionary <string, string>
                {
                    { "SyncTrigger", "" }
                }
            });

            events = Client.GetCognitoEvents(new GetCognitoEventsRequest
            {
                IdentityPoolId = poolId
            }).Events;
            Assert.AreEqual(0, events.Count);
        }
Esempio n. 8
0
        private void TestCredentials(bool usePoolRoles)
        {
            int credentialsChanges = 0;
            CognitoAWSCredentials credentials;

            using (var authenticatedClient = CreateAuthenticatedClient(poolId, usePoolRoles, out credentials))
            {
                // Log and count identity changes
                credentials.IdentityChangedEvent += (sender, args) =>
                {
                    credentialsChanges++;
                    Console.WriteLine("Identity changed: [{0}] => [{1}]", args.OldIdentityId, args.NewIdentityId);
                };

                string datasetName = "sample-dataset";

                // Test calls using unauthenticated role
                TestDataCalls(datasetName, authenticatedClient);

                // Configure IdentityPool to support Facebook logins
                CognitoIdentity.UpdateIdentityPool(poolId, poolName,
                                                   new Dictionary <string, string> {
                    { FacebookProvider, FacebookAppId }
                });

                // Create a Facebook user and supply this information to the credentials
                facebookUser = FacebookUtilities.CreateFacebookUser(FacebookAppId, FacebookAppSecret);
                var facebookAccessToken = facebookUser.AccessToken;

                // Logins was updated, clear the current credentials
                credentials.AddLogin(FacebookProvider, facebookAccessToken);

                // Test calls using authenticated role
                TestDataCalls(datasetName, authenticatedClient);
            }

            Assert.AreEqual(2, credentialsChanges);
        }
Esempio n. 9
0
        public void IdentityTests()
        {
            CognitoIdentity.CreateIdentityPool(out poolId, out poolName);

            var usages = GetAllIdentityPoolUsages();

            Assert.IsNotNull(usages);
            Assert.AreNotEqual(0, usages.Count);
            int usagesCount = usages.Count;

            var identityId = CognitoIdentity.CreateIdentity(poolId, poolName);

            usages = GetAllIdentityPoolUsages();
            Assert.IsNotNull(usages);
            Assert.AreNotEqual(0, usages.Count);
            Assert.AreEqual(usagesCount, usages.Count);

            var datasets = GetAllDatasets(poolId, identityId);

            Assert.AreEqual(0, datasets.Count);

            string datasetName = "sample-dataset";

            var recordsResult = Client.ListRecords(new ListRecordsRequest
            {
                DatasetName    = datasetName,
                IdentityPoolId = poolId,
                IdentityId     = identityId,
                MaxResults     = 1
            });

            Assert.IsNotNull(recordsResult);
            Assert.AreEqual(0, recordsResult.Count);
            Assert.IsFalse(recordsResult.DatasetDeletedAfterRequestedSyncCount);
            Assert.IsFalse(recordsResult.DatasetExists);
            Assert.AreEqual(0, recordsResult.DatasetSyncCount);
            Assert.IsNull(recordsResult.LastModifiedBy);
            Assert.AreEqual(0, recordsResult.MergedDatasetNames.Count);
            Assert.AreEqual(0, recordsResult.Records.Count);
            Assert.IsFalse(string.IsNullOrEmpty(recordsResult.SyncSessionToken));

            // Some operations require an authenticated client
            using (var authenticatedClient = CreateAuthenticatedClient(poolId, poolName, identityId, out roleName))
            {
                string key1          = "key1";
                var    updateRequest = new UpdateRecordsRequest
                {
                    DatasetName    = datasetName,
                    IdentityPoolId = poolId,
                    IdentityId     = identityId,
                    RecordPatches  = new List <RecordPatch>
                    {
                        new RecordPatch
                        {
                            Op        = Operation.Replace,
                            SyncCount = 0,
                            Key       = key1,
                            Value     = key1
                        }
                    },
                    SyncSessionToken = recordsResult.SyncSessionToken
                };

                // Add retries in case the identity pool is not ready yet.
                List <Record> records = null;
                for (int retries = 0; retries < 5 && records == null; retries++)
                {
                    Thread.Sleep(1000 * retries);

                    try
                    {
                        records = authenticatedClient.UpdateRecords(updateRequest).Records;
                    }
                    catch (AmazonCognitoSyncException e)
                    {
                        if (e.StatusCode == System.Net.HttpStatusCode.Forbidden)
                        {
                            continue;
                        }
                        throw;
                    }
                }
                Assert.AreEqual(1, records.Count);

                recordsResult = Client.ListRecords(new ListRecordsRequest
                {
                    DatasetName    = datasetName,
                    IdentityPoolId = poolId,
                    IdentityId     = identityId,
                    MaxResults     = 1
                });
                Assert.IsNotNull(recordsResult);
                Assert.AreEqual(1, recordsResult.Count);
                Assert.IsFalse(recordsResult.DatasetDeletedAfterRequestedSyncCount);
                Assert.IsTrue(recordsResult.DatasetExists);
                Assert.AreEqual(1, recordsResult.DatasetSyncCount);
                Assert.AreEqual(0, recordsResult.MergedDatasetNames.Count);
                Assert.AreEqual(1, recordsResult.Records.Count);
                Assert.IsFalse(string.IsNullOrEmpty(recordsResult.SyncSessionToken));

                updateRequest = new UpdateRecordsRequest
                {
                    DatasetName    = datasetName,
                    IdentityPoolId = poolId,
                    IdentityId     = identityId,
                    RecordPatches  = new List <RecordPatch>
                    {
                        new RecordPatch
                        {
                            Op        = Operation.Replace,
                            SyncCount = 1,
                            Key       = key1,
                            Value     = key1
                        }
                    },
                    SyncSessionToken = recordsResult.SyncSessionToken
                };
                records = authenticatedClient.UpdateRecords(updateRequest).Records;
                var allRecords = GetAllRecords(datasetName, poolId, identityId);
                Assert.AreEqual(1, records.Count);
            }

            var describeRequest = new DescribeDatasetRequest
            {
                DatasetName    = datasetName,
                IdentityId     = identityId,
                IdentityPoolId = poolId
            };
            var dataset = Client.DescribeDataset(describeRequest).Dataset;

            Assert.IsNotNull(dataset);
            Assert.AreEqual(datasetName, dataset.DatasetName);

            var poolUsage = Client.DescribeIdentityPoolUsage(new DescribeIdentityPoolUsageRequest
            {
                IdentityPoolId = poolId
            }).IdentityPoolUsage;

            Assert.IsNotNull(poolUsage.LastModifiedDate);

            var identityUsage = Client.DescribeIdentityUsage(new DescribeIdentityUsageRequest
            {
                IdentityId     = identityId,
                IdentityPoolId = poolId
            }).IdentityUsage;

            Assert.IsNotNull(identityUsage);
            Assert.AreEqual(identityId, identityUsage.IdentityId);
            Assert.AreEqual(poolId, identityUsage.IdentityPoolId);

            datasets = GetAllDatasets(poolId, identityId);
            Assert.AreEqual(1, datasets.Count);

            Client.DeleteDataset(new DeleteDatasetRequest
            {
                DatasetName    = datasetName,
                IdentityPoolId = poolId,
                IdentityId     = identityId
            });

            datasets = GetAllDatasets(poolId, identityId);
            Assert.AreEqual(0, datasets.Count);

            AssertExtensions.ExpectException(() => Client.DescribeDataset(describeRequest));
        }
Esempio n. 10
0
 public static void ClassCleanup()
 {
     CognitoIdentity.BaseClean();
     BaseClean();
 }
Esempio n. 11
0
 public static void ClassCleanup()
 {
     CognitoIdentity.BaseClean();
     BaseClean();
     LambdaTests.DeleteCreatedFunctions(LambdaTests.Client);
 }