diff --git a/cryptography/fernet.py b/cryptography/fernet.py
index 59d8ad0..2c134bb 100644
--- a/cryptography/fernet.py
+++ b/cryptography/fernet.py
@@ -53,8 +53,8 @@
         hmac = h.digest()
         if not constant_time_compare(hmac, data[-32:]):
             raise ValueError
-        unencryptor = BlockCipher(ciphers.AES(self.encryption_key), modes.CBC(iv)).unencryptor()
-        plaintext_padded = unencryptor.update(ciphertext) + unencryptor.finalize()
+        decryptor = BlockCipher(ciphers.AES(self.encryption_key), modes.CBC(iv)).decryptor()
+        plaintext_padded = decryptor.update(ciphertext) + decryptor.finalize()
         unpadder = padding.PKCS7(ciphers.AES.block_size).unpadder()
         return unpadder.update(plaintext_padded) + unpadder.finalize()
 
diff --git a/tests/test_fernet.py b/tests/test_fernet.py
new file mode 100644
index 0000000..e9d07f8
--- /dev/null
+++ b/tests/test_fernet.py
@@ -0,0 +1,23 @@
+import base64
+
+from cryptography.fernet import Fernet
+
+
+class TestFernet(object):
+    def test_generate(self):
+        f = Fernet(base64.urlsafe_b64decode(
+            b"cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
+        ))
+        token = f._encrypt_from_parts(
+            b"hello",
+            499162800,
+            b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F",
+        )
+        assert token == b"gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA=="
+
+    def test_verify(self):
+        f = Fernet(base64.urlsafe_b64decode(
+            b"cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
+        ))
+        payload = f.decrypt(b"gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==", 60)
+        assert payload == b"hello"
