Beispiel #1
0
        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))));
        }
Beispiel #2
0
        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);
            }
        }