Files
2025-05-20 11:57:43 -04:00

76 lines
1.8 KiB
Python

import pytest
from flask import url_for
def assert_status_with_message(status_code=200, response=None, message=None):
"""
Check to see if a message is contained within a response.
:param status_code: Status code that defaults to 200
:type status_code: int
:param response: Flask response
:type response: str
:param message: String to check for
:type message: str
:return: None
"""
assert response.status_code == status_code
assert message in str(response.data)
class ViewTestMixin(object):
"""
Automatically load in a session and client, this is common for a lot of
tests that work with views.
"""
@pytest.fixture(autouse=True)
def set_common_fixtures(self, session, client):
self.session = session
self.client = client
def login(self, identity='admin@local.host', password='password'):
"""
Login a specific user.
:return: Flask response
"""
return login(self.client, identity, password)
def logout(self):
"""
Logout a specific user.
:return: Flask response
"""
return logout(self.client)
def login(client, username='', password=''):
"""
Log a specific user in.
:param client: Flask client
:param username: The username
:type username: str
:param password: The password
:type password: str
:return: Flask response
"""
user = dict(identity=username, password=password)
response = client.post(url_for('user.login'), data=user,
follow_redirects=True)
return response
def logout(client):
"""
Log a specific user out.
:param client: Flask client
:return: Flask response
"""
return client.get(url_for('user.logout'), follow_redirects=True)