Skip to content

Commit 23e41c2

Browse files
committed
tests: restored tests
1 parent e661611 commit 23e41c2

File tree

7 files changed

+352
-8
lines changed

7 files changed

+352
-8
lines changed

pymdoccbor/tests/pkey.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import os
2+
3+
PKEY = {
4+
'KTY': 'EC2',
5+
'CURVE': 'P_256',
6+
'ALG': 'ES256',
7+
'D': b"<\xe5\xbc;\x08\xadF\x1d\xc5\x0czR'T&\xbb\x91\xac\x84\xdc\x9ce\xbf\x0b,\x00\xcb\xdd\xbf\xec\xa2\xa5",
8+
'KID': b"demo-kid"
9+
}
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
from pycose.keys import EC2Key
2+
from pymdoccbor.mdoc.issuer import MdocCborIssuer
3+
from pymdoccbor.tests.micov_data import MICOV_DATA
4+
from pymdoccbor.tests.pid_data import PID_DATA
5+
from pymdoccbor.tests.pkey import PKEY
6+
7+
mdoc = MdocCborIssuer(
8+
private_key=PKEY,
9+
alg="ES256",
10+
)
11+
12+
def test_MdocCborIssuer_creation():
13+
assert mdoc.version == '1.0'
14+
assert mdoc.status == 0
15+
16+
def test_mdoc_without_private_key_must_fail():
17+
try:
18+
MdocCborIssuer(None)
19+
except Exception as e:
20+
assert str(e) == "You must provide a private key"
21+
22+
def test_MdocCborIssuer_new_single():
23+
mdoc.new(
24+
data=MICOV_DATA,
25+
#devicekeyinfo=PKEY, # TODO
26+
doctype="org.micov.medical.1",
27+
validity={
28+
"issuance_date": "2024-12-31",
29+
"expiry_date": "2050-12-31"
30+
},
31+
)
32+
assert mdoc.signed['version'] == '1.0'
33+
assert mdoc.signed['status'] == 0
34+
assert mdoc.signed['documents'][0]['docType'] == 'org.micov.medical.1'
35+
assert mdoc.signed['documents'][0]['issuerSigned']['nameSpaces']['org.micov.medical.1'][0].tag == 24
36+
37+
# TODO: restore multiple documents support
38+
"""
39+
def test_MdocCborIssuer_new_multiple():
40+
micov_data = {"doctype": "org.micov.medical.1", "data": MICOV_DATA}
41+
pid_data = {"doctype": "eu.europa.ec.eudiw.pid.1", "data": PID_DATA}
42+
43+
mdoc.new(
44+
#TODO: fix the doctype handling
45+
doctype="org.micov.medical.1",
46+
data=[micov_data, pid_data],
47+
validity={
48+
"issuance_date": "2024-12-31",
49+
"expiry_date": "2050-12-31"
50+
},
51+
#devicekeyinfo=PKEY # TODO
52+
)
53+
assert mdoc.signed['version'] == '1.0'
54+
assert mdoc.signed['status'] == 0
55+
assert mdoc.signed['documents'][0]['docType'] == 'org.micov.medical.1'
56+
assert mdoc.signed['documents'][0]['issuerSigned']['nameSpaces']['org.micov.medical.1'][0].tag == 24
57+
assert mdoc.signed['documents'][1]['docType'] == 'eu.europa.ec.eudiw.pid.1'
58+
assert mdoc.signed['documents'][1]['issuerSigned']['nameSpaces']['eu.europa.ec.eudiw.pid.1'][0].tag == 24
59+
"""
60+
61+
def test_MdocCborIssuer_dump():
62+
dump = mdoc.dump()
63+
64+
assert dump
65+
assert isinstance(dump, bytes)
66+
assert len(dump) > 0
67+
68+
def test_MdocCborIssuer_dumps():
69+
dumps = mdoc.dumps()
70+
71+
assert dumps
72+
assert isinstance(dumps, bytes)
73+
assert len(dumps) > 0
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
from pycose.keys import EC2Key
2+
from pymdoccbor.mdoc.issuersigned import IssuerSigned
3+
from pymdoccbor.mdoc.issuer import MdocCborIssuer
4+
from pymdoccbor.tests.micov_data import MICOV_DATA
5+
from pymdoccbor.tests.pkey import PKEY
6+
7+
8+
mdoc = MdocCborIssuer(
9+
private_key=PKEY,
10+
alg="ES256",
11+
)
12+
mdoc.new(
13+
data=MICOV_DATA,
14+
#devicekeyinfo=PKEY, # TODO
15+
doctype="org.micov.medical.1",
16+
validity={
17+
"issuance_date": "2024-12-31",
18+
"expiry_date": "2050-12-31"
19+
},
20+
)
21+
issuerAuth = mdoc.signed["documents"][0]["issuerSigned"]
22+
issuer_signed = IssuerSigned(**issuerAuth)
23+
24+
def test_issuer_signed_fail():
25+
try:
26+
IssuerSigned(None, None)
27+
except Exception as e:
28+
assert str(e) == "issuerAuth must be provided"
29+
30+
def test_issuer_signed_creation():
31+
assert issuer_signed.namespaces
32+
assert issuer_signed.issuer_auth
33+
34+
def test_issuer_signed_dump():
35+
issuerAuth = mdoc.signed["documents"][0]["issuerSigned"]
36+
37+
issuer_signed = IssuerSigned(**issuerAuth)
38+
39+
dump = issuer_signed.dump()
40+
assert dump
41+
assert dump["nameSpaces"] == issuer_signed.namespaces
42+
assert dump["issuerAuth"] == issuer_signed.issuer_auth
43+
44+
def test_issuer_signed_dumps():
45+
issuerAuth = mdoc.signed["documents"][0]["issuerSigned"]
46+
47+
issuer_signed = IssuerSigned(**issuerAuth)
48+
49+
dumps = issuer_signed.dumps()
50+
assert dumps
51+
assert isinstance(dumps, bytes)
52+
assert len(dumps) > 0
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
from pycose.keys import EC2Key
2+
from pymdoccbor.mdoc.verifier import MobileDocument
3+
from pymdoccbor.mdoc.issuer import MdocCborIssuer
4+
from pymdoccbor.tests.micov_data import MICOV_DATA
5+
from pymdoccbor.tests.pkey import PKEY
6+
7+
def test_verifier_must_fail_document_type():
8+
try:
9+
MobileDocument(None, None)
10+
except Exception as e:
11+
assert str(e) == "You must provide a document type"
12+
13+
def test_verifier_must_fail_issuer_signed():
14+
try:
15+
MobileDocument("org.micov.medical.1", None)
16+
except Exception as e:
17+
assert str(e) == "You must provide a signed document"
18+
19+
def test_mobile_document():
20+
mdoc = MdocCborIssuer(
21+
private_key=PKEY,
22+
alg="ES256",
23+
)
24+
mdoc.new(
25+
data=MICOV_DATA,
26+
#devicekeyinfo=PKEY, # TODO
27+
doctype="org.micov.medical.1",
28+
validity={
29+
"issuance_date": "2024-12-31",
30+
"expiry_date": "2050-12-31"
31+
},
32+
)
33+
34+
35+
document = mdoc.signed["documents"][0]
36+
doc = MobileDocument(**document)
37+
38+
assert doc.doctype == "org.micov.medical.1"
39+
assert doc.issuersigned
40+
41+
def test_mobile_document_dump():
42+
mdoc = MdocCborIssuer(
43+
private_key=PKEY,
44+
alg="ES256"
45+
)
46+
mdoc.new(
47+
data=MICOV_DATA,
48+
#devicekeyinfo=PKEY, # TODO
49+
doctype="org.micov.medical.1",
50+
validity={
51+
"issuance_date": "2024-12-31",
52+
"expiry_date": "2050-12-31"
53+
},
54+
)
55+
56+
57+
document = mdoc.signed["documents"][0]
58+
doc = MobileDocument(**document)
59+
60+
dump = doc.dump()
61+
assert dump
62+
assert isinstance(dump, bytes)
63+
assert len(dump) > 0
64+
65+
def test_mobile_document_dumps():
66+
mdoc = MdocCborIssuer(
67+
private_key=PKEY,
68+
alg="ES256"
69+
)
70+
mdoc.new(
71+
data=MICOV_DATA,
72+
#devicekeyinfo=PKEY, # TODO
73+
doctype="org.micov.medical.1",
74+
validity={
75+
"issuance_date": "2024-12-31",
76+
"expiry_date": "2050-12-31"
77+
},
78+
)
79+
80+
81+
document = mdoc.signed["documents"][0]
82+
doc = MobileDocument(**document)
83+
84+
dumps = doc.dumps()
85+
assert dumps
86+
assert isinstance(dumps, bytes)
87+
assert len(dumps) > 0
88+
89+
def test_mobile_document_verify():
90+
mdoc = MdocCborIssuer(
91+
private_key=PKEY,
92+
alg="ES256"
93+
)
94+
mdoc.new(
95+
data=MICOV_DATA,
96+
#devicekeyinfo=PKEY, # TODO
97+
doctype="org.micov.medical.1",
98+
validity={
99+
"issuance_date": "2024-12-31",
100+
"expiry_date": "2050-12-31"
101+
},
102+
)
103+
104+
document = mdoc.signed["documents"][0]
105+
doc = MobileDocument(**document)
106+
107+
assert doc.verify()
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
from pycose.keys import EC2Key
2+
from pycose.messages import CoseMessage
3+
from pymdoccbor.mso.issuer import MsoIssuer
4+
from pymdoccbor.tests.micov_data import MICOV_DATA
5+
from pymdoccbor.tests.pkey import PKEY
6+
7+
8+
def test_mso_issuer_fail():
9+
try:
10+
MsoIssuer(None, None)
11+
except Exception as e:
12+
assert str(e) == "MSO Writer requires a valid private key"
13+
14+
def test_mso_issuer_creation():
15+
msoi = MsoIssuer(
16+
data=MICOV_DATA,
17+
private_key=PKEY,
18+
validity={
19+
"issuance_date": "2024-12-31",
20+
"expiry_date": "2050-12-31"
21+
},
22+
alg="ES256"
23+
)
24+
25+
assert msoi.private_key
26+
assert msoi.data
27+
assert msoi.hash_map
28+
assert list(msoi.hash_map.keys())[0] == 'org.micov.medical.1'
29+
assert msoi.disclosure_map['org.micov.medical.1']
30+
31+
def test_mso_issuer_sign():
32+
msoi = MsoIssuer(
33+
data=MICOV_DATA,
34+
private_key=PKEY,
35+
validity={
36+
"issuance_date": "2024-12-31",
37+
"expiry_date": "2050-12-31"
38+
},
39+
alg="ES256"
40+
)
41+
42+
mso = msoi.sign()
43+
assert isinstance(mso, CoseMessage)
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
2+
import os
3+
from pycose.keys import CoseKey, EC2Key
4+
from pymdoccbor.mso.verifier import MsoVerifier
5+
from pymdoccbor.mdoc.issuer import MdocCborIssuer
6+
from pymdoccbor.tests.micov_data import MICOV_DATA
7+
from pycose.messages import CoseMessage
8+
from pymdoccbor.tests.pkey import PKEY
9+
10+
11+
mdoc = MdocCborIssuer(
12+
private_key=PKEY,
13+
alg="ES256",
14+
)
15+
16+
mdoc.new(
17+
data=MICOV_DATA,
18+
#devicekeyinfo=PKEY, # TODO
19+
doctype="org.micov.medical.1",
20+
validity={
21+
"issuance_date": "2024-12-31",
22+
"expiry_date": "2050-12-31"
23+
},
24+
)
25+
26+
def test_mso_verifier_fail():
27+
try:
28+
MsoVerifier(None)
29+
except Exception as e:
30+
assert str(e) == "MsoParser only supports raw bytes and list, a <class 'NoneType'> was provided"
31+
32+
def test_mso_verifier_creation():
33+
issuerAuth = mdoc.signed["documents"][0]["issuerSigned"]["issuerAuth"]
34+
35+
msov = MsoVerifier(issuerAuth)
36+
37+
assert isinstance(msov.object, CoseMessage)
38+
39+
def test_mso_verifier_verify_signatures():
40+
issuerAuth = mdoc.signed["documents"][0]["issuerSigned"]["issuerAuth"]
41+
42+
msov = MsoVerifier(issuerAuth)
43+
44+
assert msov.verify_signature()
45+
46+
def test_mso_verifier_payload_as_cbor():
47+
issuerAuth = mdoc.signed["documents"][0]["issuerSigned"]["issuerAuth"]
48+
49+
msov = MsoVerifier(issuerAuth)
50+
51+
cbor = msov.payload_as_dict
52+
53+
assert cbor
54+
assert cbor["version"] == "1.0"
55+
assert cbor["digestAlgorithm"] == "SHA-256"
56+
assert cbor["valueDigests"]["org.micov.medical.1"]
57+
58+
def test_payload_as_raw():
59+
issuerAuth = mdoc.signed["documents"][0]["issuerSigned"]["issuerAuth"]
60+
61+
msov = MsoVerifier(issuerAuth)
62+
63+
raw = msov.payload_as_raw
64+
65+
assert raw
66+
assert isinstance(raw, bytes)
67+
assert len(raw) > 0

pymdoccbor/tests/test_08_mdoc_cbor.py

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,7 @@
33
from pymdoccbor.mdoc.issuer import MdocCborIssuer
44
from pymdoccbor.tests.micov_data import MICOV_DATA
55
from pymdoccbor.mdoc.verifier import MdocCbor
6-
7-
PKEY = {
8-
'KTY': 'EC2',
9-
'CURVE': 'P_256',
10-
'ALG': 'ES256',
11-
'D': os.urandom(32),
12-
'KID': b"demo-kid"
13-
}
6+
from pymdoccbor.tests.pkey import PKEY
147

158
def test_mdoc_cbor_creation():
169
mdoci = MdocCborIssuer(

0 commit comments

Comments
 (0)