public void RegisteUser_WhenIsValid_ShouldAddToDb()
        {
            var mockRepository = Mock.Create<IRepository<UserRegisterModel>>();
            UserRegisterModel model = new UserRegisterModel()
            {
                Username = "******",
                DisplayName = "DIsplayName",
                AuthCode = new string('b', 40)
            };

            var server = new InMemoryHttpServer<UserRegisterModel>("http://localhost/", mockRepository);

            var response = server.CreateGetRequest("api/users/register");

            Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);
            Assert.IsNotNull(response.Content);
        }
Exemplo n.º 2
0
        public HttpResponseMessage RegisterUser(UserRegisterModel model)
        {
            var responseMsg = this.ExceptionHandler(
                 () =>
                 {
                     UserDataPersister.ValidateUsername(model.Username);
                     UserDataPersister.ValidateNickname(model.DisplayName);
                     UserDataPersister.ValidateAuthCode(model.AuthCode);

                     var usernameToLower = model.Username.ToLower();
                     var displayNameToLower = model.DisplayName.ToLower();

                     var users = this.userRepository.All();
                     var user = users.FirstOrDefault(
                           usr => usr.Username == usernameToLower || usr.DisplayName.ToLower() == displayNameToLower);

                     if (user != null)
                     {
                         throw new InvalidOperationException("Invalid Username or Password");
                     }

                     var newUser = new User
                     {
                         Username = usernameToLower,
                         DisplayName = model.DisplayName,
                         AuthCode = model.AuthCode
                     };

                     var userInDb = this.userRepository.Add(newUser);
                     this.userRepository.Update(userInDb, userInDb.Id, true);

                     var loggedModel = new UserLoggedModel
                     {
                         DisplayName = userInDb.DisplayName,
                         SessionKey = userInDb.SessionKey
                     };

                     var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel);
                     response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = userInDb.Id }));

                     return response;
                 });

            return responseMsg;
        }