Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
        public void ShouldEscapeunicodeCharacters()
        {
            string json = JsonStringBuilder.Escape("C:\\p");

            Assert.AreEqual("C:\\\\p", json);
            Assert.That(JsonStringBuilder.Escape("data \"67676\""), Is.EqualTo("data \\\"67676\\\""));
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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());
        }
Exemplo n.º 8
0
        /// <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);
        }
Exemplo n.º 9
0
        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();
        }
Exemplo n.º 10
0
        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();
        }
Exemplo n.º 11
0
        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));
            }
        }
Exemplo n.º 12
0
        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();
        }
Exemplo n.º 13
0
        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();
        }
Exemplo n.º 14
0
        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();
        }
Exemplo n.º 15
0
        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();
        }
Exemplo n.º 16
0
        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();
        }
Exemplo n.º 17
0
    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);
    }
Exemplo n.º 18
0
    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);
    }
Exemplo n.º 19
0
        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();
        }
Exemplo n.º 20
0
        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);
        }
Exemplo n.º 21
0
        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();
        }
Exemplo n.º 22
0
        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);
        }
Exemplo n.º 23
0
    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();
 }
Exemplo n.º 25
0
    /// <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();
    }