Ejemplo n.º 1
0
        public async Task GetFundingSchemaByVersion_WhenSchemaRetrivedFromBlobStorgae_ReturnsOkResult()
        {
            //arrange
            const string schema = "schema";

            const string version = "0.6";

            string blobName = $"{fundingSchemaFolder}/{version}.json";

            IFundingSchemaRepository fundingSchemaRepository = CreateFundingSchemaRepository();

            fundingSchemaRepository
            .SchemaVersionExists(Arg.Is(blobName))
            .Returns(true);

            fundingSchemaRepository
            .GetFundingSchemaVersion(Arg.Is(blobName))
            .Returns(schema);

            ILogger logger = CreateLogger();

            FundingSchemaService fundingSchemaService = CreateFundingSchemaService(logger, fundingSchemaRepository: fundingSchemaRepository);

            //Act
            IActionResult result = await fundingSchemaService.GetFundingSchemaByVersion(version);

            //Assert
            result
            .Should()
            .BeAssignableTo <OkObjectResult>()
            .Which
            .Value
            .Should()
            .Be(schema);
        }
Ejemplo n.º 2
0
        public async Task GetFundingSchemaByVersion_WhenCheckingAlreadyExistsThrowsException_ReturnsInternalServerError()
        {
            //arrange
            const string version = "0.6";

            string blobName = $"{fundingSchemaFolder}/{version}.json";

            IFundingSchemaRepository fundingSchemaRepository = CreateFundingSchemaRepository();

            fundingSchemaRepository
            .When(x => x.SchemaVersionExists(Arg.Any <string>()))
            .Do(x => { throw new Exception(); });

            ILogger logger = CreateLogger();

            FundingSchemaService fundingSchemaService = CreateFundingSchemaService(logger, fundingSchemaRepository: fundingSchemaRepository);

            //Act
            IActionResult result = await fundingSchemaService.GetFundingSchemaByVersion(version);

            //Assert
            result
            .Should()
            .BeAssignableTo <InternalServerErrorResult>()
            .Which
            .Value
            .Should()
            .Be($"Error occurred fetching funding schema verion '{version}'");

            logger
            .Received(1)
            .Error(Arg.Is($"Failed to check if funding schema version: '{blobName}' exists"));
        }
Ejemplo n.º 3
0
        public async Task SaveFundingSchema_WhenEmptySchemaProvided_ReturnsBadRequest(string schema)
        {
            //Arrange
            FundingSchemaService fundingSchemaService = CreateFundingSchemaService();

            //Act
            IActionResult result = await fundingSchemaService.SaveFundingSchema(createdAtActionName, createdAtControllerName, schema);

            //Assert
            result
            .Should()
            .BeAssignableTo <BadRequestObjectResult>()
            .Which
            .Value
            .Should()
            .Be("Null or empty funding schema was provided.");
        }
Ejemplo n.º 4
0
        public async Task SaveFundingSchema_WhenNoVersionIsSet_ReturnsBadRequest(string resourcePath)
        {
            //arrange
            FundingSchemaService fundingSchemaService = CreateFundingSchemaService();

            //Act
            IActionResult result = await fundingSchemaService.SaveFundingSchema(
                createdAtActionName, createdAtControllerName, CreateSchemaFile(resourcePath));

            //Assert
            result
            .Should()
            .BeAssignableTo <BadRequestObjectResult>()
            .Which
            .Value
            .Should()
            .Be("An invalid schema version was provided");
        }
Ejemplo n.º 5
0
        public async Task GetFundingSchemaByVersion_GivenASchemaVersionThatDoesNotRxistInBlobStorage_ReturnsNotFound()
        {
            //Arrange
            const string version = "0.6";

            string blobName = $"{fundingSchemaFolder}/{version}.json";

            IFundingSchemaRepository fundingSchemaRepository = CreateFundingSchemaRepository();

            fundingSchemaRepository
            .SchemaVersionExists(Arg.Is(blobName))
            .Returns(false);

            FundingSchemaService fundingSchemaService = CreateFundingSchemaService(fundingSchemaRepository: fundingSchemaRepository);

            //Act
            IActionResult result = await fundingSchemaService.GetFundingSchemaByVersion(version);

            //Assert
            result
            .Should()
            .BeAssignableTo <NotFoundResult>();
        }
Ejemplo n.º 6
0
        public async Task GetFundingSchemaByVersion_WhenEmptyStringRetrivedFromBlobStorgae_ReturnsInternalServerError()
        {
            //arrange
            const string version = "0.6";

            string blobName = $"{fundingSchemaFolder}/{version}.json";

            IFundingSchemaRepository fundingSchemaRepository = CreateFundingSchemaRepository();

            fundingSchemaRepository
            .SchemaVersionExists(Arg.Is(blobName))
            .Returns(true);

            fundingSchemaRepository
            .GetFundingSchemaVersion(Arg.Is(blobName))
            .Returns(string.Empty);

            ILogger logger = CreateLogger();

            FundingSchemaService fundingSchemaService = CreateFundingSchemaService(logger, fundingSchemaRepository: fundingSchemaRepository);

            //Act
            IActionResult result = await fundingSchemaService.GetFundingSchemaByVersion(version);

            //Assert
            result
            .Should()
            .BeAssignableTo <InternalServerErrorResult>()
            .Which
            .Value
            .Should()
            .Be($"Failed to retrive blob contents for funding schema version '{version}'");

            logger
            .Received(1)
            .Error(Arg.Is($"Empty schema returned from blob storage for blob name '{blobName}'"));
        }
Ejemplo n.º 7
0
        public async Task SaveFundingSchema_WhenSavingIsSuccessful_ReturnsCreatedAtResult()
        {
            //arrange
            string json = CreateSchemaFile("CalculateFunding.Services.Policy.Resources.LogicalModel.json");

            IFundingSchemaRepository fundingSchemaRepository = CreateFundingSchemaRepository();

            ILogger logger = CreateLogger();

            FundingSchemaService fundingSchemaService = CreateFundingSchemaService(logger, fundingSchemaRepository: fundingSchemaRepository);

            //Act
            IActionResult result = await fundingSchemaService.SaveFundingSchema(
                createdAtActionName, createdAtControllerName, json);

            //Assert
            result
            .Should()
            .BeAssignableTo <CreatedAtActionResult>();

            CreatedAtActionResult actionResult = result as CreatedAtActionResult;

            actionResult
            .ActionName
            .Should()
            .Be("GetFundingSchemaByVersion");

            actionResult
            .ControllerName
            .Should()
            .Be("SchemaController");

            actionResult
            .RouteValues["schemaVersion"].ToString()
            .Should()
            .Be("1.0");
        }
Ejemplo n.º 8
0
        public async Task SaveFundingSchema_WhenVersionDoesNotExistButSavingToBlobStorageCausesAnError_ReturnsNoContentResult()
        {
            //arrange
            const string version = "1.0";

            string blobName = $"{fundingSchemaFolder}/{version}.json";

            string json = CreateSchemaFile("CalculateFunding.Services.Policy.Resources.LogicalModel.json");

            IFundingSchemaRepository fundingSchemaRepository = CreateFundingSchemaRepository();

            fundingSchemaRepository
            .When(x => x.SaveFundingSchemaVersion(Arg.Any <string>(), Arg.Any <byte[]>()))
            .Do(x => { throw new Exception(); });

            ILogger logger = CreateLogger();

            FundingSchemaService fundingSchemaService = CreateFundingSchemaService(logger, fundingSchemaRepository: fundingSchemaRepository);

            //Act
            IActionResult result = await fundingSchemaService.SaveFundingSchema(
                createdAtActionName, createdAtControllerName, json);

            //Assert
            result
            .Should()
            .BeAssignableTo <InternalServerErrorResult>()
            .Which
            .Value
            .Should()
            .Be("Error occurred uploading funding schema");

            logger
            .Received(1)
            .Error(Arg.Any <Exception>(), Arg.Is($"Failed to save funding schema '{blobName}' to blob storage"));
        }
Ejemplo n.º 9
0
        public async Task SaveFundingSchema_WhenInvalidSchemaProvided_ReturnsBadRequest()
        {
            //Arrange

            ILogger logger = CreateLogger();

            FundingSchemaService fundingSchemaService = CreateFundingSchemaService(logger);

            //Act
            IActionResult result = await fundingSchemaService.SaveFundingSchema(createdAtActionName, createdAtControllerName, "Blah Blah");

            //Assert
            result
            .Should()
            .BeAssignableTo <BadRequestObjectResult>()
            .Which
            .Value
            .Should()
            .Be("Failed to parse request body as a valid json schema.");

            logger
            .Received(1)
            .Error(Arg.Any <Exception>(), Arg.Is("Failed to parse request body as a valid json schema."));
        }