about summary refs log tree commit diff
path: root/wqflask/tests
diff options
context:
space:
mode:
authorMuriithi Frederick Muriuki2018-02-13 18:32:18 +0300
committerPjotr Prins2018-03-26 09:29:29 +0000
commit11577cd84db5d7cc9cf10c2178d1f782a9809260 (patch)
treeaf7dd303cc7fd3203c36eea31d75c843e1aa734c /wqflask/tests
parentc68cffc414ac6d7536db36e79914f7d57af741c6 (diff)
downloadgenenetwork2-11577cd84db5d7cc9cf10c2178d1f782a9809260.tar.gz
Add tests for Registration process.
Diffstat (limited to 'wqflask/tests')
-rw-r--r--wqflask/tests/__init__.py0
-rw-r--r--wqflask/tests/es_double.py30
-rw-r--r--wqflask/tests/test_registration.py113
3 files changed, 143 insertions, 0 deletions
diff --git a/wqflask/tests/__init__.py b/wqflask/tests/__init__.py
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/wqflask/tests/__init__.py
diff --git a/wqflask/tests/es_double.py b/wqflask/tests/es_double.py
new file mode 100644
index 00000000..00739016
--- /dev/null
+++ b/wqflask/tests/es_double.py
@@ -0,0 +1,30 @@
+class ESDouble(object):
+    def __init__(self):
+        self.items = {
+            "users": {
+                "local": []
+            }}
+
+    def ping(self):
+        return true
+
+    def create(self, index, doc_type, body, id):
+        item = {"id": id, "_source": body}
+        if not self.items.get("index", None):
+            self.items[index] = {doc_type: [item]}
+        else:
+            self.items[index][doc_type].append(item)
+
+    def search(self, index, doc_type, body):
+        d = body["query"]["match"]
+        column = [(key, d[key]) for key in d]
+
+        items = []
+        for thing in self.items[index][doc_type]:
+            if thing["_source"][column[0][0]] == column[0][1]:
+                items.append(thing)
+                break
+        return {
+            "hits": {
+                "hits": items
+            }}
diff --git a/wqflask/tests/test_registration.py b/wqflask/tests/test_registration.py
new file mode 100644
index 00000000..50a2a84c
--- /dev/null
+++ b/wqflask/tests/test_registration.py
@@ -0,0 +1,113 @@
+import unittest
+import es_double
+import wqflask.user_manager
+from wqflask.user_manager import RegisterUser
+
+class TestRegisterUser(unittest.TestCase):
+    def setUp(self):
+        # Mock elasticsearch
+        self.es = es_double.ESDouble()
+
+        # Patch method
+        wqflask.user_manager.basic_info = lambda : {"basic_info": "some info"}
+
+    def tearDown(self):
+        self.es = None
+
+    def testRegisterUserWithNoData(self):
+        data = {}
+        result = RegisterUser(data)
+        self.assertNotEqual(len(result.errors), 0, "Data was not provided. Error was expected")
+
+    def testRegisterUserWithNoEmail(self):
+        data = {
+            "email_address": ""
+            , "full_name": "A.N. Other"
+            , "organization": "Some Organisation"
+            , "password": "testing"
+            , "password_confirm": "testing"
+            , "es_connection": self.es
+        }
+
+        result = RegisterUser(data)
+        self.assertNotEqual(len(result.errors), 0, "Email not provided. Error was expected")
+
+    def testRegisterUserWithNoName(self):
+        data = {
+            "email_address": "user@example.com"
+            , "full_name": ""
+            , "organization": "Some Organisation"
+            , "password": "testing"
+            , "password_confirm": "testing"
+            , "es_connection": self.es
+        }
+
+        result = RegisterUser(data)
+        self.assertNotEqual(len(result.errors), 0, "Name not provided. Error was expected")
+
+    def testRegisterUserWithNoOrganisation(self):
+        data = {
+            "email_address": "user@example.com"
+            , "full_name": "A.N. Other"
+            , "organization": ""
+            , "password": "testing"
+            , "password_confirm": "testing"
+            , "es_connection": self.es
+        }
+        
+        result = RegisterUser(data)
+        self.assertEqual(len(result.errors), 0, "Organisation not provided. Error not expected")
+
+    def testRegisterUserWithShortOrganisation(self):
+        data = {
+            "email_address": "user@example.com"
+            , "full_name": "A.N. Other"
+            , "organization": "SO"
+            , "password": "testing"
+            , "password_confirm": "testing"
+            , "es_connection": self.es
+        }
+        
+        result = RegisterUser(data)
+        self.assertNotEqual(len(result.errors), 0, "Organisation name too short. Error expected")
+
+    def testRegisterUserWithNoPassword(self):
+        data = {
+            "email_address": "user@example.com"
+            , "full_name": "A.N. Other"
+            , "organization": "Some Organisation"
+            , "password": None
+            , "password_confirm": None
+            , "es_connection": self.es
+        }
+
+        result = RegisterUser(data)
+        self.assertNotEqual(len(result.errors), 0, "Password not provided. Error was expected")
+
+    def testRegisterUserWithNonMatchingPasswords(self):
+        data = {
+            "email_address": "user@example.com"
+            , "full_name": "A.N. Other"
+            , "organization": "Some Organisation"
+            , "password": "testing"
+            , "password_confirm": "stilltesting"
+            , "es_connection": self.es
+        }
+
+        result = RegisterUser(data)
+        self.assertNotEqual(len(result.errors), 0, "Password mismatch. Error was expected")
+
+    def testRegisterUserWithCorrectData(self):
+        data = {
+            "email_address": "user@example.com"
+            , "full_name": "A.N. Other"
+            , "organization": "Some Organisation"
+            , "password": "testing"
+            , "password_confirm": "testing"
+            , "es_connection": self.es
+        }
+        result = RegisterUser(data)
+        self.assertEqual(len(result.errors), 0, "All data items provided. Errors were not expected")
+
+if __name__ == "__main__":
+    unittest.main()