public void Apply_ShouldNotEmitObsoleteProperties() { // Arrange schemaGeneratorOptions.IgnoreObsoleteProperties = true; var response = new OpenApiResponse { Content = new Dictionary <string, OpenApiMediaType> { { "application/json", new OpenApiMediaType() } } }; var operation = new OpenApiOperation { OperationId = "foobar", Responses = new OpenApiResponses() }; operation.Responses.Add("200", response); var filterContext = FilterContextFor(typeof(FakeActions), nameof(FakeActions.AnnotatedWithSwaggerResponseExampleAttribute)); SetSwaggerResponses(operation, filterContext); // Act sut.Apply(operation, filterContext); // Assert string jsonExample = ((OpenApiRawString)response.Content["application/json"].Example).Value; var expectedExample = new PersonResponseExample().GetExamples(); jsonExample.ShouldNotContain($"\"age\": {expectedExample.Age}", Case.Sensitive); jsonExample.ShouldContain($"\"id\": {expectedExample.Id}", Case.Sensitive); }
public void ShouldSetExampleForDefaultResponse() { // Arrange var response = new OpenApiResponse { Content = new Dictionary <string, OpenApiMediaType> { { "application/json", new OpenApiMediaType() } } }; var operation = new OpenApiOperation { OperationId = "foobar", Responses = new OpenApiResponses() }; operation.Responses.Add("default", response); var supportedResponseTypes = new List <ApiResponseType> { new ApiResponseType { StatusCode = 0, Type = typeof(PersonResponse) } }; var filterContext = FilterContextFor(typeof(FakeActions), nameof(FakeActions.PersonResponseNotAnnotated), supportedResponseTypes: supportedResponseTypes); SetSwaggerResponses(operation, filterContext); // Act sut.Apply(operation, filterContext); // Assert var actualExample = JsonConvert.DeserializeObject <PersonResponse>(((OpenApiRawString)response.Content["application/json"].Example).Value); var expectedExample = new PersonResponseExample().GetExamples(); actualExample.Id.ShouldBe(expectedExample.Id); }
public void SetsResponseExamples_FromControllerAttributes() { // Arrange var response = new OpenApiResponse { Content = new Dictionary <string, OpenApiMediaType> { { "application/json", new OpenApiMediaType() } } }; var operation = new OpenApiOperation { OperationId = "foobar", Responses = new OpenApiResponses() }; operation.Responses.Add("200", response); var filterContext = FilterContextFor(typeof(FakeControllers.SwaggerResponseExampleController), nameof(FakeControllers.SwaggerResponseExampleController.None)); SetSwaggerResponses(operation, filterContext); // Act sut.Apply(operation, filterContext); // Assert var actualExample = JsonConvert.DeserializeObject <PersonResponse>(((OpenApiRawString)response.Content["application/json"].Example).Value); var expectedExample = new PersonResponseExample().GetExamples(); actualExample.Id.ShouldBe(expectedExample.Id); actualExample.FirstName.ShouldBe(expectedExample.FirstName); }
public void SetsResponseExamples_FromMethodAttributesPascalCase() { // Arrange var response = new OpenApiResponse { Content = new Dictionary <string, OpenApiMediaType> { { "application/json", new OpenApiMediaType() } } }; var operation = new OpenApiOperation { OperationId = "foobar", Responses = new OpenApiResponses() }; operation.Responses.Add("200", response); var filterContext = FilterContextFor(typeof(FakeActions), nameof(FakeActions.AnnotatedWithSwaggerResponseExampleAttributePascalCase)); SetSwaggerResponses(operation, filterContext); // Act sut.Apply(operation, filterContext); // Assert string jsonExample = ((OpenApiRawString)response.Content["application/json"].Example).Value; var expectedExample = new PersonResponseExample().GetExamples(); jsonExample.ShouldContain($"\"Id\": {expectedExample.Id}", Case.Sensitive); }
public void ThenAnArgumentNullExceptionIsThrown() { var value = new PersonResponseExample().GetExamples(); var contentType = MediaTypeHeaderValue.Parse("application/xml; charset=utf-8"); Should .Throw <ArgumentNullException>(() => sut.Serialize(value, contentType)) .ParamName.ShouldBe("loggerFactory"); }
public void ThenAFormatNotFoundExceptionIsThrown() { var value = new PersonResponseExample().GetExamples(); var contentType = MediaTypeHeaderValue.Parse("application/json; charset=utf-8"); Should .Throw <MvcOutputFormatter.FormatterNotFoundException>(() => sut.Serialize(value, contentType)) .Message.ShouldBe($"OutputFormatter not found for '{contentType}'"); }