protected async Task <AnnouncementResponse> CreateAnnouncementAsync( CreateAnnouncementDto createAnnouncementDto) { var res = await TestClient.PostAsJsonAsync(ApiRoutes.Announcements.Create, createAnnouncementDto); return(await res.Content.ReadAsAsync <AnnouncementResponse>()); }
public async Task Create_ReturnsOk_WhenCreated() { //Arrange await AuthenticateAsync(); await LoginAsync(); var createdAnnouncement = new CreateAnnouncementDto { Name = "Announcement To Report", Type = "Other", Description = "Report", Image = null }; var announcementResponse = await TestClient.PostAsJsonAsync( ApiRoutes.Announcements.Create, createdAnnouncement); var announcementContent = await announcementResponse.Content.ReadAsAsync <AnnouncementResponse>(); //Act var response = await TestClient.PostAsJsonAsync( ApiRoutes.Reports.Create.Replace("{announcementId}", announcementContent.Id.ToString()), new CreateReportDto { ReportCause = "Test", ReportDescription = "Test", }); var content = await response.Content.ReadAsAsync <ReportResponse>(); //Assert response.StatusCode.Should().Be(HttpStatusCode.Created); content.Should().NotBeNull(); content.Should().BeOfType <ReportResponse>(); }
public async Task <IActionResult> Create([FromBody] CreateAnnouncementDto announcementDto) { int userId; try { userId = HttpContext.GetUserId(); } catch (ArgumentNullException) { return(Unauthorized()); } var announcement = new Announcement { Name = announcementDto.Name, Type = (AnnouncementType)Enum.Parse(typeof(AnnouncementType), announcementDto.Type), Description = announcementDto.Description, Image = announcementDto.Image, CreatedAt = DateTime.UtcNow, UserId = userId }; await _announcementRepository.CreateAsync(announcement); //https://localhost:5001 in this case var baseUrl = $"{HttpContext.Request.Scheme}://{HttpContext.Request.Host.ToUriComponent()}"; var locationUri = baseUrl + ApiRoutes.Announcements.Get.Replace("{id}", announcement.Id.ToString()); var response = new AnnouncementResponse { Id = announcement.Id }; //201 - Created return(Created(locationUri, response)); }
public async Task Create_ReturnsOk_WhenCreatedSuccessfully() { //Arrange await AuthenticateAsync(); await LoginAsync(); //Adds token var createdAnnouncement = new CreateAnnouncementDto { Name = "Create Integration Test", Type = "Sale", Description = "Create Integration Test Description", Image = null }; //Act var response = await TestClient.PostAsJsonAsync( ApiRoutes.Announcements.Create, createdAnnouncement); var content = await response.Content.ReadAsAsync <AnnouncementResponse>(); //Assert response.StatusCode.Should().Be(HttpStatusCode.Created); content.Should().NotBeNull(); content.Should().BeOfType <AnnouncementResponse>(); }
public async Task Get_ReturnsOk_WhenAdminLoggedIn() { //Arrange await LoginAsAdminAsync(); var createdAnnouncement = new CreateAnnouncementDto { Name = "Announcement To Report", Type = "Other", Description = "Report", Image = null }; var announcementResponse = await TestClient.PostAsJsonAsync( ApiRoutes.Announcements.Create, createdAnnouncement); var announcementContent = await announcementResponse.Content.ReadAsAsync <AnnouncementResponse>(); int announcementId = announcementContent.Id; var createdReport = new CreateReportDto { ReportCause = "Test", ReportDescription = "Test", }; var reportResponse = await TestClient.PostAsJsonAsync( ApiRoutes.Reports.Create.Replace("{announcementId}", announcementId.ToString()), createdReport); var reportResponseContent = await reportResponse.Content.ReadAsAsync <ReportResponse>(); //Act var response = await TestClient.GetAsync( ApiRoutes.Reports.Get.Replace( "{reportId}", reportResponseContent.Id.ToString())); var content = await response.Content.ReadAsAsync <Report>(); //Assert response.StatusCode.Should().Be(HttpStatusCode.OK); content.Should().NotBeNull(); content.ReportCause.Should().Be("Test"); content.ReportDescription.Should().Be("Test"); }
public async Task <IActionResult> PutAnnouncement([FromRoute] Guid id, [FromBody] CreateAnnouncementDto createAnnouncementDto) { switch (createAnnouncementDto.Type) { case "info": break; case "warning": break; case "danger": break; case "primary": break; case "secondary": break; default: return(BadRequest()); } try { var announcement = await _announcementService.GetByIdAsync(id); announcement.Subject = createAnnouncementDto.Subject; announcement.Type = createAnnouncementDto.Type; await _announcementService.SaveAllAsync(); } catch (DbUpdateConcurrencyException) { if (!await _announcementService.GetIfExistsByIdAsync(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task Create_ReturnsUnauthorized_WhenNotLoggedIn() { //Arrange var createdAnnouncement = new CreateAnnouncementDto { Name = "Not logged in test", Type = "Other", Description = "Not logged in test description", Image = null }; //Act var response = await TestClient.PostAsJsonAsync( ApiRoutes.Announcements.Create, createdAnnouncement); //Assert response.StatusCode.Should().Be(HttpStatusCode.Unauthorized); }
public async Task <IActionResult> OnPostAsync() { var createdAnnouncement = new CreateAnnouncementDto { Name = Name, Type = Type.ToString(), Description = Description, Image = null }; if (ImageFile != null) { //Checking AllowedImageExtensions attribute error message if (!ModelState.IsValid) { return(Page()); } MemoryStream ms = new MemoryStream(); await ImageFile.CopyToAsync(ms); createdAnnouncement.Image = ms.ToArray(); ms.Close(); ms.Dispose(); } var success = await _announcementClient.CreateAnnouncementAsync(createdAnnouncement); if (!success) { ModelState.AddModelError("UnknownError", "Something went wrong creating the announcement..."); return(Page()); } return(RedirectToPage("/Index")); }
public async Task <ActionResult <Announcement> > PostAnnouncement(CreateAnnouncementDto createAnnouncementDto) { switch (createAnnouncementDto.Type) { case "info": break; case "warning": break; case "danger": break; case "primary": break; case "secondary": break; default: return(BadRequest()); } var announcement = new Announcement { Subject = createAnnouncementDto.Subject, Type = createAnnouncementDto.Type, Author = await _userManager.GetUserAsync(User) }; var result = await _announcementService.AddAsync(announcement); await _announcementService.SaveAllAsync(); return(Ok(new { result.Entity.Id, userName = result.Entity.Author.UserName, result.Entity.Subject, result.Entity.Type, result.Entity.CreatedAt })); }
public async Task <bool> CreateAnnouncementAsync(CreateAnnouncementDto announcement) { var response = await _httpClient.PostAsJsonAsync(ApiRoutes.Announcements.Create, announcement); return(response.IsSuccessStatusCode); }