public static LoggedUserModel RegisterTestValidUser(InMemoryHttpServer httpServer, UserModel testUser) { var response = httpServer.Post("api/users/register", testUser); var contentString = response.Content.ReadAsStringAsync().Result; var userModel = JsonConvert.DeserializeObject<LoggedUserModel>(contentString); return userModel; }
public void Register_DuplicatedUsers_ShouldNotSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testUserDuplicate = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var model = RegisterUser.RegisterTestUser(httpServer, testUser); var modelDuplicate = RegisterUser.RegisterTestUser(httpServer, testUserDuplicate); Assert.IsNotNull(model.DisplayName); Assert.IsNotNull(model.SessionKey); Assert.IsNull(modelDuplicate.DisplayName); // should be null Assert.IsNull(modelDuplicate.SessionKey); }
public void CreatePost_WhenTextIsNotValid_ShouldNotSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testNewPost = new PostModel() { Title = "VALIDTITLE", // MISSING TEXT Tags = new string[] { "FIRST", "SECOND" } }; LoggedUserModel userModel = RegisterUser.RegisterTestUser(httpServer, testUser); var response = httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost); var contentString = response.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<PostModel>(contentString); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); Assert.IsNull(postModel.Title); }
public void CreatePost_WithValidData_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var userModel = Helpers.RegisterTestValidUser(httpServer, testUser); var testPost = new PostModel() { Title = "NEW POST", Tags = new List<string>() { "post" }, Text = "this is just a test post" }; var response = httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testPost); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); Assert.IsNotNull(response.Content); var contentString = response.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<ResponsePostModel>(contentString); Assert.AreEqual(postModel.Title, testPost.Title); Assert.IsTrue(postModel.Id > 0); }
public void Register_WhenUserNameIsNOTValid_ShouldThrowException() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var response = httpServer.Post("api/users/register", testUser); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void Register_WhenUserModelValid_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var model = Helpers.RegisterTestValidUser(httpServer, testUser); Assert.AreEqual(testUser.DisplayName, model.DisplayName); Assert.IsNotNull(model.SessionKey); }
public HttpResponseMessage PostRegisterUser(UserModel model) { var responseMsg = this.PerformOperationAndHandleExceptions(() => { var context = new BloggingSystemContext(); using (context) { this.ValidateUsername(model.Username); this.ValidateDisplayname(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 Logout_When_Valid_SessionKey() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var userModel = RegisterUser.RegisterTestUser(httpServer, testUser); var response = httpServer.Put("api/users/logout?sessionKey=" + userModel.SessionKey); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
public HttpResponseMessage PostLoginUser(UserModel model) { var responseMsg = this.PerformOperationAndHandleExceptions( () => { var context = new BlogContext(); 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("Users doesn't exists"); } string generateSessionKey = this.GenerateSessionKey(user.Id); user.SessionKey = generateSessionKey; context.SaveChanges(); var loggedModel = new LoggedUserModel() { DisplayName = user.DisplayName, SessionKey = generateSessionKey }; var response = this.Request.CreateResponse(HttpStatusCode.Created, loggedModel); return response; } }); return responseMsg; }
public void LeaveComment_WhenPostNotExists_ShouldNotSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testNewPost = new PostModel() { Title = "VALIDTITLE", Text = "VALIDTEXT", Tags = new string[] { "FIRST", "SECOND" } }; LoggedUserModel userModel = RegisterUser.RegisterTestUser(httpServer, testUser); httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost); var newComment = new CommentModel() { Text = "VALIDCOMMENTTEXT" }; int invalidPostId = 0; var response = httpServer.Put("api/posts/" + invalidPostId + "/comment?sessionKey=" + userModel.SessionKey, newComment); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void CreateCommentar_WithInvalideSessionKeyData_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var userModel = Helpers.RegisterTestValidUser(httpServer, testUser); var testPost = new PostModel() { Title = "NEW POST created", Tags = new List<string>() { "post", "web", "api", "root", }, Text = "this is just a test post" }; var postResponse = httpServer.Post("api/posts?sessionKey=32543tfg", testPost); var postContentString = postResponse.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<PostModel>(postContentString); var testComment = new CommentModel() { Text = "Abe kefi me toq post" }; var commentResponse = httpServer.Put("api/posts/" + postModel.Id + "/comment?sessionKey=dsadasda", testComment); Assert.AreEqual(HttpStatusCode.BadRequest, commentResponse.StatusCode); }
public void CreateCommentar_WithWrongPostIdData_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var userModel = Helpers.RegisterTestValidUser(httpServer, testUser); var testComment = new CommentModel() { Text = "Abe kefi me toq post" }; var commentResponse = httpServer.Put("api/posts/9999/comment?sessionKey=" + userModel.SessionKey, testComment); Assert.AreEqual(HttpStatusCode.BadRequest, commentResponse.StatusCode); }
public void GetPostByTags_WithNullData_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var userModel = Helpers.RegisterTestValidUser(httpServer, testUser); var testPost = new PostModel() { Title = "NEW POST created", Tags = new List<string>() { "post", "web", "api", "root", }, Text = "this is just a test post" }; var createResponse = httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testPost); var response = httpServer.Get("api/posts?tags=&sessionKey=" + userModel.SessionKey); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); Assert.IsNotNull(response.Content); var contentString = response.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<List<PostModel>>(contentString); Assert.IsTrue(postModel.Count == 0); }
public void Register_WhenAuthCodeIsNot40Chars_ShouldNotSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 30) // SHOULD BE 40 chars }; var model = RegisterUser.RegisterTestUser(httpServer, testUser); Assert.IsNull(model.DisplayName); Assert.IsNull(model.SessionKey); }
public void Logout_WhenSessionKeyIsValid_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var model = Helpers.RegisterTestValidUser(httpServer, testUser); var response = httpServer.Put("api/users/logout?sessionKey=" + model.SessionKey, testUser); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
public void GetPostsByTags_WhenTagsAreNull() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testNewPost = new PostModel() { Title = "VALIDTITLE", Text = "VALIDTEXT", Tags = new string[] { "FIRST", "SECOND" } }; LoggedUserModel userModel = RegisterUser.RegisterTestUser(httpServer, testUser); httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost); //sendind request with empty tags parameter var response = httpServer.Get("api/posts?tags=&sessionKey=" + userModel.SessionKey); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void Register_WithShortUsername_ShouldNotSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var response = httpServer.Post("api/users/register", testUser); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void CreatePost_WithNullData_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var userModel = Helpers.RegisterTestValidUser(httpServer, testUser); var testPost = new PostModel(); var response = httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testPost); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void LeaveComment_WhenCommentModelIsValid_ShouldSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testNewPost = new PostModel() { Title = "VALIDTITLE", Text = "VALIDTEXT", Tags = new string[] { "FIRST", "SECOND" } }; LoggedUserModel userModel = RegisterUser.RegisterTestUser(httpServer, testUser); var postResponse = httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost); var contentString = postResponse.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<PostModel>(contentString); var newComment = new CommentModel() { Text = "VALIDCOMMENTTEXT" }; var response = httpServer.Put("api/posts/" + postModel.Id + "/comment?sessionKey=" + userModel.SessionKey, newComment); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
public void GetPostsByTags_WhenTagsThatAreNotInDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testNewPost = new PostModel() { Title = "VALIDTITLE", Text = "VALIDTEXT", Tags = new string[] { "FIRST", "SECOND" } }; LoggedUserModel userModel = RegisterUser.RegisterTestUser(httpServer, testUser); httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost); var response = httpServer.Get("api/posts?tags=RANDOMTAG&sessionKey=" + userModel.SessionKey); var contentString = response.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<IEnumerable<PostModel>>(contentString); var expectedPostsCount = 0; Assert.AreEqual(expectedPostsCount, postModel.Count()); }
public void GetPostsByTags_WhenTagsAreValid() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testNewPost = new PostModel() { Title = "VALIDTITLE", Text = "VALIDTEXT", Tags = new string[] { "FIRST", "SECOND" } }; var testNewPost1 = new PostModel() { Title = "Some title", Text = "Some different Text", Tags = new string[] { "Yo", "Exam" } }; LoggedUserModel userModel = RegisterUser.RegisterTestUser(httpServer, testUser); httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost); httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost1); var response = httpServer.Get("api/posts?tags=FIRST,SECOND&sessionKey=" + userModel.SessionKey); var contentString = response.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<IEnumerable<PostModel>>(contentString); var currentPost = postModel.FirstOrDefault(); var expectedPostsCount = 1; var expectedTags = 3; Assert.AreEqual(expectedPostsCount, postModel.Count()); Assert.AreEqual(expectedTags, currentPost.Tags.Count()); }
public void LeaveComment_WhenWrongSessionKey_ShouldNotSaveToDatabase() { var testUser = new UserModel() { Username = "******", DisplayName = "VALIDNICK", AuthCode = new string('b', 40) }; var testNewPost = new PostModel() { Title = "VALIDTITLE", Text = "VALIDTEXT", Tags = new string[] { "FIRST", "SECOND" } }; LoggedUserModel userModel = RegisterUser.RegisterTestUser(httpServer, testUser); var postResponse = httpServer.Post("api/posts?sessionKey=" + userModel.SessionKey, testNewPost); var contentString = postResponse.Content.ReadAsStringAsync().Result; var postModel = JsonConvert.DeserializeObject<PostModel>(contentString); var newComment = new CommentModel() { Text = "VALIDCOMMENTTEXT" }; //Try to make a comment with wrong sessionKey string invalidSessionKey = "sdasdasdasddsaijdij2jiwjijei2jiedjisjidsa"; var response = httpServer.Put("api/posts/" + postModel.Id + "/comment?sessionKey=" + invalidSessionKey, newComment); Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode); }
public void Register_WithNull_ShouldNotSaveToDatabase() { var testUser = new UserModel(); var model = RegisterUser.RegisterTestUser(httpServer, testUser); Assert.IsNull(model.DisplayName); Assert.IsNull(model.SessionKey); }