예제 #1
0
        public async Task <IActionResult> BlockAccount(BlockAccountRequest request)
        {
            var response = await mediator.Send(request);

            Log.Information($"User #{HttpContext.GetCurrentUserId()} blocked account #{request.AccountId}");

            return(this.CreateResponse(response));
        }
예제 #2
0
        public async Task <IActionResult> BlockAccount(BlockAccountRequest request)
        {
            var response = await mediator.Send(request);

            logger.LogResponse(
                $"Admin #{HttpContext.GetCurrentUserId()} changed block status for user #{request.UserId} to: {(response.IsBlocked ? "BLOCKED" : "NOT_BLOCKED")}",
                response.Error);

            return(this.CreateResponse(response));
        }
예제 #3
0
 private IEnumerable <Ban> InitBans(BlockAccountRequest request)
 => request.Serials.Select(serial => new BanBuilder()
                           .BanAccount(request.AccountId)
                           .BanSerial(serial)
                           .ByAdmin(httpContextReader.CurrentUserId)
                           .SetReason(request.Reason)
                           .Build())
 .Concat(request.Ips.Select(ip => new BanBuilder()
                            .BanAccount(request.AccountId)
                            .BanIp(ip)
                            .ByAdmin(httpContextReader.CurrentUserId)
                            .SetReason(request.Reason)
                            .Build()));
예제 #4
0
        public async Task <bool> BlockAccount(BlockAccountRequest request)
        {
            if (!await rolesService.IsPermitted(httpContextReader.CurrentUserId, Constants.AllOwnersRoles))
            {
                throw new NoPermissionsException(ErrorMessages.NotAllowedMessage);
            }

            var bansToInsert = InitBans(request).ToList();

            return(await InsertBansInTransaction(bansToInsert, request.AccountId)
                ? true
                : throw new DatabaseException(ErrorMessages.DatabaseTransactionErrorMessage));
        }
예제 #5
0
        public void SetUp()
        {
            user    = new User();
            request = new BlockAccountRequest
            {
                AccountId = 1,
                Reason    = It.IsNotNull <string>(),
                Serials   = new List <string> {
                    "1", "2"
                },
                Ips = new List <string> {
                    "1", "2"
                }
            };

            var gameItems = new List <GameItem> {
                new GameItem()
            };

            database          = new Mock <IDatabase>();
            banService        = new Mock <IBanService>();
            serialService     = new Mock <IReadOnlySerialService>();
            roleService       = new Mock <IRolesService>();
            httpContextReader = new Mock <IHttpContextReader>();

            database.Setup(d => d.BeginTransaction()).Returns(new DatabaseTransaction());
            database.Setup(d => d.UserRepository.FindById(It.IsAny <int>())).ReturnsAsync(user);
            database.Setup(d => d.UserRepository.Update(It.IsAny <User>())).ReturnsAsync(true);
            database.Setup(d => d.UserRepository.GetUserWithCharacters(It.IsNotNull <int>())).ReturnsAsync(user);
            database.Setup(d => d.GameItemRepository.GetAccountItems(It.IsNotNull <IEnumerable <int> >()))
            .ReturnsAsync(gameItems);
            database.Setup(d => d.CharacterRepository.DeleteRange(It.IsNotNull <IEnumerable <Character> >()))
            .ReturnsAsync(true);
            database.Setup(d => d.EstateRepository.DeleteRange(It.IsNotNull <IEnumerable <Estate> >())).ReturnsAsync(true);
            database.Setup(d => d.VehicleRepository.DeleteRange(It.IsNotNull <IEnumerable <Vehicle> >()))
            .ReturnsAsync(true);
            database.Setup(d => d.GameItemRepository.DeleteRange(It.IsNotNull <IEnumerable <GameItem> >()))
            .ReturnsAsync(true);

            banService.Setup(bs => bs.AddBan(It.IsNotNull <Ban>())).ReturnsAsync(new Ban());

            serialService.Setup(ss => ss.SerialExists(It.IsNotNull <string>(), It.IsNotNull <int>()))
            .ReturnsAsync(true);

            roleService.Setup(rs => rs.IsPermitted(It.IsNotNull <int>(), Constants.AllOwnersRoles))
            .ReturnsAsync(true);

            userManager = new UserManager(database.Object, banService.Object, serialService.Object, roleService.Object,
                                          httpContextReader.Object);
        }
예제 #6
0
        public void SetUp()
        {
            request = new BlockAccountRequest();

            userManager = new Mock <IUserManager>();
            var httpContextReader = new Mock <IHttpContextReader>();
            var notifier          = new Mock <INotifier>();
            var hubManager        = new Mock <IHubManager <NotifierHub> >();
            var mapper            = new Mock <IMapper>();

            userManager.Setup(um => um.BlockAccount(It.IsNotNull <BlockAccountRequest>()))
            .ReturnsAsync(true);

            blockAccountCommand = new BlockAccountCommand(userManager.Object, httpContextReader.Object, notifier.Object, hubManager.Object, mapper.Object);
        }