File: test_examples.py

package info (click to toggle)
joserfc 1.6.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,480 kB
  • sloc: python: 8,096; makefile: 18
file content (41 lines) | stat: -rw-r--r-- 1,613 bytes parent folder | download
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
from tests.base import TestFixture, load_key
from joserfc.jwk import OctKey
from joserfc.jws import HeaderDict
from joserfc import jws


class TestJWSExamples(TestFixture):
    def run_test(self, data):
        if "secret" in data:
            key = OctKey.import_key(data["secret"])
            private_key = key
            public_key = key
        else:
            private_key = load_key(data["private_key"])
            public_key = load_key(data["public_key"])

        protected = data["protected"]
        payload = data["payload"]
        algorithms = [protected["alg"]]

        value1 = jws.serialize_compact(protected, payload, private_key, algorithms=algorithms)
        obj1 = jws.deserialize_compact(value1, public_key, algorithms=algorithms)
        self.assertEqual(obj1.protected, protected)
        if "compact" in data:
            self.assertEqual(value1, data["compact"])

        member: HeaderDict = {"protected": protected}
        value2 = jws.serialize_json(member, payload, private_key, algorithms=algorithms)
        obj2 = jws.deserialize_json(value2, public_key, algorithms=algorithms)
        self.assertTrue(obj2.flattened)
        if "flattened_json" in data:
            self.assertEqual(value2, data["flattened_json"])

        value3 = jws.serialize_json([member], payload, private_key, algorithms=algorithms)
        obj3 = jws.deserialize_json(value3, public_key, algorithms=algorithms)
        self.assertFalse(obj3.flattened)
        if "general_json" in data:
            self.assertEqual(value3, data["general_json"])


TestJWSExamples.load_fixture("jws_examples.json")