diff options
author | Julien Tanguy <julien.tanguy@jhome.fr> | 2015-05-15 16:03:30 +0200 |
---|---|---|
committer | Julien Tanguy <julien.tanguy@jhome.fr> | 2015-05-15 23:10:16 +0200 |
commit | 5d1b7d51854d355bf5b6438c1a96ce9e743fd810 (patch) | |
tree | 9790591988ee639d50bc873e5f757a4c0e6b7ffb /test/Crypto | |
parent | 8fad4fa9d1b592ece4806dcd9abb6c011d3948bf (diff) | |
download | hmacaroons-5d1b7d51854d355bf5b6438c1a96ce9e743fd810.tar.gz hmacaroons-5d1b7d51854d355bf5b6438c1a96ce9e743fd810.tar.zst hmacaroons-5d1b7d51854d355bf5b6438c1a96ce9e743fd810.zip |
Add quickcheck properties
Diffstat (limited to 'test/Crypto')
-rw-r--r-- | test/Crypto/Macaroon/Serializer/Base64/Tests.hs | 2 | ||||
-rw-r--r-- | test/Crypto/Macaroon/Verifier/Tests.hs | 30 |
2 files changed, 20 insertions, 12 deletions
diff --git a/test/Crypto/Macaroon/Serializer/Base64/Tests.hs b/test/Crypto/Macaroon/Serializer/Base64/Tests.hs index 19084af..ea3bed9 100644 --- a/test/Crypto/Macaroon/Serializer/Base64/Tests.hs +++ b/test/Crypto/Macaroon/Serializer/Base64/Tests.hs | |||
@@ -30,7 +30,7 @@ tests = testGroup "Crypto.Macaroon.Serializer.Base64" [ basic | |||
30 | ] | 30 | ] |
31 | 31 | ||
32 | basicQC = testProperty "Reversibility" $ | 32 | basicQC = testProperty "Reversibility" $ |
33 | forAll (macaroon <$> arbitrary) (\m -> deserialize (serialize m) == Right m) | 33 | \sm -> deserialize (serialize (macaroon sm)) == Right (macaroon sm) |
34 | 34 | ||
35 | m :: Macaroon | 35 | m :: Macaroon |
36 | m = create secret key loc | 36 | m = create secret key loc |
diff --git a/test/Crypto/Macaroon/Verifier/Tests.hs b/test/Crypto/Macaroon/Verifier/Tests.hs index 92a8a21..f87f192 100644 --- a/test/Crypto/Macaroon/Verifier/Tests.hs +++ b/test/Crypto/Macaroon/Verifier/Tests.hs | |||
@@ -15,6 +15,7 @@ module Crypto.Macaroon.Verifier.Tests where | |||
15 | import qualified Data.ByteString.Char8 as B8 | 15 | import qualified Data.ByteString.Char8 as B8 |
16 | import Test.Tasty | 16 | import Test.Tasty |
17 | import Test.Tasty.HUnit | 17 | import Test.Tasty.HUnit |
18 | import Test.Tasty.QuickCheck | ||
18 | 19 | ||
19 | import Crypto.Macaroon | 20 | import Crypto.Macaroon |
20 | import Crypto.Macaroon.Verifier | 21 | import Crypto.Macaroon.Verifier |
@@ -25,6 +26,9 @@ tests :: TestTree | |||
25 | tests = testGroup "Crypto.Macaroon.Verifier" [ sigs | 26 | tests = testGroup "Crypto.Macaroon.Verifier" [ sigs |
26 | ] | 27 | ] |
27 | 28 | ||
29 | {- | ||
30 | - Test fixtures | ||
31 | -} | ||
28 | sec = B8.pack "this is our super secret key; only we should know it" | 32 | sec = B8.pack "this is our super secret key; only we should know it" |
29 | 33 | ||
30 | m :: Macaroon | 34 | m :: Macaroon |
@@ -39,21 +43,25 @@ m2 = addFirstPartyCaveat "test = caveat" m | |||
39 | m3 :: Macaroon | 43 | m3 :: Macaroon |
40 | m3 = addFirstPartyCaveat "test = acaveat" m | 44 | m3 = addFirstPartyCaveat "test = acaveat" m |
41 | 45 | ||
46 | {- | ||
47 | - Tests | ||
48 | -} | ||
42 | sigs = testGroup "Signatures" [ basic | 49 | sigs = testGroup "Signatures" [ basic |
43 | , minted | 50 | , one |
51 | , two | ||
44 | ] | 52 | ] |
45 | 53 | ||
46 | basic = testCase "Basic Macaroon Signature" $ | 54 | basic = testGroup "Basic Macaroon" [ none , sigQC ] |
47 | Success @=? verifySig sec m | ||
48 | 55 | ||
56 | none = testCase "No caveat" $ | ||
57 | VSuccess @=? verifySig sec m | ||
49 | 58 | ||
50 | minted :: TestTree | 59 | sigQC = testProperty "Random" $ |
51 | minted = testGroup "Macaroon with first party caveats" [ one | 60 | \sm -> verifySig (secret sm) (macaroon sm) == VSuccess |
52 | , two | ||
53 | ] | ||
54 | one = testCase "One caveat" $ | ||
55 | Success @=? verifySig sec m2 | ||
56 | 61 | ||
57 | two = testCase "Two caveats" $ | 62 | one = testCase "Macaroon with one caveat" $ |
58 | Success @=? verifySig sec m3 | 63 | VSuccess @=? verifySig sec m2 |
64 | |||
65 | two = testCase "Macaroon with two caveats" $ | ||
66 | VSuccess @=? verifySig sec m3 | ||
59 | 67 | ||