generated from Code-Institute-Org/gitpod-full-template
-
Notifications
You must be signed in to change notification settings - Fork 1
/
workout_tests.py
156 lines (125 loc) · 5.35 KB
/
workout_tests.py
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
from workout import app
from flask_testing import TestCase
from user import User
from flask_login import current_user, LoginManager, login_user
from werkzeug.security import generate_password_hash
import unittest
class MyTest(TestCase):
def create_app(self):
app.config['TESTING'] = True
app.config['MONGO_URI'] = 'mongodb://'
return app
def setUp(self):
self.client = app.test_client()
pass
def tearDown(self):
pass
# Tests if pages load correctly - user not authenticated
def test_loading_index(self):
response = self.client.get('/', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed('index.html')
def test_loading_register(self):
response = self.client.get('/register', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed('register.html')
def test_loading_login(self):
response = self.client.get('/login', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed('login.html')
def test_loading_logout(self):
response = self.client.get('/logout', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed('login.html')
def test_loading_groups(self):
response = self.client.get('/muscle_groups', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed('login.html')
def test_loading_category(self):
response = self.client.get('/<category>', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed('login.html')
def test_loading_my_exercises(self):
response = self.client.get('/my_exercises', follow_redirects=True)
self.assertEqual(response.status_code, 200)
self.assertTemplateUsed('login.html')
# Test Registration Form
def test_username_too_short(self):
"""
Test if error message gets displayed
when username provided by user is too short
"""
response = self.client.post('/register',
data=dict(username='ab',
password='abcde',
password2='abcde',
))
data = response.data.decode('utf-8')
assert 'Field must be between 3 and 25 characters long' in data
def test_password_too_short(self):
"""
Test if error message gets displayed
when password provided by user is too short
"""
response = self.client.post('/register',
data=dict(username='abcde',
password='abc',
password2='abc',
))
data = response.data.decode('utf-8')
assert 'Field must be between 5 and 50 characters long' in data
def test_password_repeated(self):
"""
Test if error message gets displayed
when password is repeated incorrectly
"""
response = self.client.post('/register',
data=dict(username='abcde',
password='abc',
password2='xyz',
))
data = response.data.decode('utf-8')
assert 'Field must be equal to password' in data
# Test Login Form
def test_no_username(self):
"""
Test if error message gets displayed
when no username is provided by user at login
"""
response = self.client.post('/login',
data=dict(username='',
password='abcde'
))
data = response.data.decode('utf-8')
assert 'Please enter a valid username' in data
def test_no_password(self):
"""
Test if error message gets displayed
when no password is provided by user at login
"""
response = self.client.post('/login',
data=dict(username='abcde',
password=''
))
data = response.data.decode('utf-8')
assert 'Please enter your password' in data
# Test Password Hashing
def test_password_hashing(self):
u = User(username='abcde')
password_hash = generate_password_hash('abcde')
self.assertFalse(u.check_password(password_hash, 'vwxyz'))
self.assertTrue(u.check_password(password_hash, 'abcde'))
# Test Example Login
def test_login(self):
login_manager = LoginManager()
login_manager.init_app(app)
with app.test_request_context():
# create and log in user
currentUser = User(username='abcde')
login_user(currentUser)
# test that user was logged in
assert current_user.is_active
assert current_user.is_authenticated
assert current_user == currentUser
if __name__ == '__main__':
unittest.main()