diff --git a/src/_zkapauthorizer/tests/storage_common.py b/src/_zkapauthorizer/tests/storage_common.py
new file mode 100644
index 0000000000000000000000000000000000000000..6ae3a4c2c67fa2077e537ec3f33d06c96a94b4d1
--- /dev/null
+++ b/src/_zkapauthorizer/tests/storage_common.py
@@ -0,0 +1,37 @@
+# Copyright 2019 PrivateStorage.io, LLC
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""
+``allmydata.storage``-related helpers shared across the test suite.
+"""
+
+from twisted.python.filepath import (
+    FilePath,
+)
+
+def cleanup_storage_server(storage_server):
+    """
+    Delete all of the shares held by the given storage server.
+
+    :param allmydata.storage.server.StorageServer storage_server: The storage
+        server with some on-disk shares to delete.
+    """
+    starts = [
+        FilePath(storage_server.sharedir),
+        FilePath(storage_server.corruption_advisory_dir),
+    ]
+    for start in starts:
+        for p in start.walk():
+            if p is not start:
+                p.remove()
diff --git a/src/_zkapauthorizer/tests/test_storage_protocol.py b/src/_zkapauthorizer/tests/test_storage_protocol.py
index d0fe8bb05ef9efb366a25ac88073f2999f83ba97..74083eedca9c0efd48d085a3ea3a8c550b236ebe 100644
--- a/src/_zkapauthorizer/tests/test_storage_protocol.py
+++ b/src/_zkapauthorizer/tests/test_storage_protocol.py
@@ -89,6 +89,9 @@ from .matchers import (
 from .fixtures import (
     AnonymousStorageServer,
 )
+from .storage_common import (
+    cleanup_storage_server,
+)
 from ..api import (
     ZKAPAuthorizerStorageServer,
     ZKAPAuthorizerStorageClient,
@@ -682,20 +685,3 @@ def write_toy_shares(
     for (sharenum, writer) in allocated.items():
         writer.remote_write(0, bytes_for_share(sharenum, size))
         writer.remote_close()
-
-
-def cleanup_storage_server(storage_server):
-    """
-    Delete all of the shares held by the given storage server.
-
-    :param allmydata.storage.server.StorageServer storage_server: The storage
-        server with some on-disk shares to delete.
-    """
-    starts = [
-        FilePath(storage_server.sharedir),
-        FilePath(storage_server.corruption_advisory_dir),
-    ]
-    for start in starts:
-        for p in start.walk():
-            if p is not start:
-                p.remove()