diff --git a/tests/test_pagure_flask_ui_login.py b/tests/test_pagure_flask_ui_login.py
index d371d11..046308c 100644
--- a/tests/test_pagure_flask_ui_login.py
+++ b/tests/test_pagure_flask_ui_login.py
@@ -316,6 +316,101 @@ class PagureFlaskLogintests(tests.SimplePagureTest):
'href="/logout/?next=http://localhost/">', output_text)
@patch.dict('pagure.config.config', {'PAGURE_AUTH': 'local'})
+ @patch.dict('pagure.config.config', {'CHECK_SESSION_IP': False})
+ def test_do_login_and_redirect(self):
+ """ Test the do_login endpoint with a non-default redirect. """
+ # This has all the data needed
+ data = {
+ 'username': 'foouser',
+ 'password': 'barpass',
+ 'csrf_token': self.get_csrf(url='/login/'),
+ 'next_url': 'http://localhost/test/',
+ }
+
+ # Create a local user
+ self.test_new_user()
+ self.session.commit()
+
+ # Confirm the user so that we can log in
+ item = pagure.lib.search_user(self.session, username='foouser')
+ self.assertEqual(item.user, 'foouser')
+ self.assertNotEqual(item.token, None)
+
+ # Remove the token
+ item.token = None
+ self.session.add(item)
+ self.session.commit()
+
+ # Check the user
+ item = pagure.lib.search_user(self.session, username='foouser')
+ self.assertEqual(item.user, 'foouser')
+ self.assertEqual(item.token, None)
+
+ # Add a test project to the user
+ tests.create_projects(self.session)
+ tests.create_projects_git(os.path.join(self.path, 'repos'))
+ output = self.app.get('/test')
+ output_text = output.get_data(as_text=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ '
Overview - test - Pagure', output_text)
+
+ # Login and redirect to the test project
+ output = self.app.post(
+ '/dologin', data=data, follow_redirects=True,
+ environ_base={'REMOTE_ADDR': '127.0.0.1'})
+ self.assertEqual(output.status_code, 200)
+ output_text = output.get_data(as_text=True)
+ self.assertIn(
+ 'Overview - test - Pagure', output_text)
+ self.assertIn(
+ '', output_text)
+ self.assertIn(
+ 'Settings', output_text)
+
+ @patch.dict('pagure.config.config', {'PAGURE_AUTH': 'local'})
+ @patch.dict('pagure.config.config', {'CHECK_SESSION_IP': False})
+ def test_has_settings(self):
+ """ Test that user can see the Settings button when they are logged
+ in. """
+ # Create a local user
+ self.test_new_user()
+ self.session.commit()
+
+ # Remove the token
+ item = pagure.lib.search_user(self.session, username='foouser')
+ item.token = None
+ self.session.add(item)
+ self.session.commit()
+
+ # Check the user
+ item = pagure.lib.search_user(self.session, username='foouser')
+ self.assertEqual(item.user, 'foouser')
+ self.assertEqual(item.token, None)
+
+ # Add a test project to the user
+ tests.create_projects(self.session)
+ tests.create_projects_git(os.path.join(self.path, 'repos'))
+ output = self.app.get('/test')
+ output_text = output.get_data(as_text=True)
+ self.assertEqual(output.status_code, 200)
+ self.assertIn(
+ 'Overview - test - Pagure', output_text)
+
+ # Login and redirect to the test project
+ user = tests.FakeUser(username='pingou')
+ with tests.user_set(self.app.application, user):
+ output = self.app.get('/test')
+ self.assertEqual(output.status_code, 200)
+ output_text = output.get_data(as_text=True)
+ self.assertIn(
+ 'Overview - test - Pagure', output_text)
+ self.assertIn(
+ 'Settings',
+ output_text)
+
+ @patch.dict('pagure.config.config', {'PAGURE_AUTH': 'local'})
@patch('pagure.lib.notify.send_email', MagicMock(return_value=True))
def test_non_ascii_password(self):
""" Test login and create user functionality when the password is
@@ -803,7 +898,6 @@ class PagureFlaskLogintests(tests.SimplePagureTest):
g.fas_user = user
self.assertFalse(pagure.flask_app.admin_session_timedout())
-
@patch.dict('pagure.config.config', {'PAGURE_AUTH': 'local'})
def test_force_logout(self):
""" Test forcing logout. """