diff --git a/src/_zkapauthorizer/tests/strategies.py b/src/_zkapauthorizer/tests/strategies.py
index b4d5daaca56d9a28e0c18bea6ff994580752c9ba..4ba150cd8589c160bf895fc4dc6277100f93ca8e 100644
--- a/src/_zkapauthorizer/tests/strategies.py
+++ b/src/_zkapauthorizer/tests/strategies.py
@@ -657,7 +657,18 @@ def node_hierarchies():
     Build hierarchies of ``IDirectoryNode`` and other ``IFilesystemNode``
     (incomplete) providers.
     """
+    def storage_indexes_are_distinct(nodes):
+        seen = set()
+        for n in nodes.flatten():
+            si = n.get_storage_index()
+            if si in seen:
+                return False
+            seen.add(si)
+        return True
+
     return recursive(
         leaf_nodes(),
         directory_nodes,
+    ).filter(
+        storage_indexes_are_distinct,
     )
diff --git a/src/_zkapauthorizer/tests/test_lease_maintenance.py b/src/_zkapauthorizer/tests/test_lease_maintenance.py
index a59f776805f1ac53669cf145a1d7e67f992ab782..8d3545f6016a59bbed232f33f8dca552176ce0e4 100644
--- a/src/_zkapauthorizer/tests/test_lease_maintenance.py
+++ b/src/_zkapauthorizer/tests/test_lease_maintenance.py
@@ -552,7 +552,7 @@ class MaintainLeasesFromRootTests(TestCase):
         for node in root_node.flatten():
             for storage_server in storage_broker.get_connected_servers():
                 try:
-                    stat = storage_server.buckets[node._storage_index]
+                    stat = storage_server.buckets[node.get_storage_index()]
                 except KeyError:
                     continue
                 else: