From: Julien Tanguy Date: Fri, 15 May 2015 16:29:11 +0000 (+0200) Subject: 1st party caveats to Macaroon Arbitrary instance X-Git-Url: https://git.immae.eu/?a=commitdiff_plain;h=2ba8d1c3034fb99723ba42c066b56ed6b0691a2f;hp=b7889567b811ac347acff9983d15ab0e91c76876;p=github%2Ffretlink%2Fhmacaroons.git 1st party caveats to Macaroon Arbitrary instance --- 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