]> WPIA git - motion.git/blobdiff - tests/test_db_changes.py
add: adjust user handling per host
[motion.git] / tests / test_db_changes.py
diff --git a/tests/test_db_changes.py b/tests/test_db_changes.py
new file mode 100644 (file)
index 0000000..e39e5a9
--- /dev/null
@@ -0,0 +1,82 @@
+import motion
+from motion import app
+from motion import init_db
+from tests.test_basics import BasicTest
+
+
+class DatabaseTests(BasicTest):
+    def setUp(self):
+        global user
+        user = 'testuser/'
+
+    def tearDown(self):
+        pass
+
+    def test_V5(self):
+        with self.open_DB() as db:
+            with app.open_resource('tests/sql/schema_test_v5.sql', mode='r') as f:
+                db.execute(f.read())
+            with app.open_resource('tests/sql/sample_data_test_v4.sql', mode='r') as f:
+                db.execute(f.read())
+
+            init_db()
+    
+            ver = db.prepare("SELECT version FROM schema_version")()[0][0]
+            self.assertGreaterEqual(ver,6)
+    
+            # test motion 1
+            motion_id=1
+            host=app.config.get("DEFAULT_HOST")
+            aid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User A", host)[0][0]
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, aid)
+            self.assertEqual(rn[0].get("result"),"yes")
+            self.assertEqual(rn[0].get("proxy_id"),aid)
+
+            bid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User B", host)[0][0]
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, bid)
+            self.assertEqual(rn[0].get("result"),"yes")
+            self.assertEqual(rn[0].get("proxy_id"),bid)
+            # proxy vote where proxy voted herself too
+            cid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User C", host)[0][0]
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, cid)
+            self.assertEqual(rn[0].get("result"),"no")
+            self.assertEqual(rn[0].get("proxy_id"),bid)
+
+            # test motion 3
+            motion_id=3
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, cid)
+            self.assertEqual(rn[0].get("result"),"yes")
+            self.assertEqual(rn[0].get("proxy_id"),cid)
+
+            # test motion 4 and proxy vote where proxy did not vote herself
+            motion_id=4
+            eid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User E", host)[0][0]
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, aid)
+            self.assertEqual(rn[0].get("result"),"yes")
+            self.assertEqual(rn[0].get("proxy_id"),eid)
+
+            # test motion 2
+            motion_id=2
+            host='127.0.0.1:5001'
+            aid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User A", host)[0][0]
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, aid)
+            self.assertEqual(rn[0].get("result"),"yes")
+            self.assertEqual(rn[0].get("proxy_id"),aid)
+
+            bid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User B", host)[0][0]
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, bid)
+            self.assertEqual(rn[0].get("result"),"no")
+            self.assertEqual(rn[0].get("proxy_id"),bid)
+
+            cid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User C", host)[0][0]
+            rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, cid)
+            self.assertEqual(rn[0].get("result"),"no")
+            self.assertEqual(rn[0].get("proxy_id"),cid)
+
+            # User E not in host '127.0.0.1:5001'
+            rn=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User E", host)
+            self.assertEqual(len(rn),0)
+
+            # deleted User D
+            rn=db.prepare("SELECT id FROM voter WHERE email=$1")("User D")
+            self.assertEqual(len(rn),0)