Ejemplo n.º 1
0
        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());
                }
            }
        }
Ejemplo n.º 2
0
        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);
            }
        }
Ejemplo n.º 3
0
        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
            }
        }
Ejemplo n.º 4
0
        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);
            }
        }