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); }
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; }