public ActionResult <UserDTO> Post([FromBody] UserFormDTO userForm) { if (null != _userService.Get(u => u.Name == userForm.Name).FirstOrDefault()) { return(Conflict(new { error = "User alredy exist!" })); } var role = _roleService.Get(r => r.Name == userForm.Role.ToLower()).FirstOrDefault(); if (null == role) { return(BadRequest(new { error = "Role does not exist" })); } UserModel user = new UserModel() { Name = userForm.Name, RoleId = role.Id, CreatedAt = DateTime.UtcNow, Salt = PasswordManager.GenerateSalt(userForm.Name) }; user.Passhash = PasswordManager.GeneratePasshash(user.Salt, userForm.Password); return(Created("", _mapper.Map <UserDTO>(_userService.Create(user)))); }
public void Should_Be_OK_When_Post() { var fakeContext = new FakeContext(); fakeContext.FillWith <UserModel>(); fakeContext.FillWith <RoleModel>(); using (ApplicationDbContext dbContext = new ApplicationDbContext(fakeContext.FakeOptions)) { var service = new UserService(dbContext); var controller = new UserController(service, new RoleService(dbContext), fakeContext.Mapper); controller.ControllerContext = new ControllerContext() { HttpContext = new DefaultHttpContext() { User = new ClaimsPrincipal(new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, "admin"), new Claim(ClaimTypes.NameIdentifier, "1"), new Claim(ClaimTypes.Role, "admin"), }, "mock")) } }; var form = new UserFormDTO() { Role = "user", Name = "testxtg", Password = "******" }; var result = controller.Post(form); var expected = service.Get(s => s.Name == form.Name).FirstOrDefault(); Assert.IsType <CreatedResult>(result.Result); result = (result.Result as CreatedResult).Value as UserDTO; result.Value.Should().NotBeNull(); result.Value.Name.Should().BeEquivalentTo(expected.Name); } }