Ejemplo n.º 1
0
        public void TestRemove()
        {
            var camId       = 1;
            var isUserValid = true;
            var camUser     = new User
            {
                PrincipalId = camId,
            };
            var user = new SimpleUser
            {
                Id = Guid.NewGuid()
            };
            var testService = new UserCacheService(cache.Object, expectedTimeToLive);

            Assert.AreEqual(0, testService.GetCount());
            Assert.AreEqual(0, cacheDictionary.Count);

            var userCache = new UserCache(user, camUser, isUserValid, new List <IPermission>());

            testService.Add(userCache);
            Assert.AreEqual(1, testService.GetCount());
            Assert.AreEqual(1, cacheDictionary.Count);

            testService.Remove(user);
            Assert.AreEqual(0, testService.GetCount());
            Assert.AreEqual(0, cacheDictionary.Count);
        }
Ejemplo n.º 2
0
        public void Should_return_false_when_parameters_are_missing_or_invalid(string key)
        {
            // Given
            var userCacheService = new UserCacheService();

            // When
            var success = userCacheService.Remove(key);

            // Then
            success.ShouldBe(false);
        }
Ejemplo n.º 3
0
        public async Task AnswerInlineKeyboard(ITelegramBotClient client, User from, Message message, string answer, CancellationToken cancellationToken)
        {
            var tasks = new List <Task>(2);

            tasks.Add(
                client.EditMessageTextAsync(message.Chat.Id, message.MessageId, string.Format(L10n.strings.InlineQueryAnswerMessage, message.Text, answer), parseMode: ParseMode.Markdown, cancellationToken: cancellationToken)
                );
            tasks.Add(_session.RemoveAsync(message.Chat.Id, cancellationToken));

            if (answer != L10n.strings.YesKeyword)
            {
                await Task.WhenAll(tasks); return;
            }

            tasks.Add(
                client.SendTextMessageAsync(message.Chat.Id, L10n.strings.StoppedBotMessage, cancellationToken: cancellationToken)
                );

            var user = await _userRepository.GetByIdentifierAsync(from.Id, cancellationToken);

            if (user.Identifier != from.Id)
            {
                var authorizedUser = user.AuthorizedUsers.Single(x => x.Identifier == from.Id);
                user.AuthorizedUsers.Remove(authorizedUser);
                _userCache.AddOrUpdate(user);
                tasks.Add(_userRepository.RemoveAuthorizedUserAsync(user.Identifier, authorizedUser, cancellationToken));
            }
            else
            {
                _userCache.Remove(user.Identifier);
                tasks.Add(_userRepository.DeleteAsync(user.Identifier, cancellationToken));
                tasks.Add(_packagesRepository.DeleteByUsernameAsync(user.Username, cancellationToken));
                if (user.AuthorizedUsers?.Any() == true)
                {
                    tasks.Add(
                        client.SendTextMessageAsync(message.Chat.Id, L10n.strings.StoppedBotFollowUpMessage, cancellationToken: cancellationToken)
                        );
                }

                foreach (var authorizedUser in user.AuthorizedUsers)
                {
                    tasks.Add(
                        client.SendTextMessageAsync(
                            authorizedUser.ChatIdentifier,
                            string.Format(L10n.strings.StoppedBotAuthorizedUsersMessage, user.Username),
                            cancellationToken: cancellationToken
                            )
                        );
                }
            }

            await Task.WhenAll(tasks);
        }
        /// <summary>
        /// Logs out the current authenticated user.
        /// </summary>
        /// <remarks>Handles cookie authentication, and also user cache memory.</remarks>
        public async Task LogoutAsync()
        {
            // Removes the user from cache:
            int?userId = _httpContextAccessor.HttpContext.User.Identity.GetId();

            if (userId.HasValue)
            {
                _userCache.Remove(userId.Value);
            }

            await _httpContextAccessor.HttpContext.SignOutAsync(CookieAuthenticationDefaults.AuthenticationScheme);
        }
Ejemplo n.º 5
0
        public void TestRemove_NoUsers()
        {
            var testService = new UserCacheService(cache.Object, expectedTimeToLive);

            Assert.AreEqual(0, testService.GetCount());
            Assert.AreEqual(0, cacheDictionary.Count);

            testService.Remove(new SimpleUser {
                Id = Guid.NewGuid()
            });
            Assert.AreEqual(0, testService.GetCount());
            Assert.AreEqual(0, cacheDictionary.Count);
        }
Ejemplo n.º 6
0
        public void Should_return_success_is_true_when_removing_known_key()
        {
            // Given
            var user = new User()
            {
                Id = MakeFake.Guid
            };
            var userCacheService = new UserCacheService();
            var key = userCacheService.Add(user);

            // When
            var success = userCacheService.Remove(key);

            // Then
            success.ShouldBe(true);
        }
Ejemplo n.º 7
0
        public void Should_return_success_is_false_when_key_is_unknown()
        {
            // Given
            var user = new User()
            {
                Id = MakeFake.Guid
            };
            var unknownKey       = MakeFake.Guid;
            var userCacheService = new UserCacheService();
            var key = userCacheService.Add(user);

            // When
            var success = userCacheService.Remove(unknownKey);

            // Then
            success.ShouldBe(false);
        }
Ejemplo n.º 8
0
        public void Should_return_null_user_after_user_is_removed()
        {
            // Given
            var userId           = MakeFake.Guid;
            var userCacheService = new UserCacheService();
            var key = userCacheService.Add(new User()
            {
                Id = userId
            });

            // When
            userCacheService.Remove(key);
            var user = userCacheService.GetUser(key);

            // Then
            user.ShouldBe(null);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Deletes the specified user.
        /// </summary>
        /// <param name="userId">The id of the user to delete.</param>
        /// <returns>Returns true if the delete has succeeded, otherwise false.</returns>
        public async Task <bool> DeleteUser(int userId)
        {
            User user = await this.GetByIdAsync(userId);

            if (user.ClientCartId.HasValue)
            {
                ClientCart cart = await _dbContext.ClientCarts.FindAsync(user.ClientCartId.Value);

                _dbContext.ClientCarts.Remove(cart);
            }
            if (user.Address != null)
            {
                _dbContext.Addresses.Remove(user.Address);
            }
            _dbContext.Users.Remove(user);
            await _dbContext.SaveChangesAsync();

            _userCache.Remove(user.Id);
            return(true);
        }
Ejemplo n.º 10
0
        public void TestRemove_MultipleUsers()
        {
            var camId1          = 1;
            var camId2          = 2;
            var isCamUser1Valid = true;
            var isCamUser2Valid = true;
            var camUser1        = new User
            {
                PrincipalId = camId1,
            };
            var camUser2 = new User
            {
                PrincipalId = camId2,
            };
            var user1 = new SimpleUser
            {
                Id = Guid.NewGuid()
            };
            var user2 = new SimpleUser
            {
                Id = Guid.NewGuid()
            };
            var testService = new UserCacheService(cache.Object, expectedTimeToLive);

            Assert.AreEqual(0, testService.GetCount());
            Assert.AreEqual(0, cacheDictionary.Count);

            var userCache1 = new UserCache(user1, camUser1, isCamUser1Valid, new List <IPermission>());
            var userCache2 = new UserCache(user2, camUser2, isCamUser2Valid, new List <IPermission>());

            testService.Add(userCache1);
            testService.Add(userCache2);
            Assert.AreEqual(2, testService.GetCount());
            Assert.AreEqual(2, cacheDictionary.Count);

            testService.Remove(user1);
            Assert.AreEqual(1, testService.GetCount());
            Assert.AreEqual(1, cacheDictionary.Count);
            Assert.IsTrue(cacheDictionary.ContainsKey(testService.GetKey(user2)));
            Assert.AreEqual(1, testService.GetCount());
        }