packages feed

wai-handler-hal-0.3.0.0: test/Network/Wai/Handler/HalTest.hs

{-# LANGUAGE ScopedTypeVariables #-}

module Network.Wai.Handler.HalTest where

import AWS.Lambda.Events.ApiGateway.ProxyRequest
import Data.Aeson (eitherDecodeFileStrict')
import qualified Data.Text as T
import qualified Data.Text.Lazy.Encoding as TL
import Data.Void (Void)
import Network.Wai.Handler.Hal
import Test.Tasty
import Test.Tasty.Golden
import Test.Tasty.HUnit (assertEqual, testCase)
import Text.Pretty.Simple

test_ConvertProxyRequest :: TestTree
test_ConvertProxyRequest =
  goldenVsString "API Gateway Proxy Request" "test/golden/WaiRequest.txt" $ do
    proxyRequest :: ProxyRequest Void <-
      eitherDecodeFileStrict' "test/data/ProxyRequest.json"
        >>= either fail pure
    waiRequest <- toWaiRequest defaultOptions proxyRequest
    pure . TL.encodeUtf8 $ pShowNoColor waiRequest

test_DefaultBinaryMimeTypes :: TestTree
test_DefaultBinaryMimeTypes = testCase "default binary MIME types" $ do
  assertBinary False "text/plain"
  assertBinary False "text/html"
  assertBinary False "application/json"
  assertBinary False "application/xml"
  assertBinary False "application/vnd.api+json"
  assertBinary False "application/vnd.api+xml"
  assertBinary False "image/svg+xml"

  assertBinary True "application/octet-stream"
  assertBinary True "audio/vorbis"
  assertBinary True "image/png"
  where
    assertBinary expected mime =
      assertEqual
        mime
        (binaryMimeType defaultOptions (T.pack mime))
        expected