diff --git a/tests/test_fernet.py b/tests/test_fernet.py
index 7bdfa3f..382a232 100644
--- a/tests/test_fernet.py
+++ b/tests/test_fernet.py
@@ -1,31 +1,49 @@
 import base64
+import calendar
+import json
+import os
+
+import iso8601
+
+import pytest
 
 import six
 
 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"".join(map(six.int2byte, range(16))),
-        )
-        assert token == (b"gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM"
-                         b"4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==")
+def json_parametrize(keys, path):
+    with open(path) as f:
+        data = json.load(f)
+    return pytest.mark.parametrize(keys, [
+        tuple([entry[k] for k in keys])
+        for entry in data
+    ])
 
-    def test_verify(self):
-        f = Fernet(base64.urlsafe_b64decode(
-            b"cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
-        ))
-        payload = f.decrypt(
-            (b"gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dO"
-             b"PmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA=="),
-            ttl=60,
-            current_time=499162801
+
+class TestFernet(object):
+    @json_parametrize(
+        ("secret", "now", "iv", "src", "token"),
+        os.path.join(os.path.dirname(__file__), "vectors", "fernet", "generate.json")
+    )
+    def test_generate(self, secret, now, iv, src, token):
+        f = Fernet(base64.urlsafe_b64decode(secret.encode("ascii")))
+        actual_token = f._encrypt_from_parts(
+            src.encode("ascii"),
+            calendar.timegm(iso8601.parse_date(now).utctimetuple()),
+            b"".join(map(six.int2byte, iv))
         )
-        assert payload == b"hello"
+        assert actual_token == token
+
+    @json_parametrize(
+        ("secret", "now", "src", "ttl_sec", "token"),
+        os.path.join(os.path.dirname(__file__), "vectors", "fernet", "verify.json")
+    )
+    def test_verify(self, secret, now, src, ttl_sec, token):
+        f = Fernet(base64.urlsafe_b64decode(secret.encode("ascii")))
+        payload = f.decrypt(
+            token.encode("ascii"),
+            ttl=ttl_sec,
+            current_time=calendar.timegm(iso8601.parse_date(now).utctimetuple())
+        )
+        assert payload == src
diff --git a/tests/vectors/fernet/generate.json b/tests/vectors/fernet/generate.json
new file mode 100644
index 0000000..d1f3e08
--- /dev/null
+++ b/tests/vectors/fernet/generate.json
@@ -0,0 +1,9 @@
+[
+  {
+    "token": "gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==",
+    "now": "1985-10-26T01:20:00-07:00",
+    "iv": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15],
+    "src": "hello",
+    "secret": "cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
+  }
+]
diff --git a/tests/vectors/fernet/verify.json b/tests/vectors/fernet/verify.json
new file mode 100644
index 0000000..08c480f
--- /dev/null
+++ b/tests/vectors/fernet/verify.json
@@ -0,0 +1,9 @@
+[
+  {
+    "token": "gAAAAAAdwJ6wAAECAwQFBgcICQoLDA0ODy021cpGVWKZ_eEwCGM4BLLF_5CV9dOPmrhuVUPgJobwOz7JcbmrR64jVmpU4IwqDA==",
+    "now": "1985-10-26T01:20:01-07:00",
+    "ttl_sec": 60,
+    "src": "hello",
+    "secret": "cw_0x689RpI-jtRR7oE8h_eQsKImvJapLeSbXpwF4e4="
+  }
+]
