コード例 #1
0
        public async Task RegistrationSuccessful()
        {
            var password = "******";

            _passwordGenerator.Setup(g => g.GeneratePassword())
            .Returns(password);

            _userManager.Setup(um => um.CreateAsync(It.IsAny <ApplicationUser>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Success);

            var request = new BatchRegisterRequest
            {
                StartIndex = 0,
                EndIndex   = 10,
                Prefix     = "pr"
            };

            var result = await _controller.Register(request);

            var registeredUsers = result.Value.GeneratedPasswords;

            Assert.Equal(11, registeredUsers.Count());
            Assert.Equal(11, result.Value.GeneratedCount);
            foreach (var user in registeredUsers)
            {
                Assert.Equal(4, user.UserName.Length);
                Assert.StartsWith(request.Prefix, user.UserName);

                Assert.Equal(password, user.Password);
            }
        }
コード例 #2
0
        public async Task WrongPrefix(string prefix)
        {
            var request = new BatchRegisterRequest
            {
                StartIndex = 1,
                EndIndex   = 2,
                Prefix     = prefix
            };

            var result = await _controller.Register(request);

            var badRequest = result.Result as BadRequestObjectResult;
            var error      = badRequest.Value as string;

            Assert.Equal(nameof(request.Prefix), error);
        }
コード例 #3
0
        public async Task RegistrationFailed()
        {
            var password = "******";

            _passwordGenerator.Setup(g => g.GeneratePassword())
            .Returns(password);

            var identityError = new IdentityError();

            _userManager.SetupSequence(um => um.CreateAsync(It.IsAny <ApplicationUser>(), It.IsAny <string>()))
            .ReturnsAsync(IdentityResult.Success)
            .ReturnsAsync(IdentityResult.Success)
            .ReturnsAsync(IdentityResult.Failed(identityError))
            .ReturnsAsync(IdentityResult.Success);

            var request = new BatchRegisterRequest
            {
                StartIndex = 1,
                EndIndex   = 10,
                Prefix     = "pr"
            };

            var result = await _controller.Register(request);

            var registeredUsers = result.Value.GeneratedPasswords;
            var errors          = result.Value.Errors;

            Assert.Single(errors);
            Assert.Equal(identityError, errors.Single());

            Assert.Equal(2, registeredUsers.Count());
            Assert.Equal(2, result.Value.GeneratedCount);
            var users = registeredUsers.ToArray();

            Assert.Equal("pr01", users[0].UserName);
            Assert.Equal(password, users[0].Password);
            Assert.Equal("pr02", users[1].UserName);
            Assert.Equal(password, users[1].Password);
        }
コード例 #4
0
        public async Task <ActionResult <BatchRegisterResponse> > Register(BatchRegisterRequest request)
        {
            if (request.StartIndex < 0)
            {
                return(BadRequest(nameof(request.StartIndex)));
            }

            if (request.EndIndex < request.StartIndex)
            {
                return(BadRequest(nameof(request.EndIndex)));
            }

            if (string.IsNullOrEmpty(request.Prefix))
            {
                return(BadRequest(nameof(request.Prefix)));
            }

            var numberCount = (int)MathF.Floor(MathF.Log10(request.EndIndex) + 1);
            var format      = request.Prefix + "{0:" + new string('0', numberCount) + "}";

            var users = new List <PasswordResponse>(request.EndIndex - request.StartIndex + 1);

            for (var i = request.StartIndex; i <= request.EndIndex; i++)
            {
                var userName = string.Format(format, i);
                var password = _passwordGenerator.GeneratePassword();

                var user = new ApplicationUser
                {
                    Id       = Guid.NewGuid().ToString(),
                    UserName = userName
                };

                var result = await _userManager.CreateAsync(user, password);

                if (result.Succeeded)
                {
                    users.Add(new PasswordResponse
                    {
                        Id       = user.Id,
                        UserName = user.UserName,
                        Password = password
                    });
                }
                else
                {
                    var errorResponse = new BatchRegisterResponse
                    {
                        Errors             = result.Errors,
                        GeneratedPasswords = users
                    };

                    return(errorResponse);
                }
            }

            var response = new BatchRegisterResponse
            {
                GeneratedPasswords = users
            };

            return(response);
        }