public HttpResponseMessage PostLoginUser(LoginDTO userJSON) { var responseMsg = base.PerformOperationAndHandleExceptions(() => { if (ModelState.IsValid) { var context = new ExamContext(); using (context) { var foundUser = context.Users.FirstOrDefault(u => u.Username == userJSON.Username && u.AuthCode == userJSON.AuthCode ); if (foundUser == null) { throw new ArgumentOutOfRangeException("Wrong username or password"); } else { string sessionKey = AddSessionKey(context, foundUser); //crateREsponse LoginResponseDTO user = CreateResponseLogin(foundUser, sessionKey); var response = this.Request.CreateResponse(HttpStatusCode.Created, user); return response; } }//end using }//end validstate else { var errors = String.Join(" ", ModelState.Values.SelectMany(x => x.Errors).Select(x => x.ErrorMessage)); var errorMessage = string.Format("User input validation failed. Errors: {0}", errors); throw new ArgumentException(errorMessage); } }); return responseMsg; }
public void TestMethod2() { //create new user var testUser = new UserRegisterDTO() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; //make the reques with httpServer httpServer.Post("api/users/register/", testUser); //username var testLogin = new LoginDTO() { Username = "******", AuthCode = new string('b', 40) }; var response = httpServer.Post("api/users/login/", testLogin); string content = response.Content.ReadAsStringAsync().Result; LoginResponseDTO answer = JsonConvert.DeserializeObject<LoginResponseDTO>(content); string sessionKey = answer.Sessionkey; var headers = new Dictionary<string, string>(); headers["X-sessionKey"] = sessionKey; //error from .Put request var threadsResponse = httpServer.Post("api/users/logout", headers); Assert.IsNotNull(answer.Sessionkey); Assert.IsTrue(HttpStatusCode.OK == threadsResponse.StatusCode); }