class TestJWKESTSupportedAlgs(unittest.TestCase):

    def setUp(self):
        self._transport = JOSETransport()
        self._transport.get = MagicMock(return_value=MagicMock(spec=APIResponse))
        public_key = APIResponse(valid_private_key,
                                 {"X-IOV-KEY-ID": "59:12:e2:f6:3f:79:d5:1e:18:75:c5:25:ff:b3:b7:f2"}, 200)
        self._transport.get.return_value = public_key
        self._transport._server_time_difference = 0, time()

    def _encrypt_decrypt(self):
        self._transport.add_issuer_key(valid_private_key)
        to_encrypt = {"tobe": "encrypted"}
        encrypted = self._transport._encrypt_request(to_encrypt)
        self.assertEqual(len(encrypted.split('.')), 5)
        decrypted = self._transport.decrypt_response(encrypted)
        self.assertEqual(loads(decrypted), to_encrypt)

    def test_encrypt_decrypt_defaults(self):
        self._encrypt_decrypt()

    def test_supported_jwt_algorithms_success(self):
        for alg in JOSE_SUPPORTED_JWT_ALGS:
            self._transport.jwt_algorithm = alg
            self._encrypt_decrypt()

    def test_supported_jwe_algorithms_success(self):
        for alg in JOSE_SUPPORTED_JWE_ALGS:
            self._transport.jwe_cek_encryption = alg
            self._encrypt_decrypt()

    def test_supported_jwe_encryptions_success(self):
        for enc in JOSE_SUPPORTED_JWE_ENCS:
            self._transport.jwe_claims_encryption = enc
            self._encrypt_decrypt()
Beispiel #2
0
class TestJWKESTSupportedAlgs(unittest.TestCase):
    def setUp(self):
        self._transport = JOSETransport()
        self._transport.get = MagicMock(return_value=MagicMock(
            spec=APIResponse))
        public_key = APIResponse(valid_private_key, transport_request_headers,
                                 200)
        self._transport.get.return_value = public_key
        self._transport._server_time_difference = 0, time()

        self._jwt_patch = patch("launchkey.transports.jose_auth.JWT",
                                return_value=MagicMock(spec=JWT)).start()
        self._jwt_patch.return_value.unpack.return_value.headers = faux_jwt_headers

        self.addCleanup(patch.stopall)

    def _encrypt_decrypt(self):
        self._transport.add_issuer_key(valid_private_key)
        to_encrypt = {"tobe": "encrypted"}
        encrypted = self._transport._encrypt_request(to_encrypt)
        self.assertEqual(len(encrypted.split('.')), 5)
        decrypted = self._transport.decrypt_response(encrypted)
        self.assertEqual(loads(decrypted), to_encrypt)

    def test_encrypt_decrypt_defaults(self):
        self._encrypt_decrypt()

    def test_supported_jwt_algorithms_success(self):
        for alg in JOSE_SUPPORTED_JWT_ALGS:
            self._transport.jwt_algorithm = alg
            self._encrypt_decrypt()

    def test_supported_jwe_algorithms_success(self):
        for alg in JOSE_SUPPORTED_JWE_ALGS:
            self._transport.jwe_cek_encryption = alg
            self._encrypt_decrypt()

    def test_supported_jwe_encryptions_success(self):
        for enc in JOSE_SUPPORTED_JWE_ENCS:
            self._transport.jwe_claims_encryption = enc
            self._encrypt_decrypt()