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); }
public IObservable <Unit> Create(ThreadRequestDTO thread) { return(_threadApi.GetClient().CreateThread(thread)); }