42 lines
1.4 KiB
Haskell
42 lines
1.4 KiB
Haskell
{-# LANGUAGE DataKinds #-}
|
|
{-# LANGUAGE OverloadedStrings #-}
|
|
module Servant.API.ResponseHeadersSpec where
|
|
|
|
import Data.Proxy
|
|
import GHC.TypeLits
|
|
import Test.Hspec
|
|
|
|
import Servant.API.ContentTypes
|
|
import Servant.API.Header
|
|
import Servant.API.ResponseHeaders
|
|
import Servant.API.UVerb
|
|
|
|
spec :: Spec
|
|
spec = describe "Servant.API.ResponseHeaders" $ do
|
|
describe "addHeader" $ do
|
|
|
|
it "adds a header to a value" $ do
|
|
let val = addHeader "hi" 5 :: Headers '[Header "test" String] Int
|
|
getHeaders val `shouldBe` [("test", "hi")]
|
|
|
|
it "maintains the value" $ do
|
|
let val = addHeader "hi" 5 :: Headers '[Header "test" String] Int
|
|
getResponse val `shouldBe` 5
|
|
|
|
it "adds headers to the front of the list" $ do
|
|
let val = addHeader 10 $ addHeader "b" 5 :: Headers '[Header "first" Int, Header "second" String] Int
|
|
getHeaders val `shouldBe` [("first", "10"), ("second", "b")]
|
|
|
|
describe "noHeader" $ do
|
|
|
|
it "does not add a header" $ do
|
|
let val = noHeader 5 :: Headers '[Header "test" Int] Int
|
|
getHeaders val `shouldBe` []
|
|
|
|
describe "HasStatus Headers" $ do
|
|
|
|
it "gets the status from the underlying value" $ do
|
|
natVal (Proxy :: Proxy (StatusOf (Headers '[Header "first" Int] NoContent))) `shouldBe` 204
|
|
natVal (Proxy :: Proxy (StatusOf (Headers '[Header "first" Int] (WithStatus 503 ())))) `shouldBe` 503
|
|
|