diff --git a/src/_zkapauthorizer/lease_maintenance.py b/src/_zkapauthorizer/lease_maintenance.py
index e264f32ca8a0dd60b362da5ca01150563d092173..f32de8dff441b6832a906f32681182c7a9233f45 100644
--- a/src/_zkapauthorizer/lease_maintenance.py
+++ b/src/_zkapauthorizer/lease_maintenance.py
@@ -154,7 +154,11 @@ def renew_leases(
     storage_indexes = yield iter_storage_indexes(visit_assets)
 
     renewal_secret = secret_holder.get_renewal_secret()
-    servers = storage_broker.get_connected_servers()
+    servers = list(
+        server.get_storage_server()
+        for server
+        in storage_broker.get_connected_servers()
+    )
 
     for server in servers:
         # Consider parallelizing this.
diff --git a/src/_zkapauthorizer/tests/test_lease_maintenance.py b/src/_zkapauthorizer/tests/test_lease_maintenance.py
index 7d4df1de10ab11a5bdb1df2522c97d2bfce64d6c..5b90fe3654839390e7a551bfc80b1d0a2bfd5160 100644
--- a/src/_zkapauthorizer/tests/test_lease_maintenance.py
+++ b/src/_zkapauthorizer/tests/test_lease_maintenance.py
@@ -28,6 +28,10 @@ from datetime import (
 
 import attr
 
+from zope.interface import (
+    implementer,
+)
+
 from testtools import (
     TestCase,
 )
@@ -82,6 +86,10 @@ from allmydata.util.hashutil import (
 from allmydata.client import (
     SecretHolder,
 )
+from allmydata.interfaces import (
+    IStorageBroker,
+    IServer,
+)
 
 from ..foolscap import (
     ShareStat,
@@ -179,11 +187,29 @@ def storage_servers(clocks):
         clocks,
         dictionaries(storage_indexes(), share_stats()),
         lease_seeds(),
+    ).map(
+        DummyServer,
     )
 
 
+@implementer(IServer)
+@attr.s
+class DummyServer(object):
+    """
+    A partial implementation of a Tahoe-LAFS "native" storage server.
+    """
+    _storage_server = attr.ib()
+
+    def get_storage_server(self):
+        return self._storage_server
+
+
+@implementer(IStorageBroker)
 @attr.s
 class DummyStorageBroker(object):
+    """
+    A partial implementation of a Tahoe-LAFS storage broker.
+    """
     clock = attr.ib()
     _storage_servers = attr.ib()
 
@@ -455,7 +481,11 @@ class RenewLeasesTests(TestCase):
         )
 
         self.assertThat(
-            storage_broker.get_connected_servers(),
+            list(
+                server.get_storage_server()
+                for server
+                in storage_broker.get_connected_servers()
+            ),
             AllMatch(leases_current(
                 relevant_storage_indexes,
                 get_now(),
@@ -506,7 +536,11 @@ class MaintainLeasesFromRootTests(TestCase):
         )
 
         self.assertThat(
-            storage_broker.get_connected_servers(),
+            list(
+                server.get_storage_server()
+                for server
+                in storage_broker.get_connected_servers()
+            ),
             AllMatch(leases_current(
                 relevant_storage_indexes,
                 get_now(),
@@ -550,9 +584,9 @@ class MaintainLeasesFromRootTests(TestCase):
 
         expected = []
         for node in root_node.flatten():
-            for storage_server in storage_broker.get_connected_servers():
+            for server in storage_broker.get_connected_servers():
                 try:
-                    stat = storage_server.buckets[node.get_storage_index()]
+                    stat = server.get_storage_server().buckets[node.get_storage_index()]
                 except KeyError:
                     continue
                 else: