diff options
author | Julien Tanguy <julien.tanguy@jhome.fr> | 2015-05-14 19:00:50 +0200 |
---|---|---|
committer | Julien Tanguy <julien.tanguy@jhome.fr> | 2015-05-14 19:00:50 +0200 |
commit | b92e3c159fad49b86fe4bd115f487057c04e3c18 (patch) | |
tree | f8a01bd7345d09b01fa6282adb310ffdfa9b1882 /test | |
parent | e0ceb8d38cf44ea2a9e0d6564fe64a25fd3039b4 (diff) | |
download | hmacaroons-b92e3c159fad49b86fe4bd115f487057c04e3c18.tar.gz hmacaroons-b92e3c159fad49b86fe4bd115f487057c04e3c18.tar.zst hmacaroons-b92e3c159fad49b86fe4bd115f487057c04e3c18.zip |
Basic verification of macaroons
- Only signatures are checked
Diffstat (limited to 'test')
-rw-r--r-- | test/Crypto/Macaroon/Verifier/Tests.hs | 59 | ||||
-rw-r--r-- | test/main.hs | 2 |
2 files changed, 61 insertions, 0 deletions
diff --git a/test/Crypto/Macaroon/Verifier/Tests.hs b/test/Crypto/Macaroon/Verifier/Tests.hs new file mode 100644 index 0000000..92a8a21 --- /dev/null +++ b/test/Crypto/Macaroon/Verifier/Tests.hs | |||
@@ -0,0 +1,59 @@ | |||
1 | {-# LANGUAGE OverloadedStrings #-} | ||
2 | {-| | ||
3 | Copyright : (c) 2015 Julien Tanguy | ||
4 | License : BSD3 | ||
5 | |||
6 | Maintainer : julien.tanguy@jhome.fr | ||
7 | |||
8 | |||
9 | This test suite is based on the pymacaroons test suite: | ||
10 | <https://github.com/ecordell/pymacaroons> | ||
11 | -} | ||
12 | module Crypto.Macaroon.Verifier.Tests where | ||
13 | |||
14 | |||
15 | import qualified Data.ByteString.Char8 as B8 | ||
16 | import Test.Tasty | ||
17 | import Test.Tasty.HUnit | ||
18 | |||
19 | import Crypto.Macaroon | ||
20 | import Crypto.Macaroon.Verifier | ||
21 | |||
22 | import Crypto.Macaroon.Instances | ||
23 | |||
24 | tests :: TestTree | ||
25 | tests = testGroup "Crypto.Macaroon.Verifier" [ sigs | ||
26 | ] | ||
27 | |||
28 | sec = B8.pack "this is our super secret key; only we should know it" | ||
29 | |||
30 | m :: Macaroon | ||
31 | m = create sec key loc | ||
32 | where | ||
33 | key = B8.pack "we used our sec key" | ||
34 | loc = B8.pack "http://mybank/" | ||
35 | |||
36 | m2 :: Macaroon | ||
37 | m2 = addFirstPartyCaveat "test = caveat" m | ||
38 | |||
39 | m3 :: Macaroon | ||
40 | m3 = addFirstPartyCaveat "test = acaveat" m | ||
41 | |||
42 | sigs = testGroup "Signatures" [ basic | ||
43 | , minted | ||
44 | ] | ||
45 | |||
46 | basic = testCase "Basic Macaroon Signature" $ | ||
47 | Success @=? verifySig sec m | ||
48 | |||
49 | |||
50 | minted :: TestTree | ||
51 | minted = testGroup "Macaroon with first party caveats" [ one | ||
52 | , two | ||
53 | ] | ||
54 | one = testCase "One caveat" $ | ||
55 | Success @=? verifySig sec m2 | ||
56 | |||
57 | two = testCase "Two caveats" $ | ||
58 | Success @=? verifySig sec m3 | ||
59 | |||
diff --git a/test/main.hs b/test/main.hs index 48519b9..3edbe54 100644 --- a/test/main.hs +++ b/test/main.hs | |||
@@ -6,6 +6,7 @@ import Test.Tasty.HUnit | |||
6 | import qualified Sanity | 6 | import qualified Sanity |
7 | import qualified Crypto.Macaroon.Tests | 7 | import qualified Crypto.Macaroon.Tests |
8 | import qualified Crypto.Macaroon.Serializer.Base64.Tests | 8 | import qualified Crypto.Macaroon.Serializer.Base64.Tests |
9 | import qualified Crypto.Macaroon.Verifier.Tests | ||
9 | 10 | ||
10 | main = defaultMain tests | 11 | main = defaultMain tests |
11 | 12 | ||
@@ -13,5 +14,6 @@ tests :: TestTree | |||
13 | tests = testGroup "Tests" [ Sanity.tests | 14 | tests = testGroup "Tests" [ Sanity.tests |
14 | , Crypto.Macaroon.Tests.tests | 15 | , Crypto.Macaroon.Tests.tests |
15 | , Crypto.Macaroon.Serializer.Base64.Tests.tests | 16 | , Crypto.Macaroon.Serializer.Base64.Tests.tests |
17 | , Crypto.Macaroon.Verifier.Tests.tests | ||
16 | ] | 18 | ] |
17 | 19 | ||