Example #1
0
        public async Task <IActionResult> PostSites([FromBody] SiteCreateRequestDto model)
        {
            var oid = _authService.GetRequestOid(Request);

            if (!_resourceService.IsNewSiteFriendlyIdValid(model, oid))
            {
                string errorKey = nameof(model.FriendlyId);
                ModelState.AddModelError(errorKey, "There already exists a Site with this ID.");
                return(ValidationProblem(ModelState));
            }

            var mappedSite = _mapper.Map <Site>(model);
            var user       = await _userManager.GetUserAsync(User);

            mappedSite.Oid             = oid;
            mappedSite.CreatedByUserId = user.Id;
            mappedSite.CreatedAt       = DateTime.UtcNow;
            mappedSite.IsActive        = true;

            await _appDbContext.AddAsync(mappedSite);

            await _appDbContext.SaveChangesAsync();

            await _resourceService.FlushCacheForNewSiteAsync(Request, oid);

            return(CreatedAtRoute(nameof(GetSitesDetail), new { siteId = mappedSite.Id }, _mapper.Map <SiteReadResponseDto>(mappedSite)));
        }
Example #2
0
        public async Task PostSitesAndGetSitesDetail_ReturnsCorrectData()
        {
            // Arrange
            var expectedTitle       = "Test Site Integration";
            var expectedDescription = "Lorum Imsum Test";
            var expectedEndDate     = new DateTime(2020, 12, 31);
            var expectedFriendlyId  = "4455A";

            await LoginContractorOne();

            // Act - 1
            var contentToPost = new SiteCreateRequestDto
            {
                Title       = expectedTitle,
                Description = expectedDescription,
                EndDate     = expectedEndDate,
                FriendlyId  = expectedFriendlyId
            };
            var postResponse = await TestClient.PostAsync("api/sites/", new StringContent(JsonConvert.SerializeObject(contentToPost), Encoding.UTF8, "application/json"));

            var postResponseContent = JsonConvert.DeserializeObject <SiteReadResponseDto>(await postResponse.Content.ReadAsStringAsync());

            // Act - 2
            var getResponse = await TestClient.GetAsync($"api/sites/{postResponseContent.Id}");

            var getResponseContent = JsonConvert.DeserializeObject <SiteReadResponseDto>(await getResponse.Content.ReadAsStringAsync());

            // Assert
            postResponse.StatusCode.Should().Be(HttpStatusCode.Created);
            getResponse.StatusCode.Should().Be(HttpStatusCode.OK);
            getResponseContent.Title.Should().Be(expectedTitle);
            getResponseContent.Description.Should().Be(expectedDescription);
            getResponseContent.EndDate.Should().Be(expectedEndDate);
            getResponseContent.FriendlyId.Should().Be(expectedFriendlyId);
        }
Example #3
0
        public async Task PostSiteWithoutLogin_YieldsUnauthorized()
        {
            // Arrange
            var expectedStatusCode  = HttpStatusCode.Unauthorized;
            var expectedTitle       = "Test Site Integration";
            var expectedDescription = "Lorum Imsum Test";
            var expectedEndDate     = new DateTime(2020, 12, 31);
            var expectedFriendlyId  = "4455A";

            // Act
            var contentToPost = new SiteCreateRequestDto
            {
                Title       = expectedTitle,
                Description = expectedDescription,
                EndDate     = expectedEndDate,
                FriendlyId  = expectedFriendlyId
            };
            var postResponse = await TestClient.PostAsync("api/sites/", new StringContent(JsonConvert.SerializeObject(contentToPost), Encoding.UTF8, "application/json"));

            // Assert
            postResponse.StatusCode.Should().Be(expectedStatusCode);
        }
 public bool IsNewSiteFriendlyIdValid(SiteCreateRequestDto dto, Guid oid)
 {
     return(!_appDbContext.Sites.Any(s => s.IsActive && s.Oid == oid && s.FriendlyId == dto.FriendlyId));
 }