-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_tasks.py
More file actions
133 lines (115 loc) · 5.52 KB
/
test_tasks.py
File metadata and controls
133 lines (115 loc) · 5.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import os
import unittest
from views import app, db
from _config import basedir
import test.helper_functions as helper
TEST_DB = 'test.db'
class TaskTests(unittest.TestCase):
# executed prior to each test
def setUp(self):
app.config['TESTING'] = True
app.config['WTF_CSRF_ENABLED'] = False
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + \
os.path.join(basedir, TEST_DB)
self.app = app.test_client()
db.create_all()
# executed after each test
def tearDown(self):
db.session.remove()
db.drop_all()
def test_logged_in_users_can_access_tasks_page(self):
helper.register(self, 'Fletcher', 'fletcher@realpython.com',
'python101', 'python101')
helper.login(self, 'Fletcher', 'python101')
response = self.app.get('tasks/')
self.assertEqual(response.status_code, 200)
self.assertIn(b'Add a new task:', response.data)
def test_not_logged_in_users_cannot_access_tasks_page(self):
response = self.app.get('tasks/', follow_redirects=True)
self.assertIn(b'You need to login first.', response.data)
def test_users_can_add_tasks(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
response = helper.create_task(self)
self.assertIn(
b'New entry was successfully posted. Thanks.', response.data
)
def test_users_cannot_add_tasks_with_invalid_data(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
response = self.app.post('add/', data=dict(
name='Go to the bank',
due_date='',
priority='1',
posted_date='02/05/2014',
status='1'
), follow_redirects=True)
self.assertIn(b'This field is required.', response.data)
def test_users_can_delete_tasks(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
helper.create_task(self)
response = self.app.get("delete/1/", follow_redirects=True)
self.assertIn(b'The task was deleted.', response.data)
def test_users_can_complete_tasks(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
helper.create_task(self)
response = self.app.get("complete/1/", follow_redirects=True)
self.assertIn(b'The task is complete. Nice.', response.data)
def test_users_cannot_complete_tasks_that_are_not_created_by_them(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
helper.create_task(self)
helper.logout(self)
helper.create_user(self, 'Fletcher', 'fletcher@realpython.com', 'python101')
helper.login(self, 'Fletcher', 'python101')
self.app.get('tasks/', follow_redirects=True)
response = self.app.get("complete/1/", follow_redirects=True)
self.assertNotIn(
b'The task is complete. Nice.', response.data)
self.assertIn(
b'You can only update tasks that belong to you.', response.data)
def test_users_cannot_delete_tasks_that_are_not_created_by_them(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
helper.create_task(self)
helper.logout(self)
helper.create_user(self, 'Fletcher', 'fletcher@realpython.com', 'python101')
helper.login(self, 'Fletcher', 'python101')
self.app.get('tasks/', follow_redirects=True)
response = self.app.get("delete/1/", follow_redirects=True)
self.assertIn(
b'You can only delete tasks that belong to you.', response.data)
def test_admin_users_can_complete_tasks_that_are_not_created_by_them(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
helper.create_task(self)
helper.logout(self)
helper.create_admin_user(self)
helper.login(self, 'Superman', 'allpowerful')
self.app.get('tasks/', follow_redirects=True)
response = self.app.get("complete/1/", follow_redirects=True)
self.assertNotIn(
'You can only update tasks that belong to you.', response.data)
def test_admin_users_can_delete_tasks_that_are_not_created_by_them(self):
helper.create_user(self, 'Michael', 'michael@realpython.com', 'python')
helper.login(self, 'Michael', 'python')
self.app.get('tasks/', follow_redirects=True)
helper.create_task(self)
helper.logout(self)
helper.create_admin_user(self)
helper.login(self, 'Superman', 'allpowerful')
self.app.get('tasks/', follow_redirects=True)
response = self.app.get("delete/1/", follow_redirects=True)
self.assertNotIn(
'You can only delete tasks that belong to you.', response.data)
if __name__ == "__main__":
unittest.main()