From bec40d9d68205f7593977c20a1c669fdfb59bb65 Mon Sep 17 00:00:00 2001
From: Jean-Paul Calderone <exarkun@twistedmatrix.com>
Date: Fri, 4 Sep 2020 11:58:01 -0400
Subject: [PATCH] Parse the byte string pass-value into an integer

---
 src/_zkapauthorizer/_plugin.py          |  2 +-
 src/_zkapauthorizer/tests/strategies.py | 17 +++++++++++++----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/src/_zkapauthorizer/_plugin.py b/src/_zkapauthorizer/_plugin.py
index 8f9b629..98eb8da 100644
--- a/src/_zkapauthorizer/_plugin.py
+++ b/src/_zkapauthorizer/_plugin.py
@@ -141,7 +141,7 @@ class ZKAPAuthorizer(object):
     def get_storage_server(self, configuration, get_anonymous_storage_server):
         kwargs = configuration.copy()
         root_url = kwargs.pop(u"ristretto-issuer-root-url")
-        pass_value = kwargs.pop(u"pass-value", BYTES_PER_PASS)
+        pass_value = int(kwargs.pop(u"pass-value", BYTES_PER_PASS))
         signing_key = SigningKey.decode_base64(
             FilePath(
                 kwargs.pop(u"ristretto-signing-key-path"),
diff --git a/src/_zkapauthorizer/tests/strategies.py b/src/_zkapauthorizer/tests/strategies.py
index 88b705e..025260d 100644
--- a/src/_zkapauthorizer/tests/strategies.py
+++ b/src/_zkapauthorizer/tests/strategies.py
@@ -216,10 +216,19 @@ def server_configurations(signing_key_path):
     :param unicode signing_key_path: A value to insert for the
         **ristretto-signing-key-path** item.
     """
-    return just({
-        u"ristretto-issuer-root-url": u"https://issuer.example.invalid/",
-        u"ristretto-signing-key-path": signing_key_path.path,
-    })
+    return one_of(
+        fixed_dictionaries({
+            u"pass-value":
+            # The configuration is ini so everything is always a byte string!
+            integers(min_value=1).map(bytes),
+        }),
+        just({}),
+    ).map(
+        lambda config: config.update({
+            u"ristretto-issuer-root-url": u"https://issuer.example.invalid/",
+            u"ristretto-signing-key-path": signing_key_path.path,
+        }) or config,
+    )
 
 
 def client_ristrettoredeemer_configurations():
-- 
GitLab