@@ -6,8 +6,10 @@
66{-# LANGUAGE TypeOperators #-}
77module Rollbar.Item.MissingHeaders.Test where
88
9−import Data.Aeson (Value(Object), decode', encode, toJSON)
10−import Data.Text (Text)
9+import Data.Aeson (Value(Object), decode', encode, toJSON)
10+import Data.Functor (void)
11+import Data.HashSet (HashSet)
12+import Data.Text (Text)
1113
1214import Prelude hiding (error)
1315
@@ -16,9 +18,7 @@ import Rollbar.QuickCheck ()
1618
1719import Test.QuickCheck (conjoin, quickCheck)
1820
19−import Data.Set as S
20−
21−import qualified Data.HashMap.Strict
21+import qualified Data.HashSet
2222
2323props :: IO ()
2424props = do
@@ -39,53 +39,55 @@ props = do
3939
4040prop_valueAuthorizationIsRemoved :: MissingHeaders '["Authorization"] -> Bool
4141prop_valueAuthorizationIsRemoved hs =
42− "Authorization" `S.notMember` actual
42+ "Authorization" `notMember` actual
4343 where
44− actual = S.fromList (keys $ toJSON hs)
44+ actual = keys (toJSON hs)
4545
4646prop_encodingAuthorizationIsRemoved :: MissingHeaders '["Authorization"] -> Bool
4747prop_encodingAuthorizationIsRemoved hs =
48− "Authorization" `S.notMember` actual
48+ "Authorization" `notMember` actual
4949 where
50− actual = S.fromList (foldMap keys $ decode' $ encode hs)
50+ actual = foldMap keys (decode' $ encode hs)
5151
5252prop_valueX_AccessTokenIsRemoved :: MissingHeaders '["X-AccessToken"] -> Bool
5353prop_valueX_AccessTokenIsRemoved hs =
54− "X-AccessToken" `S.notMember` actual
54+ "X-AccessToken" `notMember` actual
5555 where
56− actual = S.fromList (keys $ toJSON hs)
56+ actual = keys (toJSON hs)
5757
5858prop_encodingX_AccessTokenIsRemoved :: MissingHeaders '["X-AccessToken"] -> Bool
5959prop_encodingX_AccessTokenIsRemoved hs =
60− "X-AccessToken" `S.notMember` actual
60+ "X-AccessToken" `notMember` actual
6161 where
62− actual = S.fromList (foldMap keys $ decode' $ encode hs)
62+ actual = foldMap keys (decode' $ encode hs)
6363
6464prop_valueAllHeadersAreRemoved
6565 :: MissingHeaders
6666 '["Authorization", "this is made up", "Server", "X-AccessToken"]
6767 -> Bool
6868prop_valueAllHeadersAreRemoved hs =
69− "Authorization" `S.notMember` actual
70− && "this is made up" `S.notMember` actual
71− && "Server" `S.notMember` actual
72− && "X-AccessToken" `S.notMember` actual
69+ "Authorization" `notMember` actual
70+ && "this is made up" `notMember` actual
71+ && "Server" `notMember` actual
72+ && "X-AccessToken" `notMember` actual
7373 where
74− actual = S.fromList (keys $ toJSON hs)
74+ actual = keys (toJSON hs)
7575
7676prop_encodingAllHeadersAreRemoved
7777 :: MissingHeaders
7878 '["Authorization", "this is made up", "Server", "X-AccessToken"]
7979 -> Bool
8080prop_encodingAllHeadersAreRemoved hs =
81− "Authorization" `S.notMember` actual
82− && "this is made up" `S.notMember` actual
83− && "Server" `S.notMember` actual
84− && "X-AccessToken" `S.notMember` actual
81+ "Authorization" `notMember` actual
82+ && "this is made up" `notMember` actual
83+ && "Server" `notMember` actual
84+ && "X-AccessToken" `notMember` actual
8585 where
86− actual = S.fromList (foldMap keys $ decode' $ encode hs)
86+ actual = foldMap keys (decode' $ encode hs)
8787
88−keys :: Value -> [Text]
88+keys :: Value -> HashSet Text
8989keys = \case
90− Object o -> Data.HashMap.Strict.keys o
90+ Object o -> Data.HashSet.fromMap (void o)
9191 _ -> mempty
92+
93+notMember x = not . Data.HashSet.member x