public async Task Should_Be_Able_To_Execute_Insert_Update_And_Delete_Operations_As_Administrator()
        {
            using (var client = Server.CreateClient())
            {
                var authenticator = new ApiAuthenticator(client);

                await authenticator.AuthenticateClientAsync(client, DatabaseSeeds.AdminUsername, DatabaseSeeds.AdminPassword);

                var postRequest = new SendCustomerModel {
                    Name = "Jessie", Email = "*****@*****.**"
                };

                var postResponse = await client.PostAsJsonAsync("/api/customer", postRequest);

                postResponse.EnsureSuccessStatusCode();

                var postContent = await postResponse.Content.ReadAsAsync <GetCustomerModel>();

                postContent.Name.Should().Be(postRequest.Name);
                postContent.Email.Should().Be(postRequest.Email);

                var getResponse = await client.GetAsync($"/api/customer/{postContent.Id}");

                getResponse.EnsureSuccessStatusCode();

                var getContent = await getResponse.Content.ReadAsAsync <GetCustomerModel>();

                getContent.Id.Should().Be(postContent.Id);
                getContent.Name.Should().Be(postContent.Name);
                getContent.Email.Should().Be(postContent.Email);

                var putRequest = new SendCustomerModel {
                    Name = "Bellona", Email = "*****@*****.**"
                };

                var putResponse = await client.PutAsJsonAsync($"/api/customer/{postContent.Id}", putRequest);

                putResponse.EnsureSuccessStatusCode();

                var putContent = await putResponse.Content.ReadAsAsync <GetCustomerModel>();

                putContent.Id.Should().Be(postContent.Id);
                putContent.Name.Should().Be(putRequest.Name);
                putContent.Email.Should().Be(putRequest.Email);

                var deleteResponse = await client.DeleteAsync($"/api/customer/{postContent.Id}");

                deleteResponse.StatusCode.Should().Be(HttpStatusCode.NoContent);

                var notFoundContent = await client.GetAsync($"/api/customer/{postContent.Id}");

                notFoundContent.StatusCode.Should().Be(HttpStatusCode.NotFound);
            }
        }
        public async Task Should_Be_Able_To_Authenticate_User(string username, string password)
        {
            using (var client = Server.CreateClient())
            {
                var authenticator = new ApiAuthenticator(client);

                var result = await authenticator.AuthenticateAsync(username, password);

                result.Should().NotBeNull();
                result.Username.Should().Be(username);
                result.JwtToken.Should().NotBeNullOrWhiteSpace();
            }
        }