]> git.immae.eu Git - github/fretlink/hmacaroons.git/commitdiff
Add quickcheck properties
authorJulien Tanguy <julien.tanguy@jhome.fr>
Fri, 15 May 2015 14:03:30 +0000 (16:03 +0200)
committerJulien Tanguy <julien.tanguy@jhome.fr>
Fri, 15 May 2015 21:10:16 +0000 (23:10 +0200)
src/Crypto/Macaroon/Verifier.hs
test/Crypto/Macaroon/Serializer/Base64/Tests.hs
test/Crypto/Macaroon/Verifier/Tests.hs

index 0d1636cb9d9be3c7b22caa4c31ea2c00c8dedb78..e257f5f71d4a5edf098c8425d4f788ae19d93b5d 100644 (file)
@@ -24,10 +24,10 @@ import           Crypto.Macaroon.Internal
 
 
 -- | Opaque datatype for now. Might need more explicit errors
-data Result = Success | Failure deriving (Show,Eq)
+data VResult = VSuccess | VFailure deriving (Show,Eq)
 
-verifySig :: Key -> Macaroon -> Result
-verifySig k m = bool Failure Success $
+verifySig :: Key -> Macaroon -> VResult
+verifySig k m = bool VFailure VSuccess $
       signature m == foldl' hash (toBytes (hmac derivedKey (identifier m) :: HMAC SHA256)) (caveats m)
   where
     hash s c = toBytes (hmac s (vid c `BS.append` cid c) :: HMAC SHA256)
index 19084afddd1371faa93295dfbaef780a86223565..ea3bed9d6f8da56fb6b4dfbe5d549296a80f060f 100644 (file)
@@ -30,7 +30,7 @@ tests = testGroup "Crypto.Macaroon.Serializer.Base64" [ basic
                                                       ]
 
 basicQC = testProperty "Reversibility" $
-    forAll (macaroon <$> arbitrary) (\m -> deserialize (serialize m) == Right m)
+    \sm -> deserialize (serialize (macaroon sm)) == Right (macaroon sm)
 
 m :: Macaroon
 m = create secret key loc
index 92a8a21c4d5b688d8acbb65bda67db3dd237178a..f87f192d94e9ab716c9e44aaa90ac8b1e162505b 100644 (file)
@@ -15,6 +15,7 @@ module Crypto.Macaroon.Verifier.Tests where
 import qualified Data.ByteString.Char8 as B8
 import Test.Tasty
 import Test.Tasty.HUnit
+import Test.Tasty.QuickCheck
 
 import           Crypto.Macaroon
 import           Crypto.Macaroon.Verifier
@@ -25,6 +26,9 @@ tests :: TestTree
 tests = testGroup "Crypto.Macaroon.Verifier" [ sigs
                                              ]
 
+{-
+ - Test fixtures
+ -}
 sec = B8.pack "this is our super secret key; only we should know it"
 
 m :: Macaroon
@@ -39,21 +43,25 @@ m2 = addFirstPartyCaveat "test = caveat" m
 m3 :: Macaroon
 m3 = addFirstPartyCaveat "test = acaveat" m
 
+{-
+ - Tests
+ -}
 sigs = testGroup "Signatures" [ basic
-                              , minted
+                              , one
+                              , two
                               ]
 
-basic = testCase "Basic Macaroon Signature" $
-    Success @=? verifySig sec m
+basic = testGroup "Basic Macaroon" [ none , sigQC ]
 
+none = testCase "No caveat" $
+    VSuccess @=? verifySig sec m
 
-minted :: TestTree
-minted = testGroup "Macaroon with first party caveats" [ one
-                                                       , two
-                                                       ]
-one = testCase "One caveat" $
-    Success @=? verifySig sec m2
+sigQC = testProperty "Random" $
+    \sm -> verifySig (secret sm) (macaroon sm) == VSuccess
 
-two = testCase "Two caveats" $
-    Success @=? verifySig sec m3
+one = testCase "Macaroon with one caveat" $
+    VSuccess @=? verifySig sec m2
+
+two = testCase "Macaroon with two caveats" $
+    VSuccess @=? verifySig sec m3