public void Register_Duplicate_Username_Shoud_Return_BadRequest() { var testUser = new UserModel() { Username = "******", DisplayName = "validdisplayname", AuthCode = new string('b', 40) }; var response = this.httpServer.Post("api/users/register", testUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); Assert.AreEqual(testUser.DisplayName, userModel.DisplayName); Assert.IsNotNull(userModel.SessionKey); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); var sameTestUser = new UserModel() { Username = "******", DisplayName = "anotherdisplayName", AuthCode = new string('b', 40) }; response = this.httpServer.Post("api/users/register", sameTestUser); contentString = response.Content.ReadAsStringAsync().Result; userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); Assert.AreEqual(userModel.DisplayName, null); Assert.AreEqual(userModel.SessionKey, null); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public HttpResponseMessage PostRegisterUser(UserModel model) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var context = new BlogContext(); using (context) { this.ValidateStr(model.Username, ValidUsernameCharacters, "User"); this.ValidateStr(model.Nickname, ValidNicknameCharacters, "Nickname"); this.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("Users exists"); } user = new User() { Username = usernameToLower, Nickname = model.Nickname, AuthCode = model.AuthCode }; context.Users.Add(user); context.SaveChanges(); user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); var loggedModel = new LoggedUserModel() { Nickname = user.Nickname, SessionKey = user.AuthCode }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } }); return responseMsg; }
public HttpResponseMessage PostLoginUser(UserModel model) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var context = new BloggingSystemContext(); using (context) { this.ValidateUsername(model.Username); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var user = context.Users.FirstOrDefault( usr => usr.Username == usernameToLower && usr.AuthCode == model.AuthCode); if (user == null) { throw new InvalidOperationException("Invalid username or password"); } if (user.SessionKey == null) { user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); } var loggedModel = new LoggedUserModel() { DisplayName = user.DisplayName, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } }); return responseMsg; }
public void TestInit() { var type = typeof(PostsController); tran = new TransactionScope(); var routes = new List<Route> { new Route( "TagsApi", "api/tags/{tagId}/posts", new { controller = "tags", action = "posts"} ), new Route( "PostsApi", "api/posts/{postId}/comment", new { controller = "posts", action = "comment"} ), new Route( "UsersApi", "api/users/{action}", new { controller = "users"} ), new Route( "DefaultApi", "api/{controller}/{id}", new { id = RouteParameter.Optional }), }; this.httpServer = new InMemoryHttpServer("http://localhost/", routes); var testUser = new UserModel() { Username = "******", DisplayName = "validdisplayname", AuthCode = new string('b', 40) }; var response = this.httpServer.Post("api/users/register", testUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); this.validUser = userModel; }
public HttpResponseMessage Register(UserModel model) { var responseMsg = this.ExceptionHandling( () => { var context = new BloggingSystemContext(); using (context) { this.ValidateUsername(model.Username); this.ValidateNickname(model.Displayname); this.ValidateAuthCode(model.AuthCode); var usernameToLower = model.Username.ToLower(); var displaynameToLower = model.Displayname.ToLower(); var user = context.Users.FirstOrDefault( usr => usr.Username == usernameToLower || usr.Displayname.ToLower() == displaynameToLower); if (user != null) { throw new InvalidOperationException("User exists!"); } user = new User() { Username = usernameToLower, Displayname = model.Displayname, AuthCode = model.AuthCode }; context.Users.Add(user); context.SaveChanges(); user.SessionKey = this.GenerateSessionKey(user.Id); context.SaveChanges(); var loggedModel = new LoggedUserModel() { Displayname = user.Displayname, SessionKey = user.SessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } }); return responseMsg; }
public void Register_Invalid_AuthCode_Shoud_Return_BadRequest() { var testUser = new UserModel() { Username = "******", DisplayName = "dn", AuthCode = new string('b', 20) }; var response = this.httpServer.Post("api/users/register", testUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); Assert.AreEqual(userModel.DisplayName, null); Assert.AreEqual(userModel.SessionKey, null); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void Register_Valid_User_Shoud_Create_And_Return_Created() { var testUser = new UserModel() { Username = "******", DisplayName = "display name", AuthCode = new string('b', 40) }; var response = this.httpServer.Post("api/users/register", testUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); Assert.AreEqual(testUser.DisplayName, userModel.DisplayName); Assert.IsNotNull(userModel.SessionKey); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); }
private static UserModel RegisterValidUser() { var testUser = new UserModel() { Username = "******", DisplayName = "display name", AuthCode = new string('b', 40) }; return testUser; }
public void Logout() { var testUser = new UserModel() { Username = "******", Nickname = "VALIDNICK", AuthCode = new string('b', 40) }; var model = RegisterOrLoginTestUser("api/users/register", httpServer, testUser); var response = httpServer.Put("api/users/logout?sessionKey=" + model.SessionKey); var contentString = response.Content.ReadAsStringAsync().Result; }
public void Register_WhenUserModelValid_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", Nickname = "VALIDNICK", AuthCode = new string('b', 40) }; var model = RegisterOrLoginTestUser("api/users/register", httpServer, testUser); Assert.AreEqual(testUser.Nickname, model.Nickname); Assert.IsNotNull(model.SessionKey); }
//[TestMethod] //public void CreatePost() //{ // var testPost = new Post() // { // Title = "test post", // Text = "test post content" // }; // var testUser = new UserModel() // { // Username = "******", // Nickname = "VALIDNICK", // AuthCode = new string('b', 40) // }; // var userModel = RegisterOrLoginTestUser("api/users/register", httpServer, testUser); // var response = httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testPost); // var contentString = response.Content.ReadAsStringAsync().Result; // var postModel = JsonConvert.DeserializeObject<PostModel>(contentString); // Assert.AreEqual(testPost.Title, postModel.Title); // Assert.AreEqual(testPost.Id, postModel.Id); //} private LoggedUserModel RegisterOrLoginTestUser(string requestUrl, InMemoryHttpServer httpServer, UserModel testUser) { var response = httpServer.Post(requestUrl, testUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); return userModel; }
public void Login_WhenUserModelValid_ReturnNickAndSessionKey() { var testUser = new UserModel() { Username = "******", Nickname = "VALIDNICK", AuthCode = new string('b', 40) }; RegisterOrLoginTestUser("api/users/register", httpServer, testUser); var model = this.RegisterOrLoginTestUser("api/users/login", httpServer, testUser); Assert.AreEqual(testUser.Nickname, model.Nickname); Assert.IsNotNull(model.SessionKey); }