public async Task GetPolicyByName_GivenModelDoesNotContainAPolicyName_ReturnsBadRequest() { //Arrange PolicyGetModel model = new PolicyGetModel { SpecificationId = SpecificationId }; 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); ILogger logger = CreateLogger(); SpecificationsService service = CreateService(logs: logger); //Act IActionResult result = await service.GetPolicyByName(request); //Assert result .Should() .BeOfType <BadRequestObjectResult>(); logger .Received(1) .Error(Arg.Is("No policy name was provided to GetPolicyByName")); }
public async Task GetPolicyByName_GivenSpecificationExistsAndPolicyExists_ReturnsSuccess() { //Arrange Specification spec = new Specification { Current = new SpecificationVersion() { Policies = new[] { new Policy { Name = PolicyName } }, }, }; PolicyGetModel model = new PolicyGetModel { SpecificationId = SpecificationId, Name = PolicyName }; 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); ILogger logger = CreateLogger(); ISpecificationsRepository specificationsRepository = CreateSpecificationsRepository(); specificationsRepository .GetSpecificationById(Arg.Is(SpecificationId)) .Returns(spec); SpecificationsService service = CreateService(specificationsRepository: specificationsRepository, logs: logger); //Act IActionResult result = await service.GetPolicyByName(request); //Assert result .Should() .BeOfType <OkObjectResult>(); logger .Received(1) .Information(Arg.Is($"A policy was found for specification id {SpecificationId} and name {PolicyName}")); }
public async Task GetPolicyByName_GivenSpecificationDoesNotExist_ReturnsPreConditionFailed() { //Arrange PolicyGetModel model = new PolicyGetModel { SpecificationId = SpecificationId, Name = PolicyName }; 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); ILogger logger = CreateLogger(); ISpecificationsRepository specificationsRepository = CreateSpecificationsRepository(); specificationsRepository .GetSpecificationById(Arg.Is(SpecificationId)) .Returns((Specification)null); SpecificationsService service = CreateService(specificationsRepository: specificationsRepository, logs: logger); //Act IActionResult result = await service.GetPolicyByName(request); //Assert result .Should() .BeOfType <StatusCodeResult>(); StatusCodeResult statusCodeResult = (StatusCodeResult)result; statusCodeResult .StatusCode .Should() .Be(412); logger .Received(1) .Error(Arg.Is($"No specification was found for specification id {SpecificationId}")); }