From 9e459a62f321cf02c79e162bbb9c4419f0edbaf2 Mon Sep 17 00:00:00 2001
From: Jean-Paul Calderone <exarkun@twistedmatrix.com>
Date: Tue, 2 Jun 2020 10:30:34 -0400
Subject: [PATCH] Direct tests for `get_rref` helper

---
 src/_zkapauthorizer/tests/test_plugin.py | 49 ++++++++++++++++++++++++
 1 file changed, 49 insertions(+)

diff --git a/src/_zkapauthorizer/tests/test_plugin.py b/src/_zkapauthorizer/tests/test_plugin.py
index 403acd3..44c79af 100644
--- a/src/_zkapauthorizer/tests/test_plugin.py
+++ b/src/_zkapauthorizer/tests/test_plugin.py
@@ -47,6 +47,8 @@ from testtools.matchers import (
     HasLength,
     AllMatch,
     ContainsDict,
+    MatchesStructure,
+    IsInstance,
 )
 from testtools.twistedsupport import (
     succeeded,
@@ -169,6 +171,53 @@ def get_rref(interface=None):
 
 
 
+class GetRRefTests(TestCase):
+    """
+    Tests for ``get_rref``.
+    """
+    def test_localremote(self):
+        """
+        ``get_rref`` returns an instance of ``LocalRemote``.
+        """
+        rref = get_rref()
+        self.assertThat(
+            rref,
+            IsInstance(LocalRemote),
+        )
+
+    def test_remote_interface(self):
+        """
+        ``get_rref`` returns an object which declares a remote interface matching
+        the one given.
+        """
+        rref = get_rref()
+        self.assertThat(
+            rref,
+            AfterPreprocessing(
+                lambda ref: ref.tracker,
+                MatchesStructure(
+                    interfaceName=Equals(RIPrivacyPassAuthorizedStorageServer.__remote_name__),
+                ),
+            ),
+        )
+
+    def test_default_remote_interface(self):
+        """
+        ``get_rref`` returns an object which declares a
+        ``RIPrivacyPassAuthorizedStorageServer`` as the remote interface if no
+        other interface is given.
+        """
+        rref = get_rref(RIStorageServer)
+        self.assertThat(
+            rref,
+            AfterPreprocessing(
+                lambda ref: ref.tracker,
+                MatchesStructure(
+                    interfaceName=Equals(RIStorageServer.__remote_name__),
+                ),
+            ),
+        )
+
 
 class PluginTests(TestCase):
     """
-- 
GitLab