From 2ba8d1c3034fb99723ba42c066b56ed6b0691a2f Mon Sep 17 00:00:00 2001 From: Julien Tanguy Date: Fri, 15 May 2015 18:29:11 +0200 Subject: [PATCH] 1st party caveats to Macaroon Arbitrary instance --- test/Crypto/Macaroon/Instances.hs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/Crypto/Macaroon/Instances.hs b/test/Crypto/Macaroon/Instances.hs index 4e2f39f..17044a0 100644 --- a/test/Crypto/Macaroon/Instances.hs +++ b/test/Crypto/Macaroon/Instances.hs @@ -48,6 +48,16 @@ newtype Identifier = Identifier { unIdent :: BS.ByteString } deriving (Show) instance Arbitrary Identifier where arbitrary = Identifier . B8.pack <$>(scale (*3) . listOf1 . elements $ ['a'..'z']) +newtype EquationLike = EquationLike { unEqlike :: BS.ByteString } deriving (Show) + +instance Arbitrary EquationLike where + arbitrary = do + keylen <- choose (3,8) + key <- B8.pack <$> vectorOf keylen (elements ['a'..'z']) + val <- B8.pack <$> (scale (*3) . listOf1 . elements $ ['a'..'z']) + return $ EquationLike (BS.concat [ key, " = ", val]) + + data SimpleMac = SimpleMac { secret :: BS.ByteString, macaroon :: Macaroon } deriving Show instance Arbitrary SimpleMac where @@ -55,6 +65,8 @@ instance Arbitrary SimpleMac where secret <- unSecret <$> arbitrary location <- unUrl <$> arbitrary ident <- unIdent <$> arbitrary - return $ SimpleMac secret (create secret ident location) + fpcavs <- listOf arbitrary + let mac = foldl (flip addFirstPartyCaveat) (create secret ident location) (map unEqlike fpcavs) + return $ SimpleMac secret mac -- 2.41.0