public HttpResponseMessage RegisterUser(UserRegisterModel model) { var responseMsg = this.ExceptionHandler( () => { var context = new ForumContext(); using (context) { UserDataPersister.ValidateUsername(model.Username); UserDataPersister.ValidateNickname(model.Nickname); UserDataPersister.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var nicknameToLower = model.Nickname.ToLower(); var user = context.Users.FirstOrDefault( usr => usr.Username == usernameToLower || usr.Nickname.ToLower() == nicknameToLower); if (user != null) { throw new InvalidOperationException("Invalid Username or Password"); } var newUser = new User { Username = usernameToLower, Nickname = model.Nickname, AuthCode = model.AuthCode }; context.Users.Add(newUser); context.SaveChanges(); newUser.SessionKey = UserDataPersister.GenerateSessionKey(newUser.Id); context.SaveChanges(); var loggedModel = new LoggedUserModel { Nickname = newUser.Nickname, SessionKey = newUser.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); response.Headers.Location = new Uri(Url.Link("DefaultApi", new { id = newUser.Id })); return response; } }); return responseMsg; }
public void Register_WhenUserModelValid_ShouldSaveToDatabase() { var newUser = new UserRegisterModel { Username = "******", Nickname = "ValidNickname", AuthCode = new string('b', 40) }; var response = httpServer.Post("api/users/register", newUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); Assert.AreEqual(response.StatusCode, HttpStatusCode.Created); }
public void Get() { var testUser = new UserRegisterModel() { Username = "******", Nickname = "VALIDNICK", AuthCode = new string('b', 40) }; var response = httpServer.Post("api/users/register", testUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); var headers = new Dictionary<string, string>(); headers["X-sessionKey"] = userModel.SessionKey; var responseTwo = httpServer.Get("api/threads", headers); Assert.AreEqual(HttpStatusCode.OK, responseTwo.StatusCode); Assert.IsNotNull(responseTwo.Content); }