-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathtest_08_mdoc_cbor.py
More file actions
97 lines (84 loc) · 2.96 KB
/
test_08_mdoc_cbor.py
File metadata and controls
97 lines (84 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import os
import cbor2
import datetime
from pymdoccbor.mdoc.issuer import MdocCborIssuer
from pymdoccbor.tests.micov_data import MICOV_DATA
from pymdoccbor.mdoc.verifier import MdocCbor
from pymdoccbor.tests.pkey import PKEY
from pymdoccbor.tests.cert_data import CERT_DATA
def normalize_dates(obj):
if isinstance(obj, dict):
return {k: normalize_dates(v) for k, v in obj.items()}
elif isinstance(obj, list):
return [normalize_dates(v) for v in obj]
elif isinstance(obj, datetime.date):
return obj.isoformat()
return obj
def test_mdoc_cbor_creation():
mdoci = MdocCborIssuer(private_key=PKEY, alg="ES256", cert_info=CERT_DATA)
mdoc = mdoci.new(
data=MICOV_DATA,
# devicekeyinfo=PKEY, # TODO
doctype="org.micov.medical.1",
validity={"issuance_date": "2024-12-31", "expiry_date": "2050-12-31"},
status={
"status_list": {"idx": 412, "uri": "https://example.com/statuslists/1"}
},
)
data = cbor2.dumps(mdoc, datetime_as_timestamp=True)
mdocp = MdocCbor()
mdocp.loads(data)
mdocp.verify()
assert mdoc
assert "org.micov.medical.1" in mdocp.disclosure_map
assert normalize_dates(mdocp.disclosure_map) == normalize_dates(MICOV_DATA)
assert mdocp.status == {
"status_list": {"idx": 412, "uri": "https://example.com/statuslists/1"}
}
def test_mdoc_cbor_invalid_status():
mdoci = MdocCborIssuer(private_key=PKEY, alg="ES256", cert_info=CERT_DATA)
try:
mdoci.new(
data=MICOV_DATA,
# devicekeyinfo=PKEY, # TODO
doctype="org.micov.medical.1",
validity={"issuance_date": "2024-12-31", "expiry_date": "2050-12-31"},
status={
"status_list": {
"idx": 412,
# "uri": "https://example.com/statuslists/1" # Missing URI
}
},
)
except Exception as e:
assert str(e) == "uri is required"
try:
mdoci.new(
data=MICOV_DATA,
# devicekeyinfo=PKEY, # TODO
doctype="org.micov.medical.1",
validity={"issuance_date": "2024-12-31", "expiry_date": "2050-12-31"},
status={
"status_list": {
# "idx": 412,
"uri": "https://example.com/statuslists/1" # Missing URI
}
},
)
except Exception as e:
assert str(e) == "idx is required"
try:
mdoci.new(
data=MICOV_DATA,
# devicekeyinfo=PKEY, # TODO
doctype="org.micov.medical.1",
validity={"issuance_date": "2024-12-31", "expiry_date": "2050-12-31"},
status={
"not_status_list": {
"idx": 412,
"uri": "https://example.com/statuslists/1", # Missing URI
}
},
)
except Exception as e:
assert str(e) == "status_list is required"