3
'''py.test test cases to test OpenStudio.
5
These tests run based on webclient and need web2py server running.
8
from gluon.contrib.populate import populate
10
def test_users_index(client, web2py):
12
Is the index page showing?
14
url = '/preferences/users'
16
assert client.status == 200
17
assert 'OpenStudio users' in client.text
19
def test_user_add(client, web2py):
23
url = '/preferences/user_add'
25
assert client.status == 200
26
assert 'New user' in client.text
28
data = dict(first_name='Edwin',
29
last_name='van de Ven',
30
email='edwin@openstudioproject.com',
31
password='super_secret')
32
client.post(url, data=data)
33
assert client.status == 200
34
assert 'OpenStudio users' in client.text # verify redirection
35
assert data['first_name'] in client.text
37
assert web2py.db(web2py.db.auth_user).count() == 2
39
# check if group gets created and user becomes a member of this group
41
group_id = web2py.auth.user_group(user_id)
42
assert not group_id is None # see if a group was created
43
assert web2py.auth.has_membership(group_id, user_id) # see if the created user is a member of the created group
45
def test_user_edit(client, web2py):
49
populate(web2py.db.auth_user, 1)
50
assert web2py.db(web2py.db.auth_user).count() == 1
52
url = '/preferences/user_edit/1'
54
assert client.status == 200
55
assert 'Edit user' in client.text
57
data = dict(first_name='Edwin',
58
last_name='van de Ven',
59
email='edwin@openstudioproject.com',
60
password='super_secret')
61
client.post(url, data=data)
62
assert client.status == 200
63
assert 'OpenStudio users' in client.text # verify redirection
64
assert data['first_name'] in client.text
66
assert web2py.db(web2py.db.auth_user).count() > 1
68
def test_paymentcategories_index(client, web2py):
70
Is the index page showing?
72
url = '/preferences/paymentcategories'
74
assert client.status == 200
75
assert 'Payment categories' in client.text
77
def test_paymentcategories_add(client, web2py):
79
Can we add a payment category?
81
url = '/preferences/paymentcategory_add'
83
assert client.status == 200
84
assert 'New payment category' in client.text
86
data = dict(Name='Invoices',
88
client.post(url, data=data)
89
assert client.status == 200
90
assert 'Payment categories' in client.text # verify redirection
91
assert data['Name'] in client.text
93
assert web2py.db(web2py.db.paymentcategories).count() == 1
95
def test_paymentcategories_edit(client, web2py):
97
Can we edit a payment category?
99
populate(web2py.db.paymentcategories, 1)
100
assert web2py.db(web2py.db.paymentcategories).count() == 1
102
url = '/preferences/paymentcategory_edit/1'
104
assert client.status == 200
105
assert 'Edit payment category' in client.text
107
data = dict(Name='Invoices',
109
client.post(url, data=data)
110
assert client.status == 200
111
assert 'Payment categories' in client.text # verify redirection
112
assert data['Name'] in client.text
114
assert web2py.db(web2py.db.paymentcategories).count() > 0
116
def test_api_users_index(client, web2py):
118
Can we list the API users?
120
web2py.db.sys_api_users.insert(ActiveUser=True,
121
Username='magicdesign',
123
Description='magic design user')
126
url = '/preferences/api_users'
128
assert client.status == 200
129
assert 'API users' in client.text
130
assert 'magicdesign' in client.text
132
def test_api_user(client, web2py):
134
Can we add an api user?
136
url = '/preferences/api_user_add'
138
assert client.status == 200
139
assert 'New API user' in client.text
141
data = dict(Username='magicdesign',
142
Description='Magic design user')
143
client.post(url, data=data)
144
assert client.status == 200
145
assert 'API users' in client.text # verify redirection
146
assert data['Username'] in client.text
148
assert web2py.db(web2py.db.sys_api_users).count() == 1
150
# check whether a key was generated
151
api_key = web2py.db.sys_api_users(1).APIKey
152
assert api_key != '' and not api_key is None
154
## check whether a new key can be generated
155
url = '/preferences/api_user_generate_new_key/1'
157
assert client.status == 200
159
assert 'API users' in client.text
160
# check whether a new key was generated
161
api_new_key = web2py.db.sys_api_users(1).APIKey
162
assert api_key != api_new_key
164
## check whether deactivating and activating again works
165
# check current state (should be active by default)
166
assert web2py.db.sys_api_users(1).ActiveUser == True
168
url='/preferences/api_user_change_active_state/1'
170
assert client.status == 200
171
assert 'API users' in client.text
172
assert web2py.db.sys_api_users(1).ActiveUser == False
173
# change the state back
174
url='/preferences/api_user_change_active_state/1'
176
assert client.status == 200
177
assert 'API users' in client.text
178
assert web2py.db.sys_api_users(1).ActiveUser == True