packages feed

reload-0.0.0.1: test/Language/Haskell/ReloadSpec.hs

{-# LANGUAGE OverloadedStrings, QuasiQuotes #-}
module Language.Haskell.ReloadSpec (spec) where

import           Test.Hspec
import           Test.Hspec.Wai
import           Test.Hspec.Wai.JSON
import           Data.Aeson (Value(..), object, (.=))
import qualified Data.Text as T
import           Language.Haskell.Reload (app)
import           System.Directory
import Data.String

spec :: Spec
spec = with (app False) $ do
  describe "GET /" $ do
    it "responds with 200 /" $ do
      get "/" `shouldRespondWith` 200
    it "responds with 200 /ping" $ do
      get "/ping" `shouldRespondWith` 200
    it "doesn't accept .. " $ do
      get "/images/../../app/Main.hs" `shouldRespondWith` 404
    it "doesn't accept absolute " $ do
      get "//etc/passwd" `shouldRespondWith` 404
    it "return root" $ do
      root <-liftIO $ getCurrentDirectory
      get "/root" `shouldRespondWith` (fromValue $ String $ T.pack root) {matchStatus = 200}
--    it "has 'Content-Type: text/plain; charset=utf-8'" $ do
--      get "/" `shouldRespondWith` 200 {matchHeaders = ["Content-Type" <:> "text/plain; charset=utf-8"]}