public void AddUserFailureReturnsCorrectResponseMessage()
        {
            var controller = new Controller();
            var newUser    = new User("Mary");

            controller.AddUser(newUser);
            var responseMessage     = controller.AddUser(newUser);
            var responseBodyContent = responseMessage.Content.ReadAsStringAsync();

            var expectedResponseCode = HttpStatusCode.BadRequest;
            var expectedBodyContent  = @"""User already exists""";

            responseMessage.StatusCode.Should().Be(expectedResponseCode);
            responseBodyContent.Result.Should().Be(expectedBodyContent);
        }
        public static HttpResponseMessage HandleHttpRequest(HttpListenerContext context, Controller controller)
        {
            var resource = context.Request.Url.Segments.Last().Trim('/');

            var requestBody = FetchRequestBody(context);
            var user        = new User(resource);

            switch (context.Request.HttpMethod)
            {
            case "GET":
            {
                return(resource == "users" ? controller.GetUserList() : controller.GetUsers());
            }

            case "PUT":
            {
                return(controller.AddUser(user));
            }

            case "POST":
            {
                return(controller.UpdateUser(user, requestBody.Name));
            }

            case "DELETE":
            {
                return(controller.DeleteUser(user));
            }
            }

            return(new HttpResponseMessage());
        }
        public void AddUserReturnsCorrectResponseMessage()
        {
            var controller          = new Controller();
            var newUser             = new User("Mary");
            var responseMessage     = controller.AddUser(newUser);
            var responseBodyContent = responseMessage.Content.ReadAsStringAsync();

            var expectedResponseCode = HttpStatusCode.Created;
            var expectedBodyContent  = @"{""Name"":""Mary""}";

            responseMessage.StatusCode.Should().Be(expectedResponseCode);
            responseBodyContent.Result.Should().Be(expectedBodyContent);
        }
        public void UpdateUserFailureReturnsCorrectResponseMessage()
        {
            var controller   = new Controller();
            var userToUpdate = new User("Mary");

            controller.AddUser(userToUpdate);
            var responseMessage     = controller.UpdateUser(new User("James"), "Ted");
            var responseBodyContent = responseMessage.Content.ReadAsStringAsync();

            var expectedResponseCode = HttpStatusCode.BadRequest;
            var expectedBodyContent  = @"""User doesn't exist""";;

            responseMessage.StatusCode.Should().Be(expectedResponseCode);
            responseBodyContent.Result.Should().Be(expectedBodyContent);
        }