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); }
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); }
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); }
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); }
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)); } }
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); }
///<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(); }
///<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(); }