public IHttpActionResult CreateNewUser([FromBody, Required] CreateUserRequestDTO payload) { using (var _db = new DatabaseContext()) { try { // Throws ExceptionService.NoTokenProvidedException // Throws ExceptionService.SessionNotFoundException var session = ControllerHelpers.ValidateAndUpdateSession(Request); // Throws ExceptionService.InvalidModelPayloadException ControllerHelpers.ValidateModelAndPayload(ModelState, payload); var _userManager = new UserManagementManager(_db); var user = _userManager.GetUser(session.UserId); if (user.IsAdministrator) { // Throws exception, invalid username, invalid manager guid var newUser = _userManager.CreateUser(payload); _db.SaveChanges(); var responseCreated = Content(HttpStatusCode.Created, "User created."); return(responseCreated); } return(Content(HttpStatusCode.Unauthorized, "Non-administrators cannot delete users.")); } catch (Exception e) when(e is UserNotFoundException) { return(Content(HttpStatusCode.NotFound, e.Message)); } catch (Exception e) when(e is InvalidGuidException || e is InvalidEmailException) { return(Content(HttpStatusCode.BadRequest, e.Message)); } catch (Exception e) when(e is NoTokenProvidedException || e is SessionNotFoundException) { return(Content(HttpStatusCode.Unauthorized, e.Message)); } catch (Exception e) when(e is InvalidModelPayloadException) { return(Content(HttpStatusCode.PreconditionFailed, e.Message)); } catch (Exception e) when(e is UserAlreadyExistsException) { return(Content(HttpStatusCode.Conflict, e.Message)); } catch (Exception e) { if (e is DbUpdateException || e is DbEntityValidationException) { _db.RevertDatabaseChanges(_db); } return(InternalServerError()); } } }
public async Task <Session> Register(string Username, Guid ssoID) { var _userManagementManager = new UserManagementManager(_db); try { var user = _userManagementManager.CreateUser(Username, ssoID); var _authorizationManager = new AuthorizationManager(_db); Session session = _authorizationManager.CreateSession(user); return(session); } catch (UserAlreadyExistsException e) { throw new UserAlreadyExistsException(e.Message); } }
public void Create_User_Using_Manager_NotRealEmail() { // Arrange string email = Guid.NewGuid() + ".com"; string password = (Guid.NewGuid()).ToString(); DateTime dob = DateTime.UtcNow; // Act using (var _db = tu.CreateDataBaseContext()) { _umm = new UserManagementManager(_db); var response = _umm.CreateUser(email, Guid.NewGuid()); // Assert //expects exception } }
public void Create_User_Using_Manager() { // Arrange string Username = Guid.NewGuid() + "@" + Guid.NewGuid() + ".com"; string password = (Guid.NewGuid()).ToString(); DateTime dob = DateTime.UtcNow; // Act using (var _db = tu.CreateDataBaseContext()) { _umm = new UserManagementManager(_db); var response = _umm.CreateUser(Username, Guid.NewGuid()); _db.SaveChanges(); var result = _umm.GetUser(response.Id); // Assert Assert.IsNotNull(response); Assert.IsNotNull(result); Assert.AreEqual(Username, result.Username); } }