Per-route content negotiation, and OpenAPI only for root (#693)
* WIP: remove non-openapi root spec * Refactor ContentType Different endpoints will favor one type over another * Permit different Accept headers per endpoint * Lint * Add charset to Content-Type only when used as a header Keep it out of error messages * Accept: */* is last resort, not first * Changelog * makeMimeList consistently * Remove schema description from OPTIONS response
This commit is contained in:
@@ -395,6 +395,27 @@ spec = do
|
||||
(acceptHdrs "*/*") ""
|
||||
`shouldRespondWith` 200
|
||||
|
||||
it "*/* should rescue an unknown type" $
|
||||
request methodGet "/simple_pk"
|
||||
(acceptHdrs "text/unknowntype, */*") ""
|
||||
`shouldRespondWith` 200
|
||||
|
||||
it "specific available preference should override */*" $ do
|
||||
r <- request methodGet "/simple_pk"
|
||||
(acceptHdrs "text/csv, */*") ""
|
||||
liftIO $ do
|
||||
let respHeaders = simpleHeaders r
|
||||
respHeaders `shouldSatisfy` matchHeader
|
||||
"Content-Type" "text/csv; charset=utf-8"
|
||||
|
||||
it "honors client preference even when opposite of server preference" $ do
|
||||
r <- request methodGet "/simple_pk"
|
||||
(acceptHdrs "text/csv, application/json") ""
|
||||
liftIO $ do
|
||||
let respHeaders = simpleHeaders r
|
||||
respHeaders `shouldSatisfy` matchHeader
|
||||
"Content-Type" "text/csv; charset=utf-8"
|
||||
|
||||
it "should respond correctly to multiple types in accept header" $
|
||||
request methodGet "/simple_pk"
|
||||
(acceptHdrs "text/unknowntype, text/csv") ""
|
||||
|
||||
Reference in New Issue
Block a user