public void SetsResponseExamples_WhenMethodNotAnnotated() { // 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 supportedResponseTypes = new List <ApiResponseType> { new ApiResponseType { StatusCode = 200, 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 PersonResponseAutoExample().GetExamples(); actualExample.Id.ShouldBe(expectedExample.Id); actualExample.FirstName.ShouldBe(expectedExample.FirstName); }
public void SetsResponseExamples_FromMethodAttributes() { // 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.AnnotatedWithSwaggerResponseAttribute)); SetSwaggerResponses(operation, filterContext); // Act sut.Apply(operation, filterContext); // Assert var actualExample = JsonConvert.DeserializeObject <PersonResponse>(((OpenApiRawString)response.Content["application/json"].Example).Value); var expectedExample = new PersonResponseAutoExample().GetExamples(); actualExample.Id.ShouldBe(expectedExample.Id); actualExample.FirstName.ShouldBe(expectedExample.FirstName); actualExample.Age.ShouldBe(27); }
public void 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.AnnotatedWithSwaggerResponseAttribute)); SetSwaggerResponses(operation, filterContext); // Act sut.Apply(operation, filterContext); // Assert string jsonExample = ((OpenApiRawString)response.Content["application/json"].Example).Value; var expectedExample = new PersonResponseAutoExample().GetExamples(); jsonExample.ShouldNotContain($"\"age\": {expectedExample.Age}", Case.Sensitive); jsonExample.ShouldContain($"\"id\": {expectedExample.Id}", Case.Sensitive); }
public void ShouldEmitSystemTextJsonPropertyName() { // Arrange var mvcOutputFormatter = new MvcOutputFormatter(FormatterOptions.WithSystemTextJsonFormatter, new FakeLoggerFactory()); var responseExample = new ResponseExample(mvcOutputFormatter); var sut = new ServiceProviderExamplesOperationFilter(serviceProvider, null, responseExample); 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.AnnotatedWithSwaggerResponseAttribute)); SetSwaggerResponses(operation, filterContext); // Act sut.Apply(operation, filterContext); // Assert string jsonExample = ((OpenApiRawString)response.Content["application/json"].Example).Value; var expectedExample = new PersonResponseAutoExample().GetExamples(); jsonExample.ShouldContain($"\"lastagain\": \"{expectedExample.LastName}\"", Case.Sensitive); }