bugsnag-wai-1.0.0.2: test/Network/Bugsnag/WaiSpec.hs
module Network.Bugsnag.WaiSpec
( spec
) where
import Prelude
import qualified Control.Exception as Exception
import Data.Bugsnag
import qualified Data.HashMap.Strict as HashMap
import Network.Bugsnag
import Network.Bugsnag.Wai
import Test.Hspec
data TestException = TestException
deriving stock (Show)
deriving anyclass (Exception.Exception)
spec :: Spec
spec = do
describe "redactRequestHeaders" $ do
it "redacts the given headers" $ do
let
bn = redactRequestHeaders ["Authorization"]
event =
runBeforeNotify bn TestException $
defaultEvent
{ event_request =
Just
defaultRequest
{ request_headers =
Just $
HashMap.fromList
[("Authorization", "secret"), ("X-Foo", "Bar")]
}
}
lookupEventRequestHeader k e = do
r <- event_request e
hs <- request_headers r
HashMap.lookup k hs
lookupEventRequestHeader "Authorization" event
`shouldBe` Just "<redacted>"
lookupEventRequestHeader "X-Foo" event `shouldBe` Just "Bar"
describe "readForwardedFor" $ do
it "handles empty" $ do
readForwardedFor "" `shouldBe` Nothing
it "reads a single value" $ do
readForwardedFor "123.123.123" `shouldBe` Just "123.123.123"
it "reads the first of many values" $ do
readForwardedFor "123.123.123, 45.45.45"
`shouldBe` Just "123.123.123"