public async void CreateThread_WithTokenThatIsAuthorized_Created()
        {
            // Arrange
            var client      = _server.Instance.CreateClient();
            var accessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI4OGZjOGYyMC05ZDdkLTQ2NjUtODM3MC1mNzgyZGFkNzQ3ZDYiLCJpYXQiOiI5LzI1LzIwMjAgMTE6MTg6MDMiLCJzdWIiOiJhZG1pbkBsZXZpOS5jb20iLCJ1c2VybmFtZSI6IkFkbWluIiwiZXhwIjoxNjA4ODEyMjgzLCJpc3MiOiJMZXZpOSBCYWNrZW5kIiwiYXVkIjoibGV2aTlVc2VycyIsInJvbGVzIjpbIkFkbWluIl19.M9hwz43m5rLjNOJ3QZg4iAozOKByOkHfW7AbjxlDGCY";

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            var thread = new ThreadRequestDTO
            {
                Title   = "New Thread",
                Content = "New thread content"
            };
            var content = new StringContent(JsonConvert.SerializeObject(thread), Encoding.UTF8, "application/json");


            // Act
            var response = await client.PostAsync("api/threads", content);


            // Assert
            var stream = await response.Content.ReadAsStreamAsync();

            ThreadResponseDTO data = null;

            using (var reader = new StreamReader(stream, Encoding.UTF8))
            {
                data = JsonConvert.DeserializeObject <ThreadResponseDTO>(await reader.ReadToEndAsync());
            }

            Assert.Equal(HttpStatusCode.Created, response.StatusCode);
            Assert.NotNull(data);
        }
        public async void UpdateThread_WithTokenThatIsAuthorized_OK()
        {
            // Arrange
            var client      = _server.Instance.CreateClient();
            var accessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIyOWZjMDc2OC00NzkzLTRhZDctYWFmZi01MzQ3OTg3MWI2NTgiLCJpYXQiOiI5LzI1LzIwMjAgOTo1MTozNiIsInN1YiI6InVzZXJAbGV2aTkuY29tIiwidXNlcm5hbWUiOiJVc2VyIiwiZXhwIjoxNjA4ODA3MDk2LCJpc3MiOiJMZXZpOSBCYWNrZW5kIiwiYXVkIjoibGV2aTlVc2VycyIsInJvbGVzIjpbIlVzZXIiXX0.4X-q8ZOSGdAOH9LMZf-2iUDRiSPW5tfONnqNCPf9rFM";

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            var thread = new ThreadRequestDTO
            {
                Id      = 2,
                Title   = "Updated Thread",
                Content = "Updated thread content"
            };
            var content = new StringContent(JsonConvert.SerializeObject(thread), Encoding.UTF8, "application/json");


            // Act
            var response = await client.PutAsync("api/threads/2", content);


            // Assert
            var stream = await response.Content.ReadAsStreamAsync();

            ThreadResponseDTO data = null;

            using (var reader = new StreamReader(stream, Encoding.UTF8))
            {
                data = JsonConvert.DeserializeObject <ThreadResponseDTO>(await reader.ReadToEndAsync());
            }

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.NotNull(data);
        }
        public void DtoToEntityTest()
        {
            // Arrange
            var dto = new ThreadResponseDTO
            {
                Id    = 1,
                Title = "New movie in cinemas : Kingsman the Golden Circle"
            };

            // Act
            var model = _threadMapper.ToEntity(dto);

            // Assert
            Assert.Equal(dto.Id, model.Id);
            Assert.Equal(dto.Title, model.Title);
        }
        public async void GetThreadById_OK()
        {
            var client = _server.Instance.CreateClient();

            var response = await client.GetAsync("api/threads/1");

            var stream = await response.Content.ReadAsStreamAsync();

            ThreadResponseDTO data = null;

            using (var reader = new StreamReader(stream, Encoding.UTF8))
            {
                data = JsonConvert.DeserializeObject <ThreadResponseDTO>(await reader.ReadToEndAsync());
            }

            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.Equal(HttpStatusCode.OK, response.StatusCode);
            Assert.NotNull(data);
            Assert.Equal(1, data.Id);
        }