From d13829ff076df562ea3b0e7f0a982735cec4bc00 Mon Sep 17 00:00:00 2001
From: Tres Seaver <tseaver@palladion.com>
Date: Fri, 12 Dec 2014 23:29:36 +0100
Subject: [PATCH] Remove cruft, restore test coverage to 100%.

---
 repoze/who/tests/test_api.py |  220 +++++++++++++-----------------------------------------
 1 files changed, 54 insertions(+), 166 deletions(-)

diff --git a/repoze/who/tests/test_api.py b/repoze/who/tests/test_api.py
index 6434067..7146a0b 100644
--- a/repoze/who/tests/test_api.py
+++ b/repoze/who/tests/test_api.py
@@ -356,9 +356,10 @@
         self.assertEqual(result, None)
         self.assertEqual(environ['challenged'], None)
         self.assertEqual(identifier.forgotten, identity)
-        self.assertEqual(len(logger._info), 2)
+        self.assertEqual(len(logger._info), 3)
         self.assertEqual(logger._info[0], 'request classification: match')
-        self.assertEqual(logger._info[1], 'no challenge app returned')
+        self.failUnless(logger._info[1].startswith('forgetting via headers '))
+        self.assertEqual(logger._info[2], 'no challenge app returned')
         self.assertEqual(len(logger._debug), 2)
         self.failUnless(logger._debug[0].startswith(
                                         'challengers registered: ['))
@@ -387,10 +388,11 @@
         self.assertEqual(result, app)
         self.assertEqual(environ['challenged'], app)
         self.assertEqual(identifier.forgotten, identity)
-        self.assertEqual(len(logger._info), 2)
+        self.assertEqual(len(logger._info), 3)
         self.assertEqual(logger._info[0], 'request classification: match')
-        self.failUnless(logger._info[1].startswith('challenger plugin '))
-        self.failUnless(logger._info[1].endswith(
+        self.failUnless(logger._info[1].startswith('forgetting via headers '))
+        self.failUnless(logger._info[2].startswith('challenger plugin '))
+        self.failUnless(logger._info[2].endswith(
                          '"challenge" returned an app'))
         self.assertEqual(len(logger._debug), 2)
         self.failUnless(logger._debug[0].startswith(
@@ -504,14 +506,7 @@
         self.assertEqual(identifier.forgotten, identity)
 
     def test_remember_identifier_plugin_returns_none(self):
-        class _Identifier:
-            def identify(self, environ):
-                return None
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return ()
-        identity = {'identifier': _Identifier()}
+        identity = {'identifier': DummyNoResultsIdentifier()}
         api = self._makeOne()
         headers = api.remember(identity=identity)
         self.assertEqual(tuple(headers), ())
@@ -527,11 +522,9 @@
     def test_remember_no_identity_passed_but_in_environ(self):
         HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         logger = DummyLogger()
-        class _Identifier:
-            def remember(self, environ, identity):
-                return HEADERS
         environ = self._makeEnviron()
-        environ['repoze.who.identity'] = {'identifier': _Identifier()}
+        environ['repoze.who.identity'] = {
+            'identifier': DummyIdentifier(remember_headers=HEADERS)}
         api = self._makeOne(environ=environ, logger=logger)
         self.assertEqual(api.remember(), HEADERS)
         self.assertEqual(len(logger._info), 2)
@@ -554,12 +547,9 @@
     def test_remember_w_identity_passed_w_identifier(self):
         HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         logger = DummyLogger()
-        class _Identifier:
-            def remember(self, environ, identity):
-                return HEADERS
         environ = self._makeEnviron()
         api = self._makeOne(environ=environ, logger=logger)
-        identity = {'identifier': _Identifier()}
+        identity = {'identifier': DummyIdentifier(remember_headers=HEADERS)}
         self.assertEqual(api.remember(identity), HEADERS)
         self.assertEqual(len(logger._info), 2)
         self.assertEqual(logger._info[0], 'request classification: browser')
@@ -569,14 +559,7 @@
         self.assertEqual(len(logger._debug), 0)
 
     def test_forget_identifier_plugin_returns_none(self):
-        class _Identifier:
-            def identify(self, environ):
-                return None
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return ()
-        identity = {'identifier': _Identifier()}
+        identity = {'identifier': DummyNoResultsIdentifier()}
         api = self._makeOne()
         headers = api.forget(identity=identity)
         self.assertEqual(tuple(headers), ())
@@ -593,11 +576,9 @@
     def test_forget_no_identity_passed_but_in_environ(self):
         HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         logger = DummyLogger()
-        class _Identifier:
-            def forget(self, environ, identity):
-                return HEADERS
         environ = self._makeEnviron()
-        environ['repoze.who.identity'] = {'identifier': _Identifier()}
+        environ['repoze.who.identity'] = {
+            'identifier': DummyIdentifier(forget_headers=HEADERS)}
         api = self._makeOne(environ=environ, logger=logger)
         self.assertEqual(api.forget(), HEADERS)
         self.assertEqual(len(logger._info), 2)
@@ -620,12 +601,9 @@
     def test_forget_w_identity_passed_w_identifier(self):
         HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         logger = DummyLogger()
-        class _Identifier:
-            def forget(self, environ, identity):
-                return HEADERS
         environ = self._makeEnviron()
         api = self._makeOne(environ=environ, logger=logger)
-        identity = {'identifier': _Identifier()}
+        identity = {'identifier': DummyIdentifier(forget_headers=HEADERS)}
         self.assertEqual(api.forget(identity), HEADERS)
         self.assertEqual(len(logger._info), 2)
         self.assertEqual(logger._info[0], 'request classification: browser')
@@ -637,53 +615,28 @@
     def test_login_w_identifier_name_hit(self):
         REMEMBER_HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         FORGET_HEADERS = [('Spam', 'Blah')]
-        class _Identifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return REMEMBER_HEADERS[1:]
-            def forget(self, environ, identity):
-                return FORGET_HEADERS
-        class _BogusIdentifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return REMEMBER_HEADERS[:1]
-            def forget(self, environ, identity):
-                pass
         authenticator = DummyAuthenticator('chrisid')
         environ = self._makeEnviron()
-        identifiers = [('bogus', _BogusIdentifier()),
-                       ('valid', _Identifier()),
+        identifiers = [('bogus', DummyNoResultsIdentifier()),
+                       ('valid', DummyIdentifier(
+                                    remember_headers=REMEMBER_HEADERS)),
                       ]
         api = self._makeOne(identifiers=identifiers,
                             authenticators=[('authentic', authenticator)],
                             environ=environ)
         identity, headers = api.login({'login': 'chrisid'}, 'valid')
         self.assertEqual(identity['repoze.who.userid'], 'chrisid')
-        self.assertEqual(headers, REMEMBER_HEADERS[1:])
+        self.assertEqual(headers, REMEMBER_HEADERS)
 
     def test_login_wo_identifier_name_hit(self):
         REMEMBER_HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         FORGET_HEADERS = [('Spam', 'Blah')]
-        class _Identifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return REMEMBER_HEADERS[1:]
-            def forget(self, environ, identity):
-                return FORGET_HEADERS
-        class _BogusIdentifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return REMEMBER_HEADERS[:1]
-            def forget(self, environ, identity):
-                pass
         authenticator = DummyAuthenticator('chrisid')
         environ = self._makeEnviron()
-        identifiers = [('bogus', _BogusIdentifier()),
-                       ('valid', _Identifier()),
+        identifiers = [('bogus', DummyIdentifier(
+                                    remember_headers=REMEMBER_HEADERS[:1])),
+                       ('valid', DummyIdentifier(
+                                    remember_headers=REMEMBER_HEADERS[1:])),
                       ]
         api = self._makeOne(identifiers=identifiers,
                             authenticators=[('authentic', authenticator)],
@@ -695,24 +648,12 @@
     def test_login_w_identifier_name_miss(self):
         REMEMBER_HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         FORGET_HEADERS = [('Spam', 'Blah')]
-        class _Identifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return REMEMBER_HEADERS
-            def forget(self, environ, identity):
-                return FORGET_HEADERS
-        class _BogusIdentifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return ()
         authenticator = DummyFailAuthenticator()
         environ = self._makeEnviron()
-        identifiers = [('bogus', _BogusIdentifier()),
-                       ('valid', _Identifier()),
+        identifiers = [('bogus', DummyNoResultsIdentifier()),
+                       ('valid', DummyIdentifier(
+                                    remember_headers=REMEMBER_HEADERS,
+                                    forget_headers=FORGET_HEADERS)),
                       ]
         api = self._makeOne(identifiers=identifiers,
                             authenticators=[('authentic', authenticator)],
@@ -723,23 +664,11 @@
 
     def test_logout_wo_identifier_name_miss(self):
         FORGET_HEADERS = [('Spam', 'Blah')]
-        class _Identifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return FORGET_HEADERS[:1]
-        class _BogusIdentifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return FORGET_HEADERS[1:]
         environ = self._makeEnviron()
-        identifiers = [('valid', _Identifier()),
-                       ('bogus', _BogusIdentifier()),
+        identifiers = [('valid', DummyIdentifier(
+                                    forget_headers=FORGET_HEADERS[:1])),
+                       ('bogus', DummyIdentifier(
+                                    forget_headers=FORGET_HEADERS[1:])),
                       ]
         api = self._makeOne(identifiers=identifiers,
                             environ=environ)
@@ -748,23 +677,10 @@
 
     def test_logout_w_identifier_name(self):
         FORGET_HEADERS = [('Spam', 'Blah')]
-        class _Identifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return FORGET_HEADERS
-        class _BogusIdentifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return ()
         environ = self._makeEnviron()
-        identifiers = [('bogus', _BogusIdentifier()),
-                       ('valid', _Identifier()),
+        identifiers = [('bogus', DummyNoResultsIdentifier()),
+                       ('valid', DummyIdentifier(
+                                    forget_headers=FORGET_HEADERS)),
                       ]
         api = self._makeOne(identifiers=identifiers,
                             environ=environ)
@@ -774,24 +690,11 @@
     def test_logout_wo_identifier_name(self):
         REMEMBER_HEADERS = [('Foo', 'Bar'), ('Baz', 'Qux')]
         FORGET_HEADERS = [('Spam', 'Blah')]
-        class _Identifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return REMEMBER_HEADERS
-            def forget(self, environ, identity):
-                return FORGET_HEADERS
-        class _BogusIdentifier:
-            def identify(self, environ):
-                pass
-            def remember(self, environ, identity):
-                return ()
-            def forget(self, environ, identity):
-                return ()
         authenticator = DummyFailAuthenticator()
         environ = self._makeEnviron()
-        identifiers = [('valid', _Identifier()),
-                       ('bogus', _BogusIdentifier()),
+        identifiers = [('bogus', DummyNoResultsIdentifier()),
+                       ('valid', DummyIdentifier(
+                                    forget_headers=FORGET_HEADERS)),
                       ]
         api = self._makeOne(identifiers=identifiers,
                             authenticators=[('authentic', authenticator)],
@@ -800,17 +703,10 @@
         self.assertEqual(headers, FORGET_HEADERS)
 
     def test_logout_removes_repoze_who_identity(self):
-        class _Identifier:
-            def identify(self, environ):
-                pass
-            def forget(self, environ, identity):
-                return ()
-            def remember(self, environ, identity):
-                return ()
         authenticator = DummyFailAuthenticator()
         environ = self._makeEnviron()
         environ['repoze.who.identity'] = 'identity'
-        identifiers = [('valid', _Identifier())]
+        identifiers = [('valid', DummyNoResultsIdentifier())]
         api = self._makeOne(identifiers=identifiers,
                             authenticators=[('authentic', authenticator)],
                             environ=environ)
@@ -1153,20 +1049,17 @@
 
 
 
-class DummyIdentifier:
+class DummyIdentifier(object):
     forgotten = False
     remembered = False
 
-    def __init__(self, credentials=None, remember_headers=None,
-                 forget_headers=None, replace_app=None):
+    def __init__(self, credentials=None,
+                 remember_headers=(), forget_headers=()):
         self.credentials = credentials
         self.remember_headers = remember_headers
         self.forget_headers = forget_headers
-        self.replace_app = replace_app
 
     def identify(self, environ):
-        if self.replace_app:
-            environ['repoze.who.application'] = self.replace_app
         return self.credentials
 
     def forget(self, environ, identity):
@@ -1178,19 +1071,19 @@
         return self.remember_headers
 
 
-class DummyNoResultsIdentifier:
+class DummyNoResultsIdentifier(object):
 
     def identify(self, environ):
         return None
 
     def remember(self, *arg, **kw):
-        pass
+        return ()
 
     def forget(self, *arg, **kw):
-        pass
+        return ()
 
 
-class DummyAuthenticator:
+class DummyAuthenticator(object):
     def __init__(self, userid=None):
         self.userid = userid
 
@@ -1200,12 +1093,12 @@
         return self.userid
 
 
-class DummyFailAuthenticator:
+class DummyFailAuthenticator(object):
     def authenticate(self, environ, credentials):
         return None
 
 
-class DummyChallenger:
+class DummyChallenger(object):
     _challenged_with = None
     def __init__(self, app=None):
         self.app = app
@@ -1216,7 +1109,7 @@
         return self.app
 
 
-class DummyMDProvider:
+class DummyMDProvider(object):
     def __init__(self, metadata=None):
         self._metadata = metadata
 
@@ -1224,30 +1117,25 @@
         return identity.update(self._metadata)
 
 
-class DummyMultiPlugin:
+class DummyMultiPlugin(object):
     pass
 
 
-class DummyRequestClassifier:
+class DummyRequestClassifier(object):
     def __call__(self, environ):
         return 'browser'
 
 
-class DummyChallengeDecider:
-    def __call__(self, environ, status, headers):
-        if status.startswith('401 '):
-            return True
+class DummyChallengeDecider(object):
+    pass
 
 
-class DummyLogger:
+class DummyLogger(object):
     _info = _debug = ()
     def info(self, msg):
         self._info += (msg,)
     def debug(self, msg):
         self._debug += (msg,)
 
-class DummyApp:
+class DummyApp(object):
     environ = None
-    def __call__(self, environ, start_response):
-        self.environ = environ
-        return []

--
Gitblit v1.9.3