diff --git a/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs b/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs index f7dfa8f..4fc643a 100644 --- a/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs +++ b/src/SwaggerProvider.DesignTime/v3/OperationCompiler.fs @@ -252,7 +252,7 @@ type OperationCompiler(schema: OpenApiDocument, defCompiler: DefinitionCompiler, [ if not(isNull payloadMime) then "Content-Type", payloadMime if not(isNull retMime) then - "Accept", MediaTypes.ApplicationJson ] + "Accept", retMime ] @> // Locates parameters matching the arguments diff --git a/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs b/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs index 19c6498..1d0a06a 100644 --- a/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs +++ b/tests/SwaggerProvider.ProviderTests/v3/Swashbuckle.ReturnTextControllers.Tests.fs @@ -19,3 +19,12 @@ let ``Return text/csv GET Test``() = [] let ``Send & return text/plain POST Test``() = api.PostApiConsumesText("hello") |> asyncEqual "hello" + +// Test for https://github.com/fsprojects/SwaggerProvider/pull/290 to check for expected 'Accept' header values +[] +let ``Return text/plain Accept header Test``() = + api.GetApiCheckAcceptsPlain() |> asyncEqual "Hello world" + +[] +let ``Return text/csv Accept header Test``() = + api.GetApiCheckAcceptsCsv() |> asyncEqual "Hello,world" diff --git a/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs b/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs index 494a069..eb96c79 100644 --- a/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs +++ b/tests/Swashbuckle.WebApi.Server/Controllers/ReturnTextControllers.fs @@ -21,6 +21,32 @@ type ReturnCsvController() = member this.Get() = "Hello,world" |> ActionResult +// CheckAcceptsPlainController and CheckAcceptsCsvController are tests for https://github.com/fsprojects/SwaggerProvider/pull/290 +// to test that the generated 'Accept' headers contain the expected values +[] +[] +type CheckAcceptsPlainController() = + inherit ControllerBase() + + [] + member this.Get() = + if this.Request.Headers.Accept.Equals("text/plain") then + "Hello world" |> ActionResult + else + ActionResult(UnsupportedMediaTypeResult()) + +[] +[] +type CheckAcceptsCsvController() = + inherit ControllerBase() + + [] + member this.Get() = + if this.Request.Headers.Accept.Equals("text/csv") then + "Hello,world" |> ActionResult + else + ActionResult(UnsupportedMediaTypeResult()) + [] [] type ConsumesTextController() =