public async Task Edit_ExistingTodoButNotOwnedByTokenOwner_NotFound() { // Arrange var user = MockApplicationUsers.Get(5); var todoToEdit = MockTodos.GetAll().FirstOrDefault(z => z.Owner.Id != user.Id); Assert.NotNull(todoToEdit); var token = await GetToken(user); var model = new EditTodoViewModel { Id = todoToEdit.Id, Due = DateTime.Now, Description = "Listen all of y'all it's a sabotage" }; var body = JsonStringBuilder.EditTodoJsonBody( model.Description, model.Due.ToString(), model.Id.ToString()); var content = new StringContent(body); var path = Routes.TodoRoute; _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Put(path, content); // Assert Assert.Equal(HttpStatusCode.NotFound, response.Code); // Tear down _endSystems.Dispose(); }
public async Task Create_UserDoesExist_CreatedAtRoute() { // Arrange var user = MockApplicationUsers.Get(8); var token = await GetToken(user); const string createPath = Routes.TodoRoute; _endSystems.SetBearerToken(token); var model = new CreateTodoViewModel { Description = "I am your doctor, when you need, want some coke? Have some weed", Due = new DateTime(2000, 1, 1) }; var body = JsonStringBuilder.CreateTodoJsonBody(model.Description, model.Due.ToString()); var content = new StringContent(body); // Act var createResponse = await _endSystems.Post(createPath, content); var location = createResponse.Headers.Location.ToString(); var getResponse = await _endSystems.Get(location); var dto = JsonStringSerializer.GetTodoDto(getResponse.Body); // Assert Assert.Equal(HttpStatusCode.Created, createResponse.Code); Assert.Equal(HttpStatusCode.OK, getResponse.Code); Assert.Equal(model.Description, dto.Description); Assert.Equal(model.Due, dto.Due); // Tear down _endSystems.Dispose(); }
public async Task Edit_NonExistingTodo_NotFound() { // Arrange var user = MockApplicationUsers.Get(5); var token = await GetToken(user); var model = new EditTodoViewModel { Id = 0, Due = DateTime.Now, Description = "Intergalactic, planetary, planetary, intergalactic" }; var body = JsonStringBuilder.EditTodoJsonBody( model.Description, model.Due.ToString(), model.Id.ToString()); var content = new StringContent(body); const string path = Routes.TodoRoute; _endSystems.SetBearerToken(token); // Act var response = await _endSystems.Put(path, content); // Assert Assert.Equal(HttpStatusCode.NotFound, response.Code); // Tear down _endSystems.Dispose(); }
public void ShouldEscapeLastWrittenToken() { string json = new JsonStringBuilder() .WriteBeginArray() .Escape() .ToString(); Assert.AreEqual("[", json); json = new JsonStringBuilder() .WriteBeginObject() .WriteMember("key", "value") .Escape() .WriteEndObject() .ToString(); Assert.AreEqual("{\"key\":\"value\"}", json); json = new JsonStringBuilder() .WriteBeginObject() .WriteMember("key", "value-with-CRLF\r\n") .Escape() .WriteEndObject() .ToString(); Assert.AreEqual("{\"key\":\"value-with-CRLF\\r\\n\"}", json); }
public void ShouldEscapeunicodeCharacters() { string json = JsonStringBuilder.Escape("C:\\p"); Assert.AreEqual("C:\\\\p", json); Assert.That(JsonStringBuilder.Escape("data \"67676\""), Is.EqualTo("data \\\"67676\\\"")); }
public void ShouldEscapeJsonStructuralCharacters() { string escaped = JsonStringBuilder.Escape("\r\n\r\n"); Assert.AreEqual("\\r\\n\\r\\n", escaped); escaped = JsonStringBuilder.Escape("escape:\r\n\r\n"); Assert.AreEqual("escape:\\r\\n\\r\\n", escaped); escaped = JsonStringBuilder.Escape("escape:\b\f\r\n\t"); Assert.AreEqual("escape:\\b\\f\\r\\n\\t", escaped); }
string Serialize(IJsonCollection json_collection, int no_of_affected_rows) { JsonStringBuilder builder = new JsonStringBuilder() .WriteBeginObject() .WriteMember(Strings.kResponseAffectedRowsMemberName, no_of_affected_rows) .WriteMemberName(Strings.kResponseDataMemberName) .WriteUnquotedString(json_collection.AsJson()) .WriteEndObject(); return(builder.ToString()); }
/// <summary> /// Login with a user and return the token as string. /// </summary> /// <param name="user">A user to login</param> /// <returns>A token as string</returns> private async Task <string> GetToken(ApplicationUser user) { Assert.NotNull(user); Assert.NotNull(user.Email); var body = JsonStringBuilder.LoginJsonBody( user.Email, MockApplicationUsers.UniversalPassword); var content = new StringContent(body); var response = await _endSystems.Post(Routes.AccountRoute + "/login", content); Assert.NotNull(response); var token = JToken.Parse(response.Body).ToString(); Assert.NotNull(token); return(token); }
public async Task PostAccountRegiser_WeakPassword_BadRequest() { // Arrange var body = JsonStringBuilder.RegisterJsonBody("The Message", "*****@*****.**", "onlylowercases"); var content = new StringContent(body); var path = $"{Routes.AccountRoute}/register"; // Act var response = await _endSystems.Post(path, content); // Assert Assert.Equal(HttpStatusCode.BadRequest, response.Code); // Tear down _endSystems.Dispose(); }
public async Task PostAccountLogin_NonExistingUser_Unauthorized() { // Arrange var body = JsonStringBuilder.LoginJsonBody("*****@*****.**", "J0hn_Carmack"); var content = new StringContent(body); var path = $"{Routes.AccountRoute}/login"; // Act var response = await _endSystems.Post(path, content); // Assert Assert.Equal(HttpStatusCode.Unauthorized, response.Code); // Tear down _endSystems.Dispose(); }
public string Signin(string username, string pwd) { using (WebClient client = WebClientBuilder.Build()) { client.SupportJson(); string serviceUrl = string.Format("{0}/{1}/{2}/", url, service, username); JsonStringBuilder data = new JsonStringBuilder(); data.AppendLeftBrace(); data.Append("pwd", pwd); data.AppendRightBrace(); string result = client.UploadString(new Uri(serviceUrl), "PUT", data.ToString()); return(JsonHelper.Deserialize <string>(result)); } }
public async Task Edit_ExistingTodoOwnedByTokenOwner_Ok() { // Arrange var user = MockApplicationUsers.Get(2); var todoToEdit = MockTodos.GetAll().LastOrDefault(z => z.Owner.Id == user.Id); Assert.NotNull(todoToEdit); var token = await GetToken(user); var model = new EditTodoViewModel { Id = todoToEdit.Id, Due = new DateTime(2014, 12, 12, 10, 11, 12), Description = "It's like a jungle sometimes - It makes me wonder how I keep from goin' under" }; var body = JsonStringBuilder.EditTodoJsonBody( model.Description, model.Due.ToString(), model.Id.ToString()); var content = new StringContent(body); _endSystems.SetBearerToken(token); var getPath = $"{Routes.TodoRoute}/{model.Id}"; var putPath = Routes.TodoRoute; // Act var getResponse1 = await _endSystems.Get(getPath); var editResponse = await _endSystems.Put(putPath, content); var getResponse2 = await _endSystems.Get(getPath); var dtoBefore = JsonStringSerializer.GetTodoDto(getResponse1.Body); var dtoAfter = JsonStringSerializer.GetTodoDto(getResponse2.Body); // Assert Assert.Equal(HttpStatusCode.OK, getResponse1.Code); Assert.Equal(HttpStatusCode.OK, editResponse.Code); Assert.Equal(HttpStatusCode.OK, getResponse2.Code); Assert.Equal(todoToEdit.Id, dtoBefore.Id); Assert.Equal(todoToEdit.Due, dtoBefore.Due); Assert.Equal(todoToEdit.Description, dtoBefore.Description); Assert.Equal(model.Id, dtoAfter.Id); Assert.Equal(model.Due, dtoAfter.Due); Assert.Equal(model.Description, dtoAfter.Description); // Tear down _endSystems.Dispose(); }
public async Task PostAccountLogin_ExistingUserWrongPassword_Unauthorized() { // Arrange var user = MockApplicationUsers.Get(6); var body = JsonStringBuilder.LoginJsonBody(user.Email, "A-Am-N0t-C0rrect"); var content = new StringContent(body); var path = $"{Routes.AccountRoute}/login"; // Act var response = await _endSystems.Post(path, content); // Assert Assert.Equal(HttpStatusCode.Unauthorized, response.Code); // Tear down _endSystems.Dispose(); }
public async Task PostAccountRegiser_EmailInUse_Unauthorized() { // Arrange var user = MockApplicationUsers.Get(8); var body = JsonStringBuilder.RegisterJsonBody(user.Name, user.Email, MockApplicationUsers.UniversalPassword); var content = new StringContent(body); var path = $"{Routes.AccountRoute}/register"; // Act var response = await _endSystems.Post(path, content); // Assert Assert.Equal(HttpStatusCode.Unauthorized, response.Code); // Tear down _endSystems.Dispose(); }
public async Task Create_NoToken_Unauthorized() { // Arrange var model = MockCreateTodoViewModel.Get(0); var body = JsonStringBuilder.CreateTodoJsonBody(model.Description, model.Due.ToString()); var content = new StringContent(body); const string path = Routes.TodoRoute; // Act var response = await _endSystems.Post(path, content); // Assert Assert.Equal(HttpStatusCode.Unauthorized, response.Code); // Tear down _endSystems.Dispose(); }
public async Task PostAccountRegiser_ValidNewUser_CreatedAndToken() { // Arrange var user = new ApplicationUser { Name = "The Clash", Email = "*****@*****.**", UserName = "******" }; var registerBody = JsonStringBuilder.RegisterJsonBody ( user.Name, user.Email, MockApplicationUsers.UniversalPassword ); var loginBody = JsonStringBuilder.LoginJsonBody ( user.Email, MockApplicationUsers.UniversalPassword ); var registerContent = new StringContent(registerBody); var loginContent = new StringContent(loginBody); var registerPath = $"{Routes.AccountRoute}/register"; var loginPath = $"{Routes.AccountRoute}/login"; // Act var registerResponse = await _endSystems.Post(registerPath, registerContent); var loginResponse = await _endSystems.Post(loginPath, loginContent); var registerToken = JToken.Parse(registerResponse.Body).ToString(); var loginToken = JToken.Parse(loginResponse.Body).ToString(); // Assert Assert.Equal(HttpStatusCode.Created, registerResponse.Code); Assert.Equal(HttpStatusCode.OK, loginResponse.Code); CheckToken(MockRoles.User, user, registerToken, false); CheckToken(MockRoles.User, user, loginToken, false); // Tear down _endSystems.Dispose(); }
public void ShouldWriteJsonMemberName() { string json = new JsonStringBuilder() .WriteMemberName("name") .ToString(); Assert.AreEqual("\"name\":", json); json = new JsonStringBuilder() .WriteMemberName("name") .WriteNumber(20) .ToString(); Assert.AreEqual("\"name\":20", json); json = new JsonStringBuilder() .WriteMemberName("name") .WriteBeginObject() .WriteMember("name", "value") .WriteEndObject() .ToString(); Assert.AreEqual("\"name\":{\"name\":\"value\"}", json); }
public void ShouldWriteJsonMember() { string json = new JsonStringBuilder() .WriteMember("name", "key") .ToString(); Assert.AreEqual(json, "\"name\":\"key\""); json = new JsonStringBuilder() .WriteMember("name", (double) 20.1) .ToString(); Assert.AreEqual("\"name\":20.1", json); json = new JsonStringBuilder() .WriteMember("name", (int) 20) .ToString(); Assert.AreEqual("\"name\":20", json); json = new JsonStringBuilder() .WriteMember("name", (long) 64000) .ToString(); Assert.AreEqual("\"name\":64000", json); }
public async Task PostAccountLogin_ExistingUser_OkWithToken() { // Arrange var user = MockApplicationUsers.Get(6); var path = $"{Routes.AccountRoute}/login"; var body = JsonStringBuilder.LoginJsonBody(user.Email, MockApplicationUsers.UniversalPassword); var content = new StringContent(body); var role = MockRoles.Admin.Id == MockUserRoles.GetUserRoleForUser(user.Id).RoleId ? MockRoles.Admin : MockRoles.User; // Act var response = await _endSystems.Post(path, content); var token = JToken.Parse(response.Body).ToString(); // Assert Assert.Equal(HttpStatusCode.OK, response.Code); CheckToken(role, user, token); // Tear down _endSystems.Dispose(); }
public void ShouldWriteJsonMemberName() { string json = new JsonStringBuilder() .WriteMemberName("name") .ToString(); Assert.AreEqual("\"name\":", json); json = new JsonStringBuilder() .WriteMemberName("name") .WriteNumber(20) .ToString(); Assert.AreEqual("\"name\":20", json); json = new JsonStringBuilder() .WriteMemberName("name") .WriteBeginObject() .WriteMember("name", "value") .WriteEndObject() .ToString(); Assert.AreEqual("\"name\":{\"name\":\"value\"}", json); }
public async Task Create_UserDoesNotExistAnymote_Unauthorized() { // Arrange var user = MockApplicationUsers.Get(5); var admin = MockApplicationUsers.Get(0); var userToken = await GetToken(user); var adminToken = await GetToken(admin); var deletePath = $"{Routes.UserRoute}/{user.Id}"; const string createPath = Routes.TodoRoute; _endSystems.SetBearerToken(adminToken); var deleteResponse = await _endSystems.Delete(deletePath); Assert.Equal(HttpStatusCode.NoContent, deleteResponse.Code); _endSystems.RemoveBearerToken(); _endSystems.SetBearerToken(userToken); var model = new CreateTodoViewModel { Description = "They paved paradise and put up a parking lot", Due = new DateTime(2000, 1, 1) }; var body = JsonStringBuilder.CreateTodoJsonBody(model.Description, model.Due.ToString()); var content = new StringContent(body); // Act var response = await _endSystems.Post(createPath, content); // Assert Assert.Equal(HttpStatusCode.Unauthorized, response.Code); // Tear down _endSystems.Dispose(); }
public void ShouldWriteJsonMember() { string json = new JsonStringBuilder() .WriteMember("name", "key") .ToString(); Assert.AreEqual(json, "\"name\":\"key\""); json = new JsonStringBuilder() .WriteMember("name", (double)20.1) .ToString(); Assert.AreEqual("\"name\":20.1", json); json = new JsonStringBuilder() .WriteMember("name", (int)20) .ToString(); Assert.AreEqual("\"name\":20", json); json = new JsonStringBuilder() .WriteMember("name", (long)64000) .ToString(); Assert.AreEqual("\"name\":64000", json); }
public void ShouldEscapeLastWrittenToken() { string json = new JsonStringBuilder() .WriteBeginArray() .Escape() .ToString(); Assert.AreEqual("[", json); json = new JsonStringBuilder() .WriteBeginObject() .WriteMember("key", "value") .Escape() .WriteEndObject() .ToString(); Assert.AreEqual("{\"key\":\"value\"}", json); json = new JsonStringBuilder() .WriteBeginObject() .WriteMember("key", "value-with-CRLF\r\n") .Escape() .WriteEndObject() .ToString(); Assert.AreEqual("{\"key\":\"value-with-CRLF\\r\\n\"}", json); }
string Serialize(IJsonCollection json_collection, int no_of_affected_rows) { JsonStringBuilder builder = new JsonStringBuilder() .WriteBeginObject() .WriteMember(Strings.kResponseAffectedRowsMemberName, no_of_affected_rows) .WriteMemberName(Strings.kResponseDataMemberName) .WriteUnquotedString(json_collection.AsJson()) .WriteEndObject(); return builder.ToString(); }
/// <summary> /// Gets a string of characters representing the underlying /// class and formatted like a json array. /// </summary> /// <returns> /// A string representation of the <see cref="JsonTable"/> class /// that represents a json array. /// </returns> public string AsJson() { if (columns_.Length == 0) { return "{\"columns\":[], \"rows\":[[]]}"; } const string kColumnNamesMemberName = "columns"; const string kDataMemberName = "rows"; JsonStringBuilder builder = new JsonStringBuilder() .WriteBeginObject() .WriteMemberName(kColumnNamesMemberName) .WriteStringArray(columns_) .WriteMemberName(kDataMemberName) .WriteBeginArray(); if (rows_.Count == 0) { builder.WriteBeginArray().WriteEndArray(); } else { for (int i = 0, j = rows_.Count; i < j; i++) { builder.WriteUnquotedString(rows_[i].AsJson()); } } return builder.WriteEndArray().WriteEndObject().ToString(); }