From 7b593e1b5ecf9741a1398a739815b8a11599a06a Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Sun, 19 Oct 2014 19:09:44 -0700 Subject: Fixes #1327 -- adds multifernet --- tests/test_fernet.py | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) (limited to 'tests/test_fernet.py') diff --git a/tests/test_fernet.py b/tests/test_fernet.py index 0b4e3e87..91af32ad 100644 --- a/tests/test_fernet.py +++ b/tests/test_fernet.py @@ -24,7 +24,7 @@ import pytest import six -from cryptography.fernet import Fernet, InvalidToken +from cryptography.fernet import Fernet, InvalidToken, MultiFernet from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives.ciphers import algorithms, modes @@ -115,3 +115,34 @@ class TestFernet(object): def test_bad_key(self, backend): with pytest.raises(ValueError): Fernet(base64.urlsafe_b64encode(b"abc"), backend=backend) + + +@pytest.mark.supported( + only_if=lambda backend: backend.cipher_supported( + algorithms.AES("\x00" * 32), modes.CBC("\x00" * 16) + ), + skip_message="Does not support AES CBC", +) +class TestMultiFernet(object): + def test_encrypt(self, backend): + single_f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + f = MultiFernet([ + single_f, + Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) + ]) + assert single_f.decrypt(f.encrypt(b"abc")) == b"abc" + + def test_decrypt(self, backend): + f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + f2 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + f = MultiFernet([f1, f2]) + + assert f.decrypt(f1.encrypt(b"abc")) == b"abc" + assert f.decrypt(f2.encrypt(b"abc")) == b"abc" + + with pytest.raises(InvalidToken): + f.decrypt(b"\x00" * 16) + + def test_no_fernets(self, backend): + with pytest.raises(ValueError): + MultiFernet([]) -- cgit v1.2.3 From 4f286cec7a28169ac8939cc01aa6fdead47ac58e Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Mon, 20 Oct 2014 11:30:57 -0700 Subject: Handle non-iterable arguments reasonable --- tests/test_fernet.py | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tests/test_fernet.py') diff --git a/tests/test_fernet.py b/tests/test_fernet.py index 91af32ad..58f89cbf 100644 --- a/tests/test_fernet.py +++ b/tests/test_fernet.py @@ -146,3 +146,7 @@ class TestMultiFernet(object): def test_no_fernets(self, backend): with pytest.raises(ValueError): MultiFernet([]) + + def test_non_iterable_argument(self, backend): + with pytest.raises(TypeError): + MultiFernet(None) -- cgit v1.2.3 From 41b33b70d3f9c937d80c264627d1195692a17863 Mon Sep 17 00:00:00 2001 From: Alex Gaynor Date: Mon, 20 Oct 2014 14:34:35 -0700 Subject: flake8 + cleanup --- tests/test_fernet.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'tests/test_fernet.py') diff --git a/tests/test_fernet.py b/tests/test_fernet.py index 58f89cbf..5c630b9e 100644 --- a/tests/test_fernet.py +++ b/tests/test_fernet.py @@ -125,16 +125,15 @@ class TestFernet(object): ) class TestMultiFernet(object): def test_encrypt(self, backend): - single_f = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) - f = MultiFernet([ - single_f, - Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) - ]) - assert single_f.decrypt(f.encrypt(b"abc")) == b"abc" + f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) + f = MultiFernet([f1, f2]) + + assert f1.decrypt(f.encrypt(b"abc")) == b"abc" def test_decrypt(self, backend): f1 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) - f2 = Fernet(base64.urlsafe_b64encode(b"\x00" * 32), backend=backend) + f2 = Fernet(base64.urlsafe_b64encode(b"\x01" * 32), backend=backend) f = MultiFernet([f1, f2]) assert f.decrypt(f1.encrypt(b"abc")) == b"abc" -- cgit v1.2.3