1
0
mirror of https://github.com/quay/quay.git synced 2026-01-26 06:21:37 +03:00
Files
quay/data/test/test_encryption.py
2020-11-30 18:48:19 -05:00

81 lines
2.3 KiB
Python

# -*- coding: utf-8 -*-
import pytest
from data.encryption import FieldEncrypter, _VERSIONS, DecryptionFailureException
@pytest.mark.parametrize(
"test_data",
[
"",
"hello world",
"wassup?!",
"IGZ2Y8KUN3EFWAZZXR3D7U4V5NXDVYZI5VGU6STPB6KM83PAB8WRGM32RD9FW0C0",
"JLRFBYS1EHKUE73S99HWOQWNPGLUZTBRF5HQEFUJS5BK3XVB54RNXYV4AUMJXCMC",
"a" * 3,
"a" * 4,
"a" * 5,
"a" * 31,
"a" * 32,
"a" * 33,
"a" * 150,
"😇",
],
)
@pytest.mark.parametrize("version", list(_VERSIONS.keys()))
@pytest.mark.parametrize(
"secret_key",
[
"test1234",
"thisisanothercoolsecretkeyhere",
"107383705745765174750346070528443780244192102846031525796571939503548634055845",
],
)
@pytest.mark.parametrize(
"use_valid_key",
[
True,
False,
],
)
def test_encryption(test_data, version, secret_key, use_valid_key):
encrypter = FieldEncrypter(secret_key, version)
encrypted = encrypter.encrypt_value(test_data, field_max_length=255)
assert encrypted != test_data
if use_valid_key:
decrypted = encrypter.decrypt_value(encrypted)
assert decrypted == test_data
with pytest.raises(DecryptionFailureException):
encrypter.decrypt_value("somerandomvalue")
else:
decrypter = FieldEncrypter("some other key", version)
with pytest.raises(DecryptionFailureException):
decrypter.decrypt_value(encrypted)
@pytest.mark.parametrize(
"secret_key, encrypted_value, expected_decrypted_value",
[
("test1234", "v0$$iE+87Qefu/2i+5zC87nlUtOskypk8MUUDS/QZPs=", ""),
("test1234", "v0$$XTxqlz/Kw8s9WKw+GaSvXFEKgpO/a2cGNhvnozzkaUh4C+FgHqZqnA==", "hello world"),
(
"test1234",
"v0$$9LadVsSvfAr9r1OvghSYcJqrJpv46t+U6NgLKrcFY6y2bQsASIN36g==",
"hello world",
),
(
"\1\2\3\4\5\6",
"v0$$2wwWX8IhUYzuh4cyMgSXF3MEVDlEhrf0CNimTghlHgCuK6E4+bLJb1xJOKxsXMs=",
"hello world, again",
),
],
)
def test_encryption_value(secret_key, encrypted_value, expected_decrypted_value):
encrypter = FieldEncrypter(secret_key)
decrypted = encrypter.decrypt_value(encrypted_value)
assert decrypted == expected_decrypted_value