public async Task OnPostAsync_GivenDataetVersionIUsNullAndRelationshipIdAndGetsModelWithoutDatasets_Returns200() { // Arrange SelectDataSourceModel sourceModel = new SelectDataSourceModel(); ApiResponse <SelectDataSourceModel> sourcesResponse = new ApiResponse <SelectDataSourceModel>(HttpStatusCode.OK, sourceModel); IDatasetsApiClient datasetsApiClient = CreateDatasetsApiClient(); datasetsApiClient .GetDatasourcesByRelationshipId(Arg.Is(relationshipId)) .Returns(sourcesResponse); ILogger logger = CreateLogger(); SelectSourceDatasetPageModel pageModel = CreatePageModel(datasetsApiClient, logger); // Act IActionResult result = await pageModel.OnPostAsync(relationshipId, specificationId, null); //Assert result .Should() .BeOfType <PageResult>(); pageModel .IsAuthorizedToMap .Should().BeTrue(); }
public async Task OnPostAsync_GivenUserDoesNotHaveMapDatasetsPermission_Returns403() { // Arrange SelectDataSourceModel sourceModel = new SelectDataSourceModel(); ApiResponse <SelectDataSourceModel> sourcesResponse = new ApiResponse <SelectDataSourceModel>(HttpStatusCode.OK, sourceModel); IDatasetsApiClient datasetsApiClient = CreateDatasetsApiClient(); datasetsApiClient .GetDatasourcesByRelationshipId(Arg.Is(relationshipId)) .Returns(sourcesResponse); ILogger logger = CreateLogger(); IAuthorizationHelper authorizationHelper = Substitute.For <IAuthorizationHelper>(); authorizationHelper .DoesUserHavePermission(Arg.Any <ClaimsPrincipal>(), Arg.Any <ISpecificationAuthorizationEntity>(), Arg.Is(SpecificationActionTypes.CanMapDatasets)) .Returns(false); SelectSourceDatasetPageModel pageModel = CreatePageModel(datasetsApiClient, logger, authorizationHelper); // Act IActionResult result = await pageModel.OnPostAsync(relationshipId, specificationId); //Assert result .Should() .BeOfType <ForbidResult>(); pageModel .IsAuthorizedToMap .Should().BeFalse(); }
public async Task OnPostAsync_GivenDatasetVersionIsNullAndGettingRelationshipReturnsInternalServerError_Returns404() { // Arrange SelectDataSourceModel model = new SelectDataSourceModel { SpecificationId = "abc123" }; ApiResponse <SelectDataSourceModel> sourcesResponse = new ApiResponse <SelectDataSourceModel>(HttpStatusCode.InternalServerError, model); IDatasetsApiClient datasetsApiClient = CreateDatasetsApiClient(); datasetsApiClient .GetDatasourcesByRelationshipId(Arg.Is(relationshipId)) .Returns(sourcesResponse); ILogger logger = CreateLogger(); SelectSourceDatasetPageModel pageModel = CreatePageModel(datasetsApiClient, logger); // Act IActionResult result = await pageModel.OnPostAsync(relationshipId, specificationId, null); //Assert result .Should() .BeOfType <NotFoundResult>(); logger .Received(1) .Error(Arg.Is($"Failed to fetch data sources with status code InternalServerError")); }
public void OnPostAsync_GivenNullOrEmptyDatasetIdAndNullOrEmptyRelationshipId_ThrowsArgumentNullException() { // Arrange SelectSourceDatasetPageModel pageModel = CreatePageModel(); // Act Func <Task> test = async() => await pageModel.OnPostAsync(null, "", null); // Assert test .Should() .ThrowExactly <ArgumentNullException>(); }
public async Task OnPostAsync_GivenValidDatsetVersionButSavingIsUnsuccessful_Returns500() { // Arrange SelectDataSourceModel model = new SelectDataSourceModel { SpecificationId = "abc123" }; ApiResponse <SelectDataSourceModel> sourcesResponse = new ApiResponse <SelectDataSourceModel>(HttpStatusCode.OK, model); IDatasetsApiClient datasetsApiClient = CreateDatasetsApiClient(); datasetsApiClient .GetDatasourcesByRelationshipId(Arg.Is(relationshipId)) .Returns(sourcesResponse); datasetsApiClient .AssignDataSourceVersionToRelationship(Arg.Any <AssignDatasetVersion>()) .Returns(HttpStatusCode.InternalServerError); ILogger logger = CreateLogger(); SelectSourceDatasetPageModel pageModel = CreatePageModel(datasetsApiClient, logger); // Act IActionResult result = await pageModel.OnPostAsync(relationshipId, specificationId, $"{datasetId}_2"); //Assert result .Should() .BeOfType <StatusCodeResult>(); StatusCodeResult statusCodeResult = result as StatusCodeResult; statusCodeResult .StatusCode .Should() .Be(500); pageModel .IsAuthorizedToMap .Should().BeTrue(); logger .Received(1) .Error(Arg.Is($"Failed to assign dataset version with status code: InternalServerError")); }
public async Task OnPostAsync_GivenValidDatsetVersionAndSavingIsUnsuccessful_ReturnsRedirect() { // Arrange SelectDataSourceModel model = new SelectDataSourceModel { SpecificationId = "abc123" }; ApiResponse <SelectDataSourceModel> sourcesResponse = new ApiResponse <SelectDataSourceModel>(HttpStatusCode.OK, model); IDatasetsApiClient datasetsApiClient = CreateDatasetsApiClient(); datasetsApiClient .GetDatasourcesByRelationshipId(Arg.Is(relationshipId)) .Returns(sourcesResponse); datasetsApiClient .AssignDataSourceVersionToRelationship(Arg.Any <AssignDatasetVersion>()) .Returns(HttpStatusCode.NoContent); ILogger logger = CreateLogger(); SelectSourceDatasetPageModel pageModel = CreatePageModel(datasetsApiClient, logger); // Act IActionResult result = await pageModel.OnPostAsync(relationshipId, specificationId, $"{datasetId}_2"); //Assert result .Should() .BeOfType <RedirectResult>(); RedirectResult redirectResult = result as RedirectResult; redirectResult .Url .Should() .Be($"/datasets/specificationrelationships?specificationId={specificationId}&wasSuccess=true"); pageModel .IsAuthorizedToMap .Should().BeTrue(); }
public async Task OnPostAsync_GivenDatasetVersionIsInvalid_Returns500() { // Arrange SelectDataSourceModel model = new SelectDataSourceModel { SpecificationId = "abc123" }; ApiResponse <SelectDataSourceModel> sourcesResponse = new ApiResponse <SelectDataSourceModel>(HttpStatusCode.OK, model); IDatasetsApiClient datasetsApiClient = CreateDatasetsApiClient(); datasetsApiClient .GetDatasourcesByRelationshipId(Arg.Is(relationshipId)) .Returns(sourcesResponse); ILogger logger = CreateLogger(); SelectSourceDatasetPageModel pageModel = CreatePageModel(datasetsApiClient, logger); // Act IActionResult result = await pageModel.OnPostAsync(relationshipId, specificationId, datasetId); //Assert result .Should() .BeOfType <StatusCodeResult>(); StatusCodeResult statusCodeResult = result as StatusCodeResult; statusCodeResult .StatusCode .Should() .Be(500); pageModel .IsAuthorizedToMap .Should().BeTrue(); logger .Received(1) .Error(Arg.Is($"Dataset version: {datasetId} is invalid")); }