forked from gergely/calendar-social
Gergely Polonkai
48a19a2296
Move the `client` fixture to the helpers module, as it will be used by many other test cases. Add the AGPL header to the test files.
125 lines
3.5 KiB
Python
125 lines
3.5 KiB
Python
# Calendar.social
|
|
# Copyright (C) 2018 Gergely Polonkai
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU Affero General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU Affero General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU Affero General Public License
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
"""General tests for Calendar.social
|
|
"""
|
|
|
|
import calsocial
|
|
from calsocial.models import db, User
|
|
|
|
from helpers import client
|
|
|
|
|
|
def test_index_no_login(client):
|
|
"""Test the main page without logging in
|
|
"""
|
|
|
|
page = client.get('/')
|
|
assert b'Welcome to Calendar.social' in page.data
|
|
|
|
|
|
def test_register_page(client):
|
|
"""Test the registration page
|
|
"""
|
|
|
|
page = client.get('/register')
|
|
assert b'Register</button>' in page.data
|
|
|
|
def test_register_post_empty(client):
|
|
"""Test sending empty registration data
|
|
"""
|
|
|
|
page = client.post('/register', data={})
|
|
assert b'This field is required' in page.data
|
|
|
|
def test_register_invalid_email(client):
|
|
"""Test sending an invalid email address
|
|
"""
|
|
|
|
page = client.post('/register', data={
|
|
'username': 'test',
|
|
'email': 'test',
|
|
'password': 'password',
|
|
'password_retype': 'password',
|
|
})
|
|
assert b'Invalid email address' in page.data
|
|
|
|
def test_register_password_mismatch(client):
|
|
"""Test sending different password for registration
|
|
"""
|
|
|
|
page = client.post('/register', data={
|
|
'username': 'test',
|
|
'email': 'test@example.com',
|
|
'password': 'password',
|
|
'password_retype': 'something',
|
|
})
|
|
assert b'The two passwords must match' in page.data
|
|
|
|
def test_register(client):
|
|
"""Test user registration
|
|
"""
|
|
|
|
page = client.post('/register', data={
|
|
'username': 'test',
|
|
'email': 'test@example.com',
|
|
'password': 'password',
|
|
'password_retype': 'password',
|
|
})
|
|
print(page.data)
|
|
assert page.status_code == 302
|
|
assert page.location == 'http://localhost/'
|
|
|
|
with calsocial.app.app_context():
|
|
user = User.query.one()
|
|
|
|
assert user.username == 'test'
|
|
assert user.email == 'test@example.com'
|
|
|
|
def test_register_existing_username(client):
|
|
"""Test registering an existing username
|
|
"""
|
|
|
|
with calsocial.app.app_context():
|
|
user = User(username='test', email='test@example.com')
|
|
db.session.add(user)
|
|
db.session.commit()
|
|
|
|
page = client.post('/register', data={
|
|
'username': 'test',
|
|
'email': 'test2@example.com',
|
|
'password': 'password',
|
|
'password_retype': 'password',
|
|
})
|
|
assert b'This username is not available' in page.data
|
|
|
|
def test_register_existing_email(client):
|
|
"""Test registering an existing email address
|
|
"""
|
|
|
|
with calsocial.app.app_context():
|
|
user = User(username='test', email='test@example.com')
|
|
db.session.add(user)
|
|
db.session.commit()
|
|
|
|
page = client.post('/register', data={
|
|
'username': 'tester',
|
|
'email': 'test@example.com',
|
|
'password': 'password',
|
|
'password_retype': 'password',
|
|
})
|
|
assert b'This email address can not be used' in page.data
|