public void AddOrUpdateUserTest()
        {
            var         users            = new AzureBlobContainer <UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var         sessions         = new AzureBlobContainer <UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var         friends          = new AzureBlobContainer <Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var         target           = new UserRepository(users, sessions, friends);
            string      userID           = Guid.NewGuid().ToString();
            UserProfile userFirstVersion = new UserProfile()
            {
                Id = userID, DisplayName = "John"
            };

            target.AddOrUpdateUser(userFirstVersion);
            Assert.AreEqual(userFirstVersion, target.GetUser(userID));

            UserProfile otherUser = new UserProfile()
            {
                Id = Guid.NewGuid().ToString(), DisplayName = "Peter"
            };

            target.AddOrUpdateUser(otherUser);
            Assert.AreEqual(otherUser, target.GetUser(otherUser.Id));

            UserProfile userSecondVersion = new UserProfile()
            {
                Id = userID, DisplayName = "Johny"
            };

            Assert.AreEqual(userSecondVersion, target.GetUser(userID));
        }
        public async Task <byte[]> GetFileAsync(HostConfig host, string file)
        {
            try
            {
                AzureBlobContainer container = new AzureBlobContainer(host, file);

                BlobServiceClient serviceClient = new BlobServiceClient(ConnectionString);
                var containerClient             = serviceClient.GetBlobContainerClient(container.ContainerClientName);
                if (!await containerClient.ExistsAsync())
                {
                    throw new FileNotFoundException(file);
                }

                var blobClient = containerClient.GetBlobClient(container.BlobClientName);
                if (!await blobClient.ExistsAsync())
                {
                    throw new FileNotFoundException(file);
                }

                using var stream = new MemoryStream();
                var download = await blobClient.DownloadAsync();

                await download.Value.Content.CopyToAsync(stream);

                return(stream.GetBuffer());
            }
            catch (Exception)
            {
                throw;
            }
        }
 public void Setup()
 {
     var account = CloudStorageAccount.DevelopmentStorageAccount;
     var container = new AzureBlobContainer<NotificationStatus>(account, ConfigurationConstants.NotificationsContainerName + "test", true);
     this.repository = new NotificationRepository(container);
     this.command = new GameActionNotificationCommand(this.repository);
 }
        public static void Initialize(TestContext context)
        {
            account = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
            var surveyStorage = new AzureBlobContainer <Survey>(account, SurveyContainer);

            surveyStorage.EnsureExistsAsync().Wait();
        }
Example #5
0
        private async Task AppendSurveyAnswerIdToSurveyAnswerListAsync(string slugName, string surveyAnswerId)
        {
            var SurveyAnswersListContainerName = "surveyanswerslist";

            if (string.IsNullOrWhiteSpace(slugName))
            {
                throw new ArgumentException($"{nameof(slugName)} cannot be null, empty, or only whitespace");
            }

            if (string.IsNullOrWhiteSpace(surveyAnswerId))
            {
                throw new ArgumentException($"{nameof(surveyAnswerId)} cannot be null, empty, or only whitespace");
            }

            var answerListContainer = new AzureBlobContainer <List <string> >(
                ServiceFabricConfiguration.GetCloudStorageAccount(), SurveyAnswersListContainerName);

            try
            {
                await SaveAsync(answerListContainer, slugName, surveyAnswerId);
            }
            catch (StorageException ex)
            {
                if (ex.Message.Contains("404"))
                {
                    await answerListContainer.EnsureExistsAsync();
                    await SaveAsync(answerListContainer, slugName, surveyAnswerId);
                }
                else
                {
                    throw ex;
                }
            }
        }
        public void AddOrUpdateUserSessionTest()
        {
            var users    = new AzureBlobContainer <UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer <UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends  = new AzureBlobContainer <Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target   = new UserRepository(users, sessions, friends);
            IAzureBlobContainer <UserSession> userSessionContainer = (IAzureBlobContainer <UserSession>)
                                                                     target.GetType().GetField("userSessionContainer", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(target);

            UserSession userSessionFirstVersion = new UserSession()
            {
                UserId = "johnny", ActiveGameQueueId = Guid.NewGuid()
            };

            target.AddOrUpdateUserSession(userSessionFirstVersion);
            var result = userSessionContainer.Get(userSessionFirstVersion.UserId);

            Assert.AreEqual(userSessionFirstVersion, result);

            UserSession userSessionSecondVersion = new UserSession()
            {
                UserId = userSessionFirstVersion.UserId, ActiveGameQueueId = Guid.NewGuid()
            };

            target.AddOrUpdateUserSession(userSessionSecondVersion);
            result = userSessionContainer.Get(userSessionFirstVersion.UserId);
            Assert.AreEqual(userSessionSecondVersion, result);
            Assert.AreNotEqual(userSessionFirstVersion, result);
        }
 public void AddOrUpdateUserWithNullUserTest()
 {
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var target = new UserRepository(users, sessions, friends);
     target.AddOrUpdateUser(null);
 }
        public static void Cleanup()
        {
            var azureBlobContainer = new AzureBlobContainer <string>(
                account,
                AzureBlobTestContainer);

            azureBlobContainer.DeleteContainerAsync().Wait();
        }
Example #9
0
        private static IAzureBlobContainer <byte[]> GetBlobContainer(CloudStorageAccount account, string containerName)
        {
            var container = new AzureBlobContainer <byte[]>(account, containerName);

            container.EnsureExist();

            return(container);
        }
Example #10
0
        public void Setup()
        {
            var account   = CloudStorageAccount.DevelopmentStorageAccount;
            var container = new AzureBlobContainer <NotificationStatus>(account, ConfigurationConstants.NotificationsContainerName + "test", true);

            this.repository = new NotificationRepository(container);
            this.command    = new GameActionNotificationCommand(this.repository);
        }
        public void GetUserWithEmptyIdTest()
        {
            var users    = new AzureBlobContainer <UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer <UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends  = new AzureBlobContainer <Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target   = new UserRepository(users, sessions, friends);

            target.GetUser(string.Empty);
        }
        public void AddOrUpdateUserWithNullUserTest()
        {
            var users    = new AzureBlobContainer <UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer <UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends  = new AzureBlobContainer <Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target   = new UserRepository(users, sessions, friends);

            target.AddOrUpdateUser(null);
        }
        public static void Initialize(TestContext context)
        {
            account = CloudStorageAccount.Parse("UseDevelopmentStorage=true");
            var azureBlobContainer = new AzureBlobContainer <string>(
                account,
                AzureBlobTestContainer);

            azureBlobContainer.EnsureExistsAsync().Wait();
        }
        public void GetUserTest()
        {
            var users    = new AzureBlobContainer <UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer <UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends  = new AzureBlobContainer <Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target   = new UserRepository(users, sessions, friends);

            Assert.IsNull(target.GetUser(Guid.NewGuid().ToString()));
        }
        public async Task GetReturnsNullWhenItDoesNotExist()
        {
            var storage           = new AzureBlobContainer <object>(account, SurveyContainer);
            var nonExistingObject = "id-for-non-existing-object";

            object actualObject = await storage.GetAsync(nonExistingObject);

            Assert.IsNull(actualObject);
        }
        public CertificateRepository(AzureTable<CertificateRow> certificateTable, AzureBlobContainer<byte[]> certificateBlobContainer, IWebSiteRepository webSiteRepository)
        {
            this.certificateTable = certificateTable;
            this.certificateBlobContainer = certificateBlobContainer;

            this.certificateTable.CreateIfNotExist();
            this.certificateBlobContainer.EnsureExist();

            this.webSiteRepository = webSiteRepository;
        }
        public void TestUri()
        {
            CloudBlobContainer container = _blobClient.GetContainerReference("container");

            container.CreateIfNotExists();

            AzureBlobContainer azureBlobContainer = new AzureBlobContainer(container);

            Assert.AreEqual(container.Uri.ToString(), azureBlobContainer.Uri);
        }
        public void TestJoningAndLeavingGameQueues()
        {
            FixedTimeProvider timeProvider = new FixedTimeProvider();
            TimeProvider.Current = timeProvider;
            DateTime startingDateTime = DateTime.Parse("01/01/2001 00:00:00");

            timeProvider.CurrentDateTime = startingDateTime;

            CloudStorageAccount cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;

            IGameRepository gameRepository = new GameRepository(null, null, null, null, null, null);

            UserProfile firstUser = new UserProfile() { Id = Guid.NewGuid().ToString(), DisplayName = "John" };
            UserProfile secondUser = new UserProfile() { Id = Guid.NewGuid().ToString(), DisplayName = "Peter" };

            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var userRepository = new UserRepository(users, sessions, friends);

            userRepository.AddOrUpdateUser(firstUser);
            userRepository.AddOrUpdateUser(secondUser);

            gameRepository.AddUserToSkirmishGameQueue(firstUser);

            GameQueue gameQueue = null;
            //// gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = firstUser.Id } } });
            Assert.AreEqual(gameQueue.TimeElapsed(), 60);

            timeProvider.CurrentDateTime = startingDateTime.AddSeconds(10);
            Assert.AreEqual(gameQueue.TimeElapsed(), 50);

            gameRepository.AddUserToSkirmishGameQueue(secondUser);
            //// gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = firstUser.Id }, new GameUser { UserId = secondUser.Id } } });
            Assert.AreEqual(gameQueue.TimeElapsed(), 50);

            timeProvider.CurrentDateTime = startingDateTime.AddSeconds(20);
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = firstUser.Id }, new GameUser { UserId = secondUser.Id } } });

            Assert.AreEqual(gameQueue.TimeElapsed(), 40);

            // gameRepository.RemoveUserFromGameQueue(firstUser, gameQueue, "Bored");
            // gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser> { new GameUser { UserId = secondUser.Id } } });
            Assert.AreEqual(gameQueue.TimeElapsed(), 40);

            timeProvider.CurrentDateTime = startingDateTime.AddSeconds(30);
            Assert.AreEqual(gameQueue.TimeElapsed(), 30);

            // gameRepository.RemoveUserFromGameQueue(secondUser, gameQueue, "Also Bored");
            // gameQueue = MagicallyGetGameQueues();
            Assert.AreEqual(gameQueue, new Game { CreationTime = startingDateTime, Id = gameQueue.Id, Users = new List<GameUser>() });
        }
Example #19
0
        public NestleDatabaseServer()
        {
            XDocument configuration = XDocument.Load("StorageConfiguration.xml");
            string    account       = configuration.Root.Element("account").Value;
            string    key           = configuration.Root.Element("key").Value;
            string    container     = configuration.Root.Element("container").Value;

            this.blobServer = AzureStorageFacade.ConnectBlobServer(AzureStorageFacade.CreateConnectionString(account, key));
            this.Bodies     = this.blobServer["nestle-topic-comment-bodies"];
            this.Bodies.CreateContainerIfNotExist().Sync();
        }
        public async Task SaveShouldStoreTheBlob()
        {
            var objId = Guid.NewGuid().ToString();

            var azureBlobContainer = new AzureBlobContainer <string>(
                account,
                AzureBlobTestContainer);
            await azureBlobContainer.SaveAsync(objId, "testText");

            Assert.IsNotNull(await azureBlobContainer.GetAsync(objId));
        }
Example #21
0
        private async Task SaveAsync(AzureBlobContainer <List <string> > answerListContainer, string slugName, string surveyAnswerId)
        {
            // NOTE: appending ID's into a blob doesn't scale well under heavy load. Other solution is left
            //       for the reader to implement.
            var answerIdList = await answerListContainer.GetAsync(slugName)
                               .ConfigureAwait(false) ?? new List <string>();

            answerIdList.Add(surveyAnswerId);
            await answerListContainer.SaveAsync(slugName, answerIdList)
            .ConfigureAwait(false);
        }
        public void TestName()
        {
            const string       containerName = "container";
            CloudBlobContainer container     = _blobClient.GetContainerReference(containerName);

            container.CreateIfNotExists();

            AzureBlobContainer azureBlobContainer = new AzureBlobContainer(container);

            Assert.AreEqual(containerName, azureBlobContainer.Name);
        }
        public void GetUriReturnsContainerUrl()
        {
            var objId = Guid.NewGuid().ToString();

            var azureBlobContainer = new AzureBlobContainer <string>(
                account,
                AzureBlobTestContainer);

            Assert.AreEqual($"http://127.0.0.1:10000/devstoreaccount1/{AzureBlobTestContainer}/{objId}",
                            azureBlobContainer.GetUri(objId).ToString());
        }
        public async Task TestGetDirectory()
        {
            CloudBlobContainer container = _blobClient.GetContainerReference("container");

            container.CreateIfNotExists();

            await CreateNonEmptyDirectory(container, "dir1");

            AzureBlobContainer azureBlobContainer = new AzureBlobContainer(container);

            Assert.AreEqual("dir1", (await azureBlobContainer.GetDirectory("dir1")).Name);
        }
        public async Task TestGetFile()
        {
            CloudBlobContainer container = _blobClient.GetContainerReference("container");

            container.CreateIfNotExists();

            await CreateEmptyBlob(container.GetBlockBlobReference("blob1"));

            AzureBlobContainer azureBlobContainer = new AzureBlobContainer(container);

            Assert.AreEqual("blob1", (await azureBlobContainer.GetFile("blob1")).Name);
        }
        public void GameRepositoryConstructor()
        {
            IAzureBlobContainer <Game>             gameContainer            = new AzureBlobContainer <Game>(this.cloudStorageAccount);
            IAzureQueue <SkirmishGameQueueMessage> skirmishGameMessageQueue = new AzureQueue <SkirmishGameQueueMessage>(this.cloudStorageAccount, skirmishGameMessageQueueName);
            IAzureQueue <LeaveGameMessage>         leaveGameMessageQueue    = new AzureQueue <LeaveGameMessage>(this.cloudStorageAccount, leaveGameMessageQueueName);

            ExceptionAssert.ShouldThrow <ArgumentNullException>(() => new GameRepository(null, null, null, null, null, null));
            ExceptionAssert.ShouldThrow <ArgumentNullException>(() => new GameRepository(gameContainer, null, null, null, null, null));
            ExceptionAssert.ShouldThrow <ArgumentNullException>(() => new GameRepository(null, null, skirmishGameMessageQueue, null, null, null));
            ExceptionAssert.ShouldThrow <ArgumentNullException>(() => new GameRepository(null, null, null, leaveGameMessageQueue, null, null));
            ExceptionAssert.ShouldThrow <ArgumentNullException>(() => new GameRepository(null, null, skirmishGameMessageQueue, leaveGameMessageQueue, null, null));
            ExceptionAssert.ShouldThrow <ArgumentNullException>(() => new GameRepository(gameContainer, null, null, leaveGameMessageQueue, null, null));
            ExceptionAssert.ShouldThrow <ArgumentNullException>(() => new GameRepository(gameContainer, null, skirmishGameMessageQueue, null, null, null));
        }
        public async Task TestExists()
        {
            CloudBlobContainer container = _blobClient.GetContainerReference("container");

            container.CreateIfNotExists();
            await CreateEmptyBlob(container.GetBlockBlobReference("blob1"));

            AzureBlobContainer azureBlobContainer = new AzureBlobContainer(container);

            Assert.IsTrue(await azureBlobContainer.Exists());

            container.Delete();
            Assert.IsFalse(await azureBlobContainer.Exists());
        }
 public void InitializeGameRepository()
 {
     this.cloudStorageAccount      = CloudStorageAccount.DevelopmentStorageAccount;
     this.skirmishGameMessageQueue = new AzureQueue <SkirmishGameQueueMessage>(this.cloudStorageAccount, skirmishGameMessageQueueName);
     this.leaveGameMessageQueue    = new AzureQueue <LeaveGameMessage>(this.cloudStorageAccount, leaveGameMessageQueueName);
     this.gameContainer            = new AzureBlobContainer <Game>(this.cloudStorageAccount, gameContainerName, true);
     this.gameQueueContainer       = new AzureBlobContainer <GameQueue>(this.cloudStorageAccount, gameQueueContainerName, true);
     this.userContainer            = new AzureBlobContainer <UserProfile>(this.cloudStorageAccount, userContainerName, true);
     this.inviteQueue    = new AzureQueue <InviteMessage>(this.cloudStorageAccount, inviteQueueName);
     this.gameRepository = new GameRepository(this.gameContainer, this.gameQueueContainer, this.skirmishGameMessageQueue, this.leaveGameMessageQueue, this.userContainer, this.inviteQueue);
     this.gameRepository.Initialize();
     this.skirmishGameMessageQueue.Clear();
     this.leaveGameMessageQueue.Clear();
 }
Example #29
0
        public void Setup()
        {
            int suffix  = (new Random()).Next(10000);
            var account = CloudStorageAccount.DevelopmentStorageAccount;

            this.notificationContainer = new AzureBlobContainer <NotificationStatus>(account, ConfigurationConstants.NotificationsContainerName + "test" + suffix, true);
            this.userContainer         = new AzureBlobContainer <UserProfile>(account, ConfigurationConstants.UsersContainerName + "test" + suffix, true);
            this.userSessionContainer  = new AzureBlobContainer <UserSession>(account, ConfigurationConstants.UserSessionsContainerName + "test" + suffix, true);
            this.friendsContainer      = new AzureBlobContainer <Friends>(account, ConfigurationConstants.FriendsContainerName + "test" + suffix, true);

            this.notificationRepository = new NotificationRepository(this.notificationContainer);
            this.userRepository         = new UserRepository(this.userContainer, this.userSessionContainer, this.friendsContainer);
            this.userRepository.Initialize();
            this.command = new InviteCommand(this.notificationRepository, this.userRepository);
        }
        public void Setup()
        {
            int suffix = (new Random()).Next(10000);
            var account = CloudStorageAccount.DevelopmentStorageAccount;

            this.notificationContainer = new AzureBlobContainer<NotificationStatus>(account, ConfigurationConstants.NotificationsContainerName + "test" + suffix, true);
            this.userContainer = new AzureBlobContainer<UserProfile>(account, ConfigurationConstants.UsersContainerName + "test" + suffix, true);
            this.userSessionContainer = new AzureBlobContainer<UserSession>(account, ConfigurationConstants.UserSessionsContainerName + "test" + suffix, true);
            this.friendsContainer = new AzureBlobContainer<Friends>(account, ConfigurationConstants.FriendsContainerName + "test" + suffix, true);

            this.notificationRepository = new NotificationRepository(this.notificationContainer);
            this.userRepository = new UserRepository(this.userContainer, this.userSessionContainer, this.friendsContainer);
            this.userRepository.Initialize();
            this.command = new InviteCommand(this.notificationRepository, this.userRepository);
        }
        public void LeaveUserFromGameTest()
        {
            Game game        = this.FrancisGabrielDonAndLukeGame();
            var  francisUser = new UserProfile {
                Id = Guid.NewGuid().ToString(), DisplayName = "Francis"
            };
            var users          = new AzureBlobContainer <UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions       = new AzureBlobContainer <UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends        = new AzureBlobContainer <Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var userRepository = new UserRepository(users, sessions, friends);

            userRepository.AddOrUpdateUser(francisUser);
            this.gameRepository.AddOrUpdateGame(game);
            this.gameRepository.LeaveUserFromGame(francisUser.Id, game.Id);
        }
 public void TestInitialize()
 {
     target = new SurveyManagementService(null,
                                          (tableName) => {
         var azureTable = new AzureTable <Models.SurveyInformationRow>(account, tableName);
         azureTable.EnsureExistsAsync().Wait();
         return(azureTable);
     },
                                          (containerName) => {
         azureBlobContainer = new AzureBlobContainer <Models.Survey>(
             account,
             containerName);
         azureBlobContainer.EnsureExistsAsync().Wait();
         return(azureBlobContainer);
     });
 }
        public async Task TestFiles()
        {
            CloudBlobContainer container = _blobClient.GetContainerReference("container");

            container.CreateIfNotExists();

            await Task.WhenAll(
                CreateEmptyBlob(container.GetBlockBlobReference("blob1")),
                CreateEmptyBlob(container.GetBlockBlobReference("blob2")));

            AzureBlobContainer   azureBlobContainer = new AzureBlobContainer(container);
            IEnumerable <string> files = (await azureBlobContainer.ListFiles()).Select(d => d.Name);

            Assert.AreEqual(2, files.Count());
            Assert.IsTrue(files.Contains("blob1"));
            Assert.IsTrue(files.Contains("blob2"));
        }
        public async Task GetBlobListReturnsAllBlobsInContainer()
        {
            var objId1 = Guid.NewGuid().ToString();
            var objId2 = Guid.NewGuid().ToString();

            var azureBlobContainer = new AzureBlobContainer <string>(
                account,
                AzureBlobTestContainer);
            await azureBlobContainer.SaveAsync(objId1, "testText");

            await azureBlobContainer.SaveAsync(objId2, "testText");

            var blobList = azureBlobContainer.GetBlobList().Select(b => b.Name).ToList();

            CollectionAssert.Contains(blobList, objId1);
            CollectionAssert.Contains(blobList, objId2);
        }
Example #35
0
        public async Task Create_Container_And_SaveToIt_Immetiately()
        {
            var blobContainer = new AzureBlobContainer(_context, "new-test-container");

            try {
                var blobName     = "test-blob";
                var dataToUpload = "Some testing data";
                await blobContainer.UploadStringAsync(blobName, dataToUpload);

                var downloadedData = await blobContainer.DownloadStringAsync(blobName);

                Assert.AreEqual(dataToUpload, downloadedData);
            }
            finally {
                await blobContainer.DeleteContainerAsync();
            }
        }
        public void AddOrUpdateUserTest()
        {
            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target = new UserRepository(users, sessions, friends);
            string userID = Guid.NewGuid().ToString();
            UserProfile userFirstVersion = new UserProfile() { Id = userID, DisplayName = "John" };
            target.AddOrUpdateUser(userFirstVersion);
            Assert.AreEqual(userFirstVersion, target.GetUser(userID));

            UserProfile otherUser = new UserProfile() { Id = Guid.NewGuid().ToString(), DisplayName = "Peter" };
            target.AddOrUpdateUser(otherUser);
            Assert.AreEqual(otherUser, target.GetUser(otherUser.Id));

            UserProfile userSecondVersion = new UserProfile() { Id = userID, DisplayName = "Johny" };
            Assert.AreEqual(userSecondVersion, target.GetUser(userID));
        }
Example #37
0
        public override bool OnStart()
        {
            // For information on handling configuration changes
            // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357.

            CloudStorageAccount.SetConfigurationSettingPublisher(
              (name, publisher) =>
              {
                  var connectionString = RoleEnvironment.GetConfigurationSettingValue(name);
                  publisher(connectionString);
              }
            );

            var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
            AzureQueue<UserRegistrationMessage> queue = new AzureQueue<UserRegistrationMessage>(account);
            queue.EnsureExist();

            AzureBlobContainer<RegistrationTokenEntity> registrationBlob = new AzureBlobContainer<RegistrationTokenEntity>(account, true);
            registrationBlob.EnsureExist();

            // We could do the 'worker role' portion here aslo
            //Task.Factory.StartNew(() =>
            //{
            //    while (true)
            //    {
            //        try
            //        {
            //            var message = queue.GetMessage();
            //            if (message != null)
            //            {
            //                var entity = new RegistrationTokenEntity();
            //                entity.RegistrationToken = (new Random()).Next().ToString();
            //                registrationBlob.Save(message.ContainerId, entity);
            //                queue.DeleteMessage(message);
            //            }
            //        }
            //        catch { }
            //        Thread.Sleep(5000);
            //    }
            //});

            return base.OnStart();
        }
        public void AddOrUpdateUserSessionTest()
        {
            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target = new UserRepository(users, sessions, friends);
            IAzureBlobContainer<UserSession> userSessionContainer = (IAzureBlobContainer<UserSession>)
                target.GetType().GetField("userSessionContainer", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(target);

            UserSession userSessionFirstVersion = new UserSession() { UserId = "johnny", ActiveGameQueueId = Guid.NewGuid() };
            target.AddOrUpdateUserSession(userSessionFirstVersion);
            var result = userSessionContainer.Get(userSessionFirstVersion.UserId);
            Assert.AreEqual(userSessionFirstVersion, result);

            UserSession userSessionSecondVersion = new UserSession() { UserId = userSessionFirstVersion.UserId, ActiveGameQueueId = Guid.NewGuid() };
            target.AddOrUpdateUserSession(userSessionSecondVersion);
            result = userSessionContainer.Get(userSessionFirstVersion.UserId);
            Assert.AreEqual(userSessionSecondVersion, result);
            Assert.AreNotEqual(userSessionFirstVersion, result);
        }
Example #39
0
        public ActionResult Register(RegisterModel model)
        {
            AzureQueue<UserRegistrationMessage> queue = new AzureQueue<UserRegistrationMessage>(account);
            AzureBlobContainer<RegistrationTokenEntity> registrationBlob = new AzureBlobContainer<RegistrationTokenEntity>(account, true);

            var containerId = Guid.NewGuid().ToString();
            registrationBlob.Save(containerId, new RegistrationTokenEntity
            {
                RegistrationToken = null,
            });
            var blobContainer = registrationBlob.GetSharedAccessSignature(containerId, DateTime.Now.AddHours(1));

            queue.AddMessage(new UserRegistrationMessage
            {
                DateOfBirth = model.DateOfBirth,
                Email = model.Email,
                FirstName = model.FirstName,
                LastName = model.LastName,
                ContainerId = containerId,
            });

            return Json(new { container = blobContainer });
        }
Example #40
0
        public override void Run()
        {
            // This is a sample worker implementation. Replace with your logic.
            Trace.WriteLine("WorkerRole1 entry point called", "Information");

            CloudStorageAccount.SetConfigurationSettingPublisher(
              (name, publisher) =>
              {
                  var connectionString = RoleEnvironment.GetConfigurationSettingValue(name);
                  publisher(connectionString);
              }
            );

            var account = CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
            AzureQueue<UserRegistrationMessage> queue = new AzureQueue<UserRegistrationMessage>(account);
            queue.EnsureExist();

            AzureBlobContainer<RegistrationTokenEntity> registrationBlob = new AzureBlobContainer<RegistrationTokenEntity>(account, "registrationtoken", true);
            registrationBlob.EnsureExist(true);

            while (true)
            {
                try
                {
                    var message = queue.GetMessage();
                    if (message != null)
                    {
                        var entity = new RegistrationTokenEntity();
                        entity.RegistrationToken = (new Random()).Next().ToString();
                        registrationBlob.Save(message.RegistratoinId, entity);
                        queue.DeleteMessage(message);
                    }
                }
                catch { }
                Thread.Sleep(5000);
            }
        }
 public void InitializeGameRepository()
 {
     this.cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;
     this.notificationsContainer = new AzureBlobContainer<NotificationStatus>(this.cloudStorageAccount, ConfigurationConstants.NotificationsContainerName + "test", true);
     this.notificationRepository = new NotificationRepository(this.notificationsContainer);
 }
        public void FailedAddOrUpdateUserSessionTest()
        {
            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target = new UserRepository(users, sessions, friends);

            UserSession userSessionFirstVersion = new UserSession() { UserId = null, ActiveGameQueueId = Guid.NewGuid() };
            ExceptionAssert.ShouldThrow<ArgumentException>(() => target.AddOrUpdateUserSession(userSessionFirstVersion));

            UserSession userSessionSecondVersion = new UserSession() { UserId = string.Empty, ActiveGameQueueId = Guid.NewGuid() };
            ExceptionAssert.ShouldThrow<ArgumentException>(() => target.AddOrUpdateUserSession(userSessionSecondVersion));
        }
 public void GameRepositoryConstructor()
 {
     IAzureBlobContainer<Game> gameContainer = new AzureBlobContainer<Game>(this.cloudStorageAccount);
     IAzureQueue<SkirmishGameQueueMessage> skirmishGameMessageQueue = new AzureQueue<SkirmishGameQueueMessage>(this.cloudStorageAccount, skirmishGameMessageQueueName);
     IAzureQueue<LeaveGameMessage> leaveGameMessageQueue = new AzureQueue<LeaveGameMessage>(this.cloudStorageAccount, leaveGameMessageQueueName);
     ExceptionAssert.ShouldThrow<ArgumentNullException>(() => new GameRepository(null, null, null, null, null, null));
     ExceptionAssert.ShouldThrow<ArgumentNullException>(() => new GameRepository(gameContainer, null, null, null, null, null));
     ExceptionAssert.ShouldThrow<ArgumentNullException>(() => new GameRepository(null, null, skirmishGameMessageQueue, null, null, null));
     ExceptionAssert.ShouldThrow<ArgumentNullException>(() => new GameRepository(null, null, null, leaveGameMessageQueue, null, null));
     ExceptionAssert.ShouldThrow<ArgumentNullException>(() => new GameRepository(null, null, skirmishGameMessageQueue, leaveGameMessageQueue, null, null));
     ExceptionAssert.ShouldThrow<ArgumentNullException>(() => new GameRepository(gameContainer, null, null, leaveGameMessageQueue, null, null));
     ExceptionAssert.ShouldThrow<ArgumentNullException>(() => new GameRepository(gameContainer, null, skirmishGameMessageQueue, null, null, null));
 }
 public void InitializeGameRepository()
 {
     this.cloudStorageAccount = CloudStorageAccount.DevelopmentStorageAccount;
     this.skirmishGameMessageQueue = new AzureQueue<SkirmishGameQueueMessage>(this.cloudStorageAccount, skirmishGameMessageQueueName);
     this.leaveGameMessageQueue = new AzureQueue<LeaveGameMessage>(this.cloudStorageAccount, leaveGameMessageQueueName);
     this.gameContainer = new AzureBlobContainer<Game>(this.cloudStorageAccount, gameContainerName, true);
     this.gameQueueContainer = new AzureBlobContainer<GameQueue>(this.cloudStorageAccount, gameQueueContainerName, true);
     this.userContainer = new AzureBlobContainer<UserProfile>(this.cloudStorageAccount, userContainerName, true);
     this.inviteQueue = new AzureQueue<InviteMessage>(this.cloudStorageAccount, inviteQueueName);
     this.gameRepository = new GameRepository(this.gameContainer, this.gameQueueContainer, this.skirmishGameMessageQueue, this.leaveGameMessageQueue, this.userContainer, this.inviteQueue);
     this.gameRepository.Initialize();
     this.skirmishGameMessageQueue.Clear();
     this.leaveGameMessageQueue.Clear();
 }
 public void GetUserWithEmptyIdTest()
 {
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var target = new UserRepository(users, sessions, friends);
     target.GetUser(string.Empty);
 }
 public void GetUserTest()
 {
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var target = new UserRepository(users, sessions, friends);
     Assert.IsNull(target.GetUser(Guid.NewGuid().ToString()));
 }
 public void GetUserReferenceTimeOutTest()
 {
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var target = new UserRepository(users, sessions, friends);
     string userID = Guid.NewGuid().ToString();
     UserProfile userFirstVersion = new UserProfile() { Id = userID, DisplayName = "John" };
     target.AddOrUpdateUser(userFirstVersion);
     TimeSpan timeSpan = TimeSpan.FromSeconds(1);
     string address = target.GetUserReference(userID, timeSpan);
     System.Threading.Thread.Sleep(timeSpan.Add(TimeSpan.FromSeconds(1)));
     System.Net.WebClient webClient = new System.Net.WebClient();
     string data = webClient.DownloadString(address);
 }
        public void GetUserReferenceTest()
        {
            var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
            var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
            var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
            var target = new UserRepository(users, sessions, friends);
            var userID = Guid.NewGuid().ToString();
            var userFirstVersion = new UserProfile() { Id = userID, DisplayName = "John" };
            target.AddOrUpdateUser(userFirstVersion);
            string address = target.GetUserReference(userID, TimeSpan.FromSeconds(10));
            var webClient = new WebClient();
            string data = webClient.DownloadString(address);

            var serialized = this.Serialized(userFirstVersion, true);

            Assert.AreEqual("sgusers" + serialized, data);
        }
 public void LeaveUserFromGameTest()
 {
     Game game = this.FrancisGabrielDonAndLukeGame();
     var francisUser = new UserProfile { Id = Guid.NewGuid().ToString(), DisplayName = "Francis" };
     var users = new AzureBlobContainer<UserProfile>(CloudStorageAccount.DevelopmentStorageAccount);
     var sessions = new AzureBlobContainer<UserSession>(CloudStorageAccount.DevelopmentStorageAccount);
     var friends = new AzureBlobContainer<Friends>(CloudStorageAccount.DevelopmentStorageAccount);
     var userRepository = new UserRepository(users, sessions, friends);
     userRepository.AddOrUpdateUser(francisUser);
     this.gameRepository.AddOrUpdateGame(game);
     this.gameRepository.LeaveUserFromGame(francisUser.Id, game.Id);
 }
        public void Setup()
        {
            this.webSiteTable = new AzureTable<WebSiteRow>(CloudStorageAccount.DevelopmentStorageAccount, "WebSitesTest");
            this.bindingTable = new AzureTable<BindingRow>(CloudStorageAccount.DevelopmentStorageAccount, "BindingsTest");
            this.webSiteTable.CreateIfNotExist();
            this.bindingTable.CreateIfNotExist();
            this.webSiteRepository = new WebSiteRepository(this.webSiteTable, this.bindingTable);

            this.certificateTable = new AzureTable<CertificateRow>(CloudStorageAccount.DevelopmentStorageAccount, "CertificatesTest");
            this.certificateTable.CreateIfNotExist();
            this.certificateBlobContainer = new AzureBlobContainer<byte[]>(CloudStorageAccount.DevelopmentStorageAccount, "CertificatesTest");
            this.certificateBlobContainer.EnsureExist();
            this.certificateRepository = new CertificateRepository(this.certificateTable, this.certificateBlobContainer, this.webSiteRepository);
        }
Example #51
0
        private static IAzureBlobContainer<byte[]> GetBlobContainer(CloudStorageAccount account, string containerName)
        {
            var container = new AzureBlobContainer<byte[]>(account, containerName);
            container.EnsureExist();

            return container;
        }