public async Task Download_WhenResponseIsASuccess_ReturnsRedirectResult() { //Arrange const string schemaName = "test schema"; const string schemaUrl = "http://wherever"; DatasetSchemaSasUrlResponseModel downloadDatasetSchemaResponse = new DatasetSchemaSasUrlResponseModel { SchemaUrl = schemaUrl }; ApiResponse <DatasetSchemaSasUrlResponseModel> apiResponse = new ApiResponse <DatasetSchemaSasUrlResponseModel>(HttpStatusCode.OK, downloadDatasetSchemaResponse); IDatasetsApiClient apiClient = CreateApiClient(); apiClient .GetDatasetSchemaSasUrl(Arg.Is <DatasetSchemaSasUrlRequestModel>(m => m.DatasetDefinitionId == schemaName)) .Returns(apiResponse); DownloadDatasetSchemaController controller = CreateController(apiClient); //Act IActionResult actionResult = await controller.Download(schemaName); //Assert actionResult .Should() .BeOfType <RedirectResult>() .Which .Url .Should() .Be(schemaUrl); }
public async Task GetDatasetSchemaSasUrl_GivenModelAndDatasetNameDoesNotContainSlashes_GetSasUrl() { //Arrange const string sasUrl = "https://wherever.naf?jhjhjhjhjhhjhjhjhjjhj"; DatasetSchemaSasUrlRequestModel model = new DatasetSchemaSasUrlRequestModel { DatasetDefinitionId = "12345" }; string json = JsonConvert.SerializeObject(model); byte[] byteArray = Encoding.UTF8.GetBytes(json); MemoryStream stream = new MemoryStream(byteArray); HttpRequest request = Substitute.For <HttpRequest>(); request .Body .Returns(stream); IBlobClient blobClient = CreateBlobClient(); blobClient .GetBlobSasUrl(Arg.Any <string>(), Arg.Any <DateTimeOffset>(), Arg.Any <SharedAccessBlobPermissions>()) .Returns(sasUrl); DatasetDefinition datasetDefinition = new DatasetDefinition() { Id = "12345", Name = "14 15", }; IDatasetRepository datasetRepository = CreateDataSetsRepository(); datasetRepository .GetDatasetDefinition(Arg.Is(model.DatasetDefinitionId)) .Returns(datasetDefinition); DefinitionsService definitionsService = CreateDefinitionsService( datasetsRepository: datasetRepository, blobClient: blobClient); //Act IActionResult result = await definitionsService.GetDatasetSchemaSasUrl(request); //Assert result .Should() .BeOfType <OkObjectResult>(); OkObjectResult okObjectResult = result as OkObjectResult; DatasetSchemaSasUrlResponseModel responseModel = okObjectResult.Value as DatasetSchemaSasUrlResponseModel; responseModel .SchemaUrl .Should() .Be(sasUrl); blobClient .Received(1) .GetBlobSasUrl(Arg.Is("schemas/14 15.xlsx"), Arg.Any <DateTimeOffset>(), Arg.Any <SharedAccessBlobPermissions>()); }