]> git.immae.eu Git - github/fretlink/hmacaroons.git/blame - test/Crypto/Macaroon/Serializer/Base64/Tests.hs
Rearrange tests
[github/fretlink/hmacaroons.git] / test / Crypto / Macaroon / Serializer / Base64 / Tests.hs
CommitLineData
b1f77d7e
JT
1{-# LANGUAGE OverloadedStrings #-}
2{-|
3Copyright : (c) 2015 Julien Tanguy
4License : BSD3
5
6Maintainer : julien.tanguy@jhome.fr
7
8
9This test suite is based on the pymacaroons test suite:
10<https://github.com/ecordell/pymacaroons>
11-}
12module Crypto.Macaroon.Serializer.Base64.Tests where
13
14
15import qualified Data.ByteString.Char8 as B8
16import Test.Tasty
17import Test.Tasty.HUnit
a22bcdb6 18import Test.Tasty.QuickCheck
b1f77d7e
JT
19
20import Crypto.Macaroon
21import Crypto.Macaroon.Serializer.Base64
22
a22bcdb6
JT
23import Crypto.Macaroon.Instances
24
b1f77d7e
JT
25tests :: TestTree
26tests = testGroup "Crypto.Macaroon.Serializer.Base64" [ basic
27 , minted
28 , minted2
29 -- , minted3
30 ]
31
a22bcdb6
JT
32basicQC = testProperty "Reversibility" $
33 forAll (macaroon <$> arbitrary) (\m -> deserialize (serialize m) == Right m)
b1f77d7e
JT
34
35m :: Macaroon
36m = create secret key loc
37 where
38 secret = B8.pack "this is our super secret key; only we should know it"
39 key = B8.pack "we used our secret key"
40 loc = B8.pack "http://mybank/"
41
42basic :: TestTree
43basic = testGroup "Basic macaroon" [ basicSerialize
44 , basicDeserialize
5297366a 45 , basicQC
b1f77d7e
JT
46 ]
47
48basicSerialize = testCase "Serialization" $
49 "MDAxY2xvY2F0aW9uIGh0dHA6Ly9teWJhbmsvCjAwMjZpZGVudG\
50 \lmaWVyIHdlIHVzZWQgb3VyIHNlY3JldCBrZXkKMDAyZnNpZ25h\
51 \dHVyZSDj2eApCFJsTAA5rhURQRXZf91ovyujebNCqvD2F9BVLwo" @=? serialize m
52
53basicDeserialize = testCase "Deserialization" $
54 Right m @=? (deserialize . serialize) m
55
56m2 :: Macaroon
57m2 = addFirstPartyCaveat "test = caveat" m
58
59minted :: TestTree
60minted = testGroup "Macaroon with first party caveat" [ mintSerialize
61 , mintDeserialize
62 ]
63
64
65mintSerialize = testCase "Serialization" $
66 "MDAxY2xvY2F0aW9uIGh0dHA6Ly9teWJhbmsvCjAwMjZpZGVudGlmaWVyIHdlIHVzZ\
67 \WQgb3VyIHNlY3JldCBrZXkKMDAxNmNpZCB0ZXN0ID0gY2F2ZWF0CjAwMmZzaWduYXR1cmUgGXusegR\
68 \K8zMyhluSZuJtSTvdZopmDkTYjOGpmMI9vWcK" @=? serialize m2
69
70mintDeserialize = testCase "Deserialization" $
71 Right m2 @=? (deserialize . serialize) m2
72
73
74m3 :: Macaroon
75m3 = addFirstPartyCaveat "test = acaveat" m
76
77minted2 :: TestTree
78minted2 = testGroup "Macaroon with first party caveats" [ mint2Trimmed
79 , mint2Des
80 ]
81
82mint2Trimmed = testCase "Serialization" $
83 "MDAxY2xvY2F0aW9uIGh0dHA6Ly9teWJhbmsvCjAwMjZpZGVudGlmaWVyIHdlIHVz\
84 \ZWQgb3VyIHNlY3JldCBrZXkKMDAxN2NpZCB0ZXN0ID0gYWNhdmVhdAowMDJmc2ln\
85 \bmF0dXJlIJRJ_V3WNJQnqlVq5eez7spnltwU_AXs8NIRY739sHooCg" @=? serialize m3
86
87mint2Des = testCase "Deserialization" $
88 Right m3 @=? (deserialize . serialize) m3
89