Fix #1025 - Make API IDs IRIs
[mediagoblin.git] / mediagoblin / tests / test_openid.py
index c85f631847622667edbaedadaf8a39e1c361eee1..a3ab176ad0606826fe2cfed67f8d7085a4a606f6 100644 (file)
 #
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
-import urlparse
+
 import pkg_resources
 import pytest
-import mock
+import six
+import six.moves.urllib.parse as urlparse
+try:
+    import mock
+except ImportError:
+    import unittest.mock as mock
 
-from openid.consumer.consumer import SuccessResponse
+openid_consumer = pytest.importorskip(
+    "openid.consumer.consumer")
 
 from mediagoblin import mg_globals
 from mediagoblin.db.base import Session
@@ -41,7 +47,7 @@ def openid_plugin_app(request):
 class TestOpenIDPlugin(object):
     def _setup(self, openid_plugin_app, value=True, edit=False, delete=False):
         if value:
-            response = SuccessResponse(mock.Mock(), mock.Mock())
+            response = openid_consumer.SuccessResponse(mock.Mock(), mock.Mock())
             if edit or delete:
                 response.identity_url = u'http://add.myopenid.com'
             else:
@@ -176,7 +182,7 @@ class TestOpenIDPlugin(object):
 
             # Correct place?
             assert urlparse.urlsplit(res.location)[2] == '/u/chris/'
-            assert 'mediagoblin/user_pages/user.html' in template.TEMPLATE_TEST_CONTEXT
+            assert 'mediagoblin/user_pages/user_nonactive.html' in template.TEMPLATE_TEST_CONTEXT
 
             # No need to test if user is in logged in and verification email
             # awaits, since openid uses the register_user function which is
@@ -186,8 +192,8 @@ class TestOpenIDPlugin(object):
             openid_plugin_app.get('/auth/logout')
 
             # Get user and detach from session
-            test_user = mg_globals.database.User.find_one({
-                'username': u'chris'})
+            test_user = mg_globals.database.User.query.filter_by(
+                username=u'chris').first()
             Session.expunge(test_user)
 
             # Log back in
@@ -204,7 +210,7 @@ class TestOpenIDPlugin(object):
             # Make sure user is in the session
             context = template.TEMPLATE_TEST_CONTEXT['mediagoblin/root.html']
             session = context['request'].session
-            assert session['user_id'] == unicode(test_user.id)
+            assert session['user_id'] == six.text_type(test_user.id)
 
         _test_new_user()
 
@@ -236,7 +242,7 @@ class TestOpenIDPlugin(object):
     def test_add_delete(self, openid_plugin_app):
         """Test adding and deleting openids"""
         # Add user
-        test_user = fixture_add_user(password='')
+        test_user = fixture_add_user(password='', privileges=[u'active'])
         openid = OpenIDUserURL()
         openid.openid_url = 'http://real.myopenid.com'
         openid.user_id = test_user.id
@@ -314,8 +320,8 @@ class TestOpenIDPlugin(object):
             assert 'mediagoblin/edit/edit_account.html' in template.TEMPLATE_TEST_CONTEXT
 
             # OpenID Added?
-            new_openid = mg_globals.database.OpenIDUserURL.find_one(
-                {'openid_url': u'http://add.myopenid.com'})
+            new_openid = mg_globals.database.OpenIDUserURL.query.filter_by(
+                openid_url=u'http://add.myopenid.com').first()
             assert new_openid
 
         _test_add()
@@ -365,8 +371,8 @@ class TestOpenIDPlugin(object):
             assert 'mediagoblin/edit/edit_account.html' in template.TEMPLATE_TEST_CONTEXT
 
             # OpenID deleted?
-            new_openid = mg_globals.database.OpenIDUserURL.find_one(
-                {'openid_url': u'http://add.myopenid.com'})
+            new_openid = mg_globals.database.OpenIDUserURL.query.filter_by(
+                openid_url=u'http://add.myopenid.com').first()
             assert not new_openid
 
         _test_delete(self, test_user)