mirror of
https://github.com/GSA/notifications-admin.git
synced 2026-02-05 10:53:28 -05:00
79 lines
3.0 KiB
Python
79 lines
3.0 KiB
Python
import pytest
|
|
from flask import url_for
|
|
|
|
from app.utils import user_has_permissions, validate_header_row, validate_recipient, InvalidHeaderError
|
|
from app.main.views.index import index
|
|
from werkzeug.exceptions import Forbidden
|
|
|
|
|
|
def test_user_has_permissions_on_endpoint_fail(app_,
|
|
api_user_active,
|
|
mock_login,
|
|
mock_get_user_with_permissions):
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
decorator = user_has_permissions('something')
|
|
decorated_index = decorator(index)
|
|
try:
|
|
response = decorated_index()
|
|
pytest.fail("Failed to throw a forbidden exception")
|
|
except Forbidden:
|
|
pass
|
|
|
|
|
|
def test_user_has_permissions_success(app_,
|
|
api_user_active,
|
|
mock_login,
|
|
mock_get_user_with_permissions):
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
decorator = user_has_permissions('manage_users')
|
|
decorated_index = decorator(index)
|
|
response = decorated_index()
|
|
|
|
|
|
def test_user_has_permissions_or(app_,
|
|
api_user_active,
|
|
mock_login,
|
|
mock_get_user_with_permissions):
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
decorator = user_has_permissions('something', 'manage_users', or_=True)
|
|
decorated_index = decorator(index)
|
|
response = decorated_index()
|
|
|
|
|
|
def test_user_has_permissions_multiple(app_,
|
|
api_user_active,
|
|
mock_login,
|
|
mock_get_user_with_permissions):
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
decorator = user_has_permissions('manage_templates', 'manage_users')
|
|
decorated_index = decorator(index)
|
|
response = decorated_index()
|
|
|
|
|
|
def test_exact_permissions(app_,
|
|
api_user_active,
|
|
mock_login,
|
|
mock_get_user_with_permissions):
|
|
with app_.test_request_context():
|
|
with app_.test_client() as client:
|
|
client.login(api_user_active)
|
|
decorator = user_has_permissions('manage_users', 'manage_templates', 'manage_settings')
|
|
decorated_index = decorator(index)
|
|
response = decorated_index()
|
|
|
|
|
|
def test_validate_header_row():
|
|
row = {'bad': '+44 7700 900981'}
|
|
try:
|
|
validate_header_row(row, 'sms')
|
|
except InvalidHeaderError as e:
|
|
assert e.message == 'Invalid header name, should be phone number'
|