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 Task <ActionResult <ThreadResponseDTO> > Update(int id, [FromBody] ThreadRequestDTO threadRequest)
        {
            var currentUser = await GettingCurrentClient();

            var threadInQuestion = await _threadsService.Get(threadRequest.Id);

            if (threadInQuestion == null)
            {
                return(NotFound($"Couldn't find a thread with the id of {id} to update"));
            }

            if (currentUser.Email != threadInQuestion.Author.Email)
            {
                return(Forbid());
            }

            var updatedThread = await _threadsService.Update(new ThreadEntity
            {
                Id       = id,
                Title    = threadRequest.Title,
                Content  = threadRequest.Content,
                Comments = new List <CommentEntity>(),
                Author   = currentUser
            });

            return(_threadMapper.ToDto(updatedThread));
        }
        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 async Task <ActionResult <ThreadResponseDTO> > Create([FromBody] ThreadRequestDTO threadRequest)
        {
            var createdThread = await _threadsService.Create(new ThreadEntity
            {
                Title    = threadRequest.Title,
                Content  = threadRequest.Content,
                Comments = new List <CommentEntity>(),
                Author   = await GettingCurrentClient(),
            });

            return(Created($"threads/{createdThread.Id}", _threadMapper.ToDto(createdThread)));
        }
        public async void CreateThread_WithoutToken_Unauthorized()
        {
            // Arrange
            var client = _server.Instance.CreateClient();
            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
            Assert.Equal(HttpStatusCode.Unauthorized, response.StatusCode);
        }
        public async void UpdateThread_WithTokenThatIsAuthorized_DifferentUser_Forbidden()
        {
            // Arrange
            var client      = _server.Instance.CreateClient();
            var accessToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiIwOTg1M2QxYy1lMzE4LTRjZTgtODA4My01ODUyMTM4OTUxYWQiLCJpYXQiOiIxMC83LzIwMjAgMzo0Njo1MSBQTSIsInN1YiI6InVzZXIxQGxldmk5LmNvbSIsInVzZXJuYW1lIjoiVXNlcjEiLCJleHAiOjE2MDk4NjUyMTEsImlzcyI6Ikxldmk5IEJhY2tlbmQiLCJhdWQiOiJsZXZpOVVzZXJzIiwicm9sZXMiOlsiVXNlciJdfQ.vMg4G7sYIq1jgYUYc9ekWhDfJxEX2XlALCHcLLvGwJA";

            client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
            var thread = new ThreadRequestDTO
            {
                Id      = 1,
                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/4", content);

            // Assert
            Assert.Equal(HttpStatusCode.Forbidden, response.StatusCode);
        }
示例#7
0
 public IObservable <Unit> Create(ThreadRequestDTO thread)
 {
     return(_threadApi.GetClient().CreateThread(thread));
 }