Exemple #1
0
        public async Task Edit_Invalid_UnAuthorisedException_Test()
        {
            _annualReportService.Setup(a => a.EditAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <AnnualReportDTO>()))
            .Throws(new UnauthorizedAccessException());

            _userManagerService.Setup(a => a.GetUserIdAsync(It.IsAny <ClaimsPrincipal>()));

            _loggerService.Setup(l => l.LogError(It.IsAny <string>()));

            _localizer
            .Setup(s => s["NoAccess"])
            .Returns(GetNoAccess());

            AnnualReportController annualController = CreateAnnualReportController;

            // Act
            AnnualReportDTO rdto   = new AnnualReportDTO();
            var             result = await annualController.Edit(rdto);

            var expected = StatusCodes.Status403Forbidden;
            var actual   = (result as ObjectResult).StatusCode;


            // Assert
            Assert.AreEqual(actual, expected);
            Assert.NotNull(result);
            _localizer
            .Verify(s => s["NoAccess"]);
            _loggerService.Verify(l => l.LogError(It.IsAny <string>()));
            Assert.IsInstanceOf <ObjectResult>(result);
        }
Exemple #2
0
        public async Task Create_Invalid_NullReferenceFoundException_Test()
        {
            _annualReportService.Setup(a => a.CreateAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <AnnualReportDTO>()))
            .Throws(new NullReferenceException());



            _loggerService.Setup(l => l.LogError(It.IsAny <string>()));

            _localizer
            .Setup(s => s["CityNotFound"])
            .Returns(GetCityNotFound());

            AnnualReportController annualController = CreateAnnualReportController;

            // Act
            AnnualReportDTO rdto   = new AnnualReportDTO();
            var             result = await annualController.Create(rdto);

            var expected = StatusCodes.Status404NotFound;
            var actual   = (result as ObjectResult).StatusCode;


            // Assert
            Assert.AreEqual(expected, actual);
            Assert.NotNull(result);
            _localizer
            .Verify(s => s["CityNotFound"]);
            _loggerService.Verify(l => l.LogError(It.IsAny <string>()));
            Assert.IsInstanceOf <ObjectResult>(result);
        }
Exemple #3
0
        public async Task Edit_Invalid_InvalidOperationException_Test()
        {
            _annualReportService.Setup(a => a.EditAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <AnnualReportDTO>()))
            .Throws(new InvalidOperationException());

            _loggerService.Setup(l => l.LogError(It.IsAny <string>()));

            _localizer
            .Setup(s => s["FailedEdit"])
            .Returns(GetFailedEdit());

            AnnualReportController annualController = CreateAnnualReportController;

            // Act
            AnnualReportDTO rdto   = new AnnualReportDTO();
            var             result = await annualController.Edit(rdto);

            var expected = StatusCodes.Status400BadRequest;
            var actual   = (result as ObjectResult).StatusCode;


            // Assert

            Assert.NotNull(result);
            Assert.AreEqual(actual, expected);
            _localizer
            .Verify(s => s["FailedEdit"]);
            _loggerService.Verify(l => l.LogError(It.IsAny <string>()));
            Assert.IsInstanceOf <ObjectResult>(result);
        }
Exemple #4
0
        public async Task Edit_Valid_Test()
        {
            _annualReportService.Setup(a => a.EditAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <AnnualReportDTO>()));

            _annualReportService.Setup(a => a.GetByIdAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <int>()))
            .ReturnsAsync(new AnnualReportDTO());

            _localizer
            .Setup(s => s["Edited"])
            .Returns(GetEdited());

            var expected = StatusCodes.Status200OK;


            AnnualReportController annualController = CreateAnnualReportController;
            AnnualReportDTO        annualReport     = new AnnualReportDTO();
            // Act
            var result = await annualController.Edit(annualReport);

            var actual = (result as ObjectResult).StatusCode;

            // Assert
            Assert.NotNull(result);
            _localizer
            .Verify(s => s["Edited"]);
            Assert.AreEqual(actual, expected);
            Assert.IsInstanceOf <ObjectResult>(result);
        }
Exemple #5
0
        public async Task Create_Valid_Test()
        {
            _annualReportService.Setup(a => a.CreateAsync(It.IsAny <ClaimsPrincipal>(), It.IsAny <AnnualReportDTO>()));

            _userManagerService.Setup(a => a.GetUserIdAsync(It.IsAny <ClaimsPrincipal>()));

            _loggerService.Setup(l => l.LogInformation(It.IsAny <string>()));

            _localizer
            .Setup(s => s["Created"])
            .Returns(GetCreated());



            AnnualReportController annualController = CreateAnnualReportController;

            // Act
            AnnualReportDTO rdto   = new AnnualReportDTO();
            var             result = await annualController.Create(rdto);

            var expected = StatusCodes.Status201Created;
            var actual   = (result as ObjectResult).StatusCode;

            // Assert
            Assert.AreEqual(expected, actual);
            Assert.NotNull(result);
            _localizer
            .Verify(s => s["Created"]);
            _loggerService.Verify(l => l.LogInformation(It.IsAny <string>()));
            Assert.IsInstanceOf <ObjectResult>(result);
        }
        public async Task <IActionResult> Edit(AnnualReportDTO annualReport)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    await _annualReportService.EditAsync(await _userManager.GetUserAsync(User), annualReport);

                    _loggerService.LogInformation($"User (id: {(await _userManager.GetUserAsync(User)).Id}) edited annual report (id: {annualReport.ID})");
                    return(StatusCode(StatusCodes.Status200OK, new { message = _localizer["Edited"].Value }));
                }
                catch (InvalidOperationException)
                {
                    _loggerService.LogError($"Annual report (id: {annualReport.ID}) can not be edited");
                    return(StatusCode(StatusCodes.Status400BadRequest, new { message = _localizer["FailedEdit"].Value }));
                }
                catch (NullReferenceException)
                {
                    _loggerService.LogError($"Annual report (id: {annualReport.ID}) not found");
                    return(StatusCode(StatusCodes.Status404NotFound, new { message = _localizer["NotFound"].Value }));
                }
                catch (UnauthorizedAccessException)
                {
                    _loggerService.LogError($"User (id: {(await _userManager.GetUserAsync(User)).Id}) hasn't access to edit annual report (id: {annualReport.ID})");
                    return(StatusCode(StatusCodes.Status403Forbidden, new { message = _localizer["NoAccess"].Value }));
                }
            }
            return(BadRequest(ModelState));
        }
        public async Task <IActionResult> Create(AnnualReportDTO annualReport)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    await _annualReportService.CreateAsync(await _userManager.GetUserAsync(User), annualReport);

                    _loggerService.LogInformation($"User (id: {(await _userManager.GetUserAsync(User)).Id}) created annual report for city (id: {annualReport.CityId})");
                    return(StatusCode(StatusCodes.Status201Created, new { message = _localizer["Created"].Value }));
                }
                catch (InvalidOperationException)
                {
                    _loggerService.LogError($"City (id: {annualReport.CityId}) has created annual report");
                    return(StatusCode(StatusCodes.Status400BadRequest, new { message = _localizer["HasReport"].Value }));
                }
                catch (UnauthorizedAccessException)
                {
                    _loggerService.LogError($"User (id: {(await _userManager.GetUserAsync(User)).Id}) hasn't access to city (id: {annualReport.CityId})");
                    return(StatusCode(StatusCodes.Status403Forbidden, new { message = _localizer["CityNoAccess"].Value }));
                }
                catch (NullReferenceException)
                {
                    _loggerService.LogError($"City (id: {annualReport.CityId}) not found");
                    return(StatusCode(StatusCodes.Status404NotFound, new { message = _localizer["CityNotFound"].Value }));
                }
            }
            else
            {
                return(BadRequest(ModelState));
            }
        }
Exemple #8
0
        public async Task Edit_Invalid_ModelState_Test()
        {
            AnnualReportController annualController = CreateAnnualReportController;
            AnnualReportDTO        annualReport     = new AnnualReportDTO();

            annualController.ModelState.AddModelError("NameError", "Required");
            // Act
            var result = await annualController.Edit(annualReport);

            // Assert
            Assert.NotNull(result);

            Assert.IsInstanceOf <BadRequestObjectResult>(result);
        }
Exemple #9
0
        ///<inheritdoc/>
        public async Task EditAsync(User user, AnnualReportDTO annualReportDTO)
        {
            var annualReport = await _repositoryWrapper.AnnualReports.GetFirstOrDefaultAsync(
                predicate : a => a.ID == annualReportDTO.ID && a.CityId == annualReportDTO.CityId && a.CreatorId == annualReportDTO.CreatorId &&
                a.Date.Date == annualReportDTO.Date.Date && a.Status == AnnualReportStatus.Unconfirmed);

            if (annualReportDTO.Status != AnnualReportStatusDTO.Unconfirmed)
            {
                throw new InvalidOperationException();
            }
            if (!await _cityAccessService.HasAccessAsync(user, annualReport.CityId))
            {
                throw new UnauthorizedAccessException();
            }
            annualReport = _mapper.Map <AnnualReportDTO, AnnualReport>(annualReportDTO);
            _repositoryWrapper.AnnualReports.Update(annualReport);
            await _repositoryWrapper.SaveAsync();
        }
Exemple #10
0
        ///<inheritdoc/>
        public async Task CreateAsync(User user, AnnualReportDTO annualReportDTO)
        {
            var city = await _repositoryWrapper.City.GetFirstOrDefaultAsync(
                predicate : a => a.ID == annualReportDTO.CityId);

            if (!await _cityAccessService.HasAccessAsync(user, city.ID))
            {
                throw new UnauthorizedAccessException();
            }
            if (await CheckCreated(city.ID))
            {
                throw new InvalidOperationException();
            }
            var annualReport = _mapper.Map <AnnualReportDTO, AnnualReport>(annualReportDTO);

            annualReport.CreatorId = user.Id;
            annualReport.Date      = DateTime.Now;
            annualReport.Status    = AnnualReportStatus.Unconfirmed;
            await _repositoryWrapper.AnnualReports.CreateAsync(annualReport);

            await _repositoryWrapper.SaveAsync();
        }