From c84bd98971aa5839cb6aa999889a92071890f579 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki
Date: Mon, 19 Feb 2018 12:50:30 +0300
Subject: Add test for local login
* Add an integration test to test that the login process for users
registered locally to genenetwork2 works as expected.
---
test/requests/test_login_local.py | 56 +++++++++++++++++++++++++++++++++++++++
1 file changed, 56 insertions(+)
create mode 100644 test/requests/test_login_local.py
(limited to 'test/requests/test_login_local.py')
diff --git a/test/requests/test_login_local.py b/test/requests/test_login_local.py
new file mode 100644
index 00000000..bced1ee9
--- /dev/null
+++ b/test/requests/test_login_local.py
@@ -0,0 +1,56 @@
+import requests
+from wqflask import user_manager
+from parametrized_test import ParametrizedTest
+
+class TestLoginLocal(ParametrizedTest):
+
+ def setUp(self):
+ super(TestLoginLocal, self).setUp()
+ self.login_url = self.gn2_url +"/n/login"
+ data = {
+ "es_connection": self.es,
+ "email_address": "test@user.com",
+ "full_name": "Test User",
+ "organization": "Test Organisation",
+ "password": "test_password",
+ "password_confirm": "test_password"
+ }
+ user_manager.basic_info = lambda : { "basic_info": "basic" }
+ user_manager.RegisterUser(data)
+
+ def testLoginNonRegisteredUser(self):
+ data = {
+ "email_address": "non@existent.email",
+ "password": "doesitmatter?"
+ }
+ result = requests.post(self.login_url, data=data)
+ self.assertEqual(result.url, self.login_url, "")
+
+ def testLoginWithRegisteredUserBothRememberMeAndImportCollectionsFalse(self):
+ data = {
+ "email_address": "test@user.com",
+ "password": "test_password"
+ }
+ result = requests.post(self.login_url, data=data)
+ print("THE COOKIES? ", result.cookies)
+ self.assertEqual(
+ result.url
+ , self.gn2_url+"/?import_collections=false"
+ , "Login should have been successful")
+
+
+
+def main(gn2, es):
+ import unittest
+ suite = unittest.TestSuite()
+ suite.addTest(TestLoginLocal(methodName="testLoginNonRegisteredUser", gn2_url=gn2, es_url=es))
+ suite.addTest(TestLoginLocal(methodName="testLoginWithRegisteredUserBothRememberMeAndImportCollectionsFalse", gn2_url=gn2, es_url=es))
+ runner = unittest.TextTestRunner()
+ runner.run(suite)
+
+if __name__ == "__main__":
+ import sys
+ if len(sys.argv) < 3:
+ raise Exception("Required arguments missing")
+ else:
+ main(sys.argv[1], sys.argv[2])
--
cgit v1.2.3
From e4b7e72d83a6dba40a38c58e62e338bd257862ef Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki
Date: Mon, 19 Feb 2018 14:12:59 +0300
Subject: Add more login tests.
---
test/requests/test_login_local.py | 39 +++++++++++++++++++++++++++++++++++++--
wqflask/wqflask/user_manager.py | 2 --
2 files changed, 37 insertions(+), 4 deletions(-)
(limited to 'test/requests/test_login_local.py')
diff --git a/test/requests/test_login_local.py b/test/requests/test_login_local.py
index bced1ee9..acad45c9 100644
--- a/test/requests/test_login_local.py
+++ b/test/requests/test_login_local.py
@@ -32,12 +32,47 @@ class TestLoginLocal(ParametrizedTest):
"password": "test_password"
}
result = requests.post(self.login_url, data=data)
- print("THE COOKIES? ", result.cookies)
self.assertEqual(
result.url
, self.gn2_url+"/?import_collections=false"
, "Login should have been successful")
-
+
+ def testLoginWithRegisteredUserImportCollectionsTrueAndRememberMeFalse(self):
+ data = {
+ "email_address": "test@user.com",
+ "password": "test_password",
+ "import_collections": "y"
+ }
+ result = requests.post(self.login_url, data=data)
+ self.assertEqual(
+ result.url
+ , self.gn2_url+"/?import_collections=true"
+ , "Login should have been successful")
+
+ def testLoginWithRegisteredUserImportCollectionsFalseAndRememberMeTrue(self):
+ data = {
+ "email_address": "test@user.com",
+ "password": "test_password",
+ "remember_me": "y"
+ }
+ result = requests.post(self.login_url, data=data)
+ self.assertEqual(
+ result.url
+ , self.gn2_url+"/?import_collections=false"
+ , "Login should have been successful")
+
+ def testLoginWithRegisteredUserBothImportCollectionsAndRememberMeTrue(self):
+ data = {
+ "email_address": "test@user.com",
+ "password": "test_password",
+ "remember_me": "y",
+ "import_collections": "y"
+ }
+ result = requests.post(self.login_url, data=data)
+ self.assertEqual(
+ result.url
+ , self.gn2_url+"/?import_collections=true"
+ , "Login should have been successful")
def main(gn2, es):
diff --git a/wqflask/wqflask/user_manager.py b/wqflask/wqflask/user_manager.py
index c8471cb1..fd1d56ff 100644
--- a/wqflask/wqflask/user_manager.py
+++ b/wqflask/wqflask/user_manager.py
@@ -642,7 +642,6 @@ class LoginUser(object):
user = model.User();
for key in user_details:
user.__dict__[key] = user_details[key]
- print("RETRIEVED USER: ", user)
valid = False;
submitted_password = params['password']
@@ -689,7 +688,6 @@ class LoginUser(object):
"""The meat of the logging in process"""
session_id_signed = self.successful_login(user, assumed_by)
flash("Thank you for logging in {}.".format(user.full_name), "alert-success")
- print("IMPORT1:", import_collections)
response = make_response(redirect(url_for('index_page', import_collections=import_collections)))
if self.remember_me:
max_age = self.remember_time
--
cgit v1.2.3
From e1e3ea41578947e47b2f394e6e3ba4f45eceeb82 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki
Date: Wed, 21 Feb 2018 12:51:34 +0300
Subject: Simplify test. Check for content, rather than url
* The test functions were very similar, so this commit refactors out the
common test code to a single method, and passes in the data to the
test using the parameterized package.
* Check that the page content after a login attempt is the expected
content, rather than checking the url.
---
test/requests/test_login_local.py | 93 ++++++++++++++++-----------------------
1 file changed, 39 insertions(+), 54 deletions(-)
(limited to 'test/requests/test_login_local.py')
diff --git a/test/requests/test_login_local.py b/test/requests/test_login_local.py
index acad45c9..8e2dec4e 100644
--- a/test/requests/test_login_local.py
+++ b/test/requests/test_login_local.py
@@ -1,7 +1,11 @@
import requests
from wqflask import user_manager
+from parameterized import parameterized
from parametrized_test import ParametrizedTest
+login_link_text = 'Sign in'
+logout_link_text = 'Sign out'
+
class TestLoginLocal(ParametrizedTest):
def setUp(self):
@@ -18,61 +22,42 @@ class TestLoginLocal(ParametrizedTest):
user_manager.basic_info = lambda : { "basic_info": "basic" }
user_manager.RegisterUser(data)
- def testLoginNonRegisteredUser(self):
- data = {
- "email_address": "non@existent.email",
- "password": "doesitmatter?"
- }
- result = requests.post(self.login_url, data=data)
- self.assertEqual(result.url, self.login_url, "")
-
- def testLoginWithRegisteredUserBothRememberMeAndImportCollectionsFalse(self):
- data = {
- "email_address": "test@user.com",
- "password": "test_password"
- }
- result = requests.post(self.login_url, data=data)
- self.assertEqual(
- result.url
- , self.gn2_url+"/?import_collections=false"
- , "Login should have been successful")
-
- def testLoginWithRegisteredUserImportCollectionsTrueAndRememberMeFalse(self):
- data = {
- "email_address": "test@user.com",
- "password": "test_password",
- "import_collections": "y"
- }
- result = requests.post(self.login_url, data=data)
- self.assertEqual(
- result.url
- , self.gn2_url+"/?import_collections=true"
- , "Login should have been successful")
-
- def testLoginWithRegisteredUserImportCollectionsFalseAndRememberMeTrue(self):
- data = {
- "email_address": "test@user.com",
- "password": "test_password",
- "remember_me": "y"
- }
- result = requests.post(self.login_url, data=data)
- self.assertEqual(
- result.url
- , self.gn2_url+"/?import_collections=false"
- , "Login should have been successful")
-
- def testLoginWithRegisteredUserBothImportCollectionsAndRememberMeTrue(self):
- data = {
- "email_address": "test@user.com",
- "password": "test_password",
- "remember_me": "y",
- "import_collections": "y"
- }
+
+ @parameterized.expand([
+ (
+ {
+ "email_address": "non@existent.email",
+ "password": "doesitmatter?"
+ }, login_link_text, "Login should have failed with the wrong user details."),
+ (
+ {
+ "email_address": "test@user.com",
+ "password": "test_password"
+ }, logout_link_text, "Login should have been successful with correct user details and neither import_collections nor remember_me set"),
+ (
+ {
+ "email_address": "test@user.com",
+ "password": "test_password",
+ "import_collections": "y"
+ }, logout_link_text, "Login should have been successful with correct user details and only import_collections set"),
+ (
+ {
+ "email_address": "test@user.com",
+ "password": "test_password",
+ "remember_me": "y"
+ }, logout_link_text, "Login should have been successful with correct user details and only remember_me set"),
+ (
+ {
+ "email_address": "test@user.com",
+ "password": "test_password",
+ "remember_me": "y",
+ "import_collections": "y"
+ }, logout_link_text, "Login should have been successful with correct user details, and both remember_me, and import_collections set")
+ ])
+ def testLogin(self, data, expected, message):
result = requests.post(self.login_url, data=data)
- self.assertEqual(
- result.url
- , self.gn2_url+"/?import_collections=true"
- , "Login should have been successful")
+ index = result.content.find(expected)
+ self.assertTrue(index >= 0, message)
def main(gn2, es):
--
cgit v1.2.3
From e982d7223141d247954ab5b5c1ff9bbed907c603 Mon Sep 17 00:00:00 2001
From: Muriithi Frederick Muriuki
Date: Fri, 23 Feb 2018 17:24:55 +0300
Subject: Remove failing code
* With the parameterized module, the testcase cannot be run
independently at this time.
---
test/requests/test_login_local.py | 16 ----------------
1 file changed, 16 deletions(-)
(limited to 'test/requests/test_login_local.py')
diff --git a/test/requests/test_login_local.py b/test/requests/test_login_local.py
index 8e2dec4e..808649ca 100644
--- a/test/requests/test_login_local.py
+++ b/test/requests/test_login_local.py
@@ -58,19 +58,3 @@ class TestLoginLocal(ParametrizedTest):
result = requests.post(self.login_url, data=data)
index = result.content.find(expected)
self.assertTrue(index >= 0, message)
-
-
-def main(gn2, es):
- import unittest
- suite = unittest.TestSuite()
- suite.addTest(TestLoginLocal(methodName="testLoginNonRegisteredUser", gn2_url=gn2, es_url=es))
- suite.addTest(TestLoginLocal(methodName="testLoginWithRegisteredUserBothRememberMeAndImportCollectionsFalse", gn2_url=gn2, es_url=es))
- runner = unittest.TextTestRunner()
- runner.run(suite)
-
-if __name__ == "__main__":
- import sys
- if len(sys.argv) < 3:
- raise Exception("Required arguments missing")
- else:
- main(sys.argv[1], sys.argv[2])
--
cgit v1.2.3