public void AddOrUpdateUserSession(UserSession userSession) { if (string.IsNullOrWhiteSpace(userSession.UserId)) { throw new ArgumentException("User Id cannot be empty"); } this.userSessionContainer.Save(userSession.UserId, userSession); }
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 Do(IDictionary<string, object> context) { var userId = context["userId"].ToString(); var gameId = new Guid(context["gameId"].ToString()); if (!string.IsNullOrWhiteSpace(userId)) { var userSession = new UserSession { UserId = userId, ActiveGameQueueId = Guid.Empty }; this.userRepository.AddOrUpdateUserSession(userSession); } var game = this.gameRepository.GetGame(gameId); if (game != null) { if (game.Users.RemoveAll(u => u.UserId == userId) > 0) { this.gameRepository.AddOrUpdateGame(game); } } else { // gameId parameter is the gameQueueId var gameQueue = this.gameRepository.GetGameQueue(gameId); if (gameQueue != null) { if (gameQueue.Users.RemoveAll(u => u.UserId == userId) > 0) { this.gameRepository.AddOrUpdateGameQueue(gameQueue); } } } }
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 bool Equals(UserSession userSession) { return this.UserId == userSession.UserId && this.ActiveGameQueueId == userSession.ActiveGameQueueId; }
public HttpResponseMessage Queue(HttpRequestMessage request) { dynamic formContent = request.Content.ReadAsAsync<JsonValue>().Result; GameType gameType; if (!Enum.TryParse<GameType>(formContent.gameType.Value, true, out gameType)) { return BadRequest("Invalid gameType parameter"); } try { // Update userSession blob var userSession = new UserSession { UserId = CurrentUserId, ActiveGameQueueId = Guid.Empty }; this.userRepository.AddOrUpdateUserSession(userSession); this.gameRepository.AddUserToGameQueue(CurrentUserId, gameType); } catch (Exception ex) { return BadRequest(ex.Message); } return SuccessResponse; }