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); } }
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); }
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); }
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); }