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
committerMuriithi Frederick Muriuki2018-02-13 18:32:18 +0300
commit1defefd05d0eb658fb5922fc755547261a5e914a (patch)
treecef41b465f9503f17714b586704104c42f1e9538 /wqflask/tests
parent1d45fac66b19340ed9378fcc08a928555ad95f74 (diff)
downloadgenenetwork2-1defefd05d0eb658fb5922fc755547261a5e914a.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()