From 52bd8bae811bac12efe1c8dcc0f02d7bb021dfb3 Mon Sep 17 00:00:00 2001
From: Jean-Paul Calderone <exarkun@twistedmatrix.com>
Date: Wed, 26 Feb 2020 15:21:38 -0500
Subject: [PATCH] Test the non-None case of lease maintenance spending activity
 API

---
 src/_zkapauthorizer/resource.py               |  2 +-
 .../tests/test_client_resource.py             | 44 +++++++++++++++++++
 2 files changed, 45 insertions(+), 1 deletion(-)

diff --git a/src/_zkapauthorizer/resource.py b/src/_zkapauthorizer/resource.py
index c53114e..961aea7 100644
--- a/src/_zkapauthorizer/resource.py
+++ b/src/_zkapauthorizer/resource.py
@@ -162,7 +162,7 @@ class _UnblindedTokenCollection(Resource):
         if activity is None:
             return activity
         return {
-            u"when": activity.finished,
+            u"when": activity.finished.isoformat(),
             u"count": activity.passes_required,
         }
 
diff --git a/src/_zkapauthorizer/tests/test_client_resource.py b/src/_zkapauthorizer/tests/test_client_resource.py
index 9d620c5..8694ea1 100644
--- a/src/_zkapauthorizer/tests/test_client_resource.py
+++ b/src/_zkapauthorizer/tests/test_client_resource.py
@@ -440,6 +440,50 @@ class UnblindedTokenTests(TestCase):
             ),
         )
 
+    @given(
+        tahoe_configs(),
+        lists(
+            lists(
+                integers(min_value=0),
+                min_size=1,
+            ),
+        ),
+        datetimes(),
+    )
+    def test_latest_lease_maintenance_spending(self, get_config, size_observations, now):
+        """
+        The most recently completed record of lease maintenance spending activity
+        is reported in the response to a **GET** request.
+        """
+        tempdir = self.useFixture(TempDir())
+        config = get_config(tempdir.join(b"tahoe"), b"tub.port")
+        root = root_from_config(config, lambda: now)
+
+        # Put some activity into it.
+        total = 0
+        activity = root.store.start_lease_maintenance()
+        for sizes in size_observations:
+            total += sum(sizes)
+            activity.observe(sizes)
+        activity.finish()
+
+        agent = RequestTraversalAgent(root)
+        d = agent.request(
+            b"GET",
+            b"http://127.0.0.1/unblinded-token",
+        )
+        d.addCallback(readBody)
+        d.addCallback(
+            lambda body: loads(body)[u"lease-maintenance-spending"],
+        )
+        self.assertThat(
+            d,
+            succeeded(Equals({
+                "when": now.isoformat(),
+                "count": total,
+            })),
+        )
+
 
 def succeeded_with_unblinded_tokens_with_matcher(
         all_token_count,
-- 
GitLab