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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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");
        }
Beispiel #6
0
        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}'");
        }