aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/Crypto
diff options
context:
space:
mode:
Diffstat (limited to 'test/Crypto')
-rw-r--r--test/Crypto/Macaroon/Verifier/Tests.hs32
1 files changed, 26 insertions, 6 deletions
diff --git a/test/Crypto/Macaroon/Verifier/Tests.hs b/test/Crypto/Macaroon/Verifier/Tests.hs
index f87f192..37d0230 100644
--- a/test/Crypto/Macaroon/Verifier/Tests.hs
+++ b/test/Crypto/Macaroon/Verifier/Tests.hs
@@ -24,6 +24,7 @@ import Crypto.Macaroon.Instances
24 24
25tests :: TestTree 25tests :: TestTree
26tests = testGroup "Crypto.Macaroon.Verifier" [ sigs 26tests = testGroup "Crypto.Macaroon.Verifier" [ sigs
27 , exactCavs
27 ] 28 ]
28 29
29{- 30{-
@@ -41,7 +42,14 @@ m2 :: Macaroon
41m2 = addFirstPartyCaveat "test = caveat" m 42m2 = addFirstPartyCaveat "test = caveat" m
42 43
43m3 :: Macaroon 44m3 :: Macaroon
44m3 = addFirstPartyCaveat "test = acaveat" m 45m3 = addFirstPartyCaveat "value = 42" m2
46
47exVerifiers = [ verifyExact "test" "caveat" (many' letter_ascii)
48 , verifyExact "value" 42 decimal
49 ]
50exVerifiers' = [ verifyExact "test" "caveat" (many' letter_ascii)
51 , verifyExact "value" 43 decimal
52 ]
45 53
46{- 54{-
47 - Tests 55 - Tests
@@ -54,14 +62,26 @@ sigs = testGroup "Signatures" [ basic
54basic = testGroup "Basic Macaroon" [ none , sigQC ] 62basic = testGroup "Basic Macaroon" [ none , sigQC ]
55 63
56none = testCase "No caveat" $ 64none = testCase "No caveat" $
57 VSuccess @=? verifySig sec m 65 Ok @=? verifySig sec m
58 66
59sigQC = testProperty "Random" $ 67sigQC = testProperty "Random" $
60 \sm -> verifySig (secret sm) (macaroon sm) == VSuccess 68 \sm -> verifySig (secret sm) (macaroon sm) == Ok
61 69
62one = testCase "Macaroon with one caveat" $ 70one = testCase "Macaroon with one caveat" $
63 VSuccess @=? verifySig sec m2 71 Ok @=? verifySig sec m2
64 72
65two = testCase "Macaroon with two caveats" $ 73two = testCase "Macaroon with two caveats" $
66 VSuccess @=? verifySig sec m3 74 Ok @=? verifySig sec m3
67 75
76exactCavs = testGroup "Exact Caveats" [ zero', one', two' , one'', two'']
77
78zero' = testCase "Zero caveat win" $
79 Ok @=? verifyCavs exVerifiers m
80one' = testCase "One caveat win" $
81 Ok @=? verifyCavs exVerifiers m2
82one'' = testCase "Ignoring non-relevant" $
83 Ok @=? verifyCavs exVerifiers' m2
84two' = testCase "Two caveat win" $
85 Ok @=? verifyCavs exVerifiers m3
86two'' = testCase "Two caveat fail" $
87 Failed @=? verifyCavs exVerifiers' m3