]> WPIA git - motion.git/blob - tests/test_db_changes.py
add: adjust user handling per host
[motion.git] / tests / test_db_changes.py
1 import motion
2 from motion import app
3 from motion import init_db
4 from tests.test_basics import BasicTest
5
6
7 class DatabaseTests(BasicTest):
8     def setUp(self):
9         global user
10         user = 'testuser/'
11
12     def tearDown(self):
13         pass
14
15     def test_V5(self):
16         with self.open_DB() as db:
17             with app.open_resource('tests/sql/schema_test_v5.sql', mode='r') as f:
18                 db.execute(f.read())
19             with app.open_resource('tests/sql/sample_data_test_v4.sql', mode='r') as f:
20                 db.execute(f.read())
21
22             init_db()
23     
24             ver = db.prepare("SELECT version FROM schema_version")()[0][0]
25             self.assertGreaterEqual(ver,6)
26     
27             # test motion 1
28             motion_id=1
29             host=app.config.get("DEFAULT_HOST")
30             aid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User A", host)[0][0]
31             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, aid)
32             self.assertEqual(rn[0].get("result"),"yes")
33             self.assertEqual(rn[0].get("proxy_id"),aid)
34
35             bid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User B", host)[0][0]
36             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, bid)
37             self.assertEqual(rn[0].get("result"),"yes")
38             self.assertEqual(rn[0].get("proxy_id"),bid)
39             # proxy vote where proxy voted herself too
40             cid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User C", host)[0][0]
41             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, cid)
42             self.assertEqual(rn[0].get("result"),"no")
43             self.assertEqual(rn[0].get("proxy_id"),bid)
44
45             # test motion 3
46             motion_id=3
47             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, cid)
48             self.assertEqual(rn[0].get("result"),"yes")
49             self.assertEqual(rn[0].get("proxy_id"),cid)
50
51             # test motion 4 and proxy vote where proxy did not vote herself
52             motion_id=4
53             eid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User E", host)[0][0]
54             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, aid)
55             self.assertEqual(rn[0].get("result"),"yes")
56             self.assertEqual(rn[0].get("proxy_id"),eid)
57
58             # test motion 2
59             motion_id=2
60             host='127.0.0.1:5001'
61             aid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User A", host)[0][0]
62             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, aid)
63             self.assertEqual(rn[0].get("result"),"yes")
64             self.assertEqual(rn[0].get("proxy_id"),aid)
65
66             bid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User B", host)[0][0]
67             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, bid)
68             self.assertEqual(rn[0].get("result"),"no")
69             self.assertEqual(rn[0].get("proxy_id"),bid)
70
71             cid=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User C", host)[0][0]
72             rn=db.prepare("SELECT * FROM vote WHERE motion_id=$1 AND voter_id=$2")(motion_id, cid)
73             self.assertEqual(rn[0].get("result"),"no")
74             self.assertEqual(rn[0].get("proxy_id"),cid)
75
76             # User E not in host '127.0.0.1:5001'
77             rn=db.prepare("SELECT id FROM voter WHERE email=$1 AND host=$2")("User E", host)
78             self.assertEqual(len(rn),0)
79
80             # deleted User D
81             rn=db.prepare("SELECT id FROM voter WHERE email=$1")("User D")
82             self.assertEqual(len(rn),0)