import datetime import pytest from data import model from endpoints.api import api from endpoints.api.superuser import SuperUserRepositoryBuildLogs, SuperUserRepositoryBuildResource from endpoints.api.superuser import SuperUserRepositoryBuildStatus from endpoints.test.fixtures import app, appconfig, database_uri, init_db_path, sqlitedb_file def client_with_identity(auth_username, client): with client.session_transaction() as sess: if auth_username: if auth_username is not None: loaded = model.user.get_user(auth_username) sess['user_id'] = loaded.uuid sess['login_time'] = datetime.datetime.now() return client @pytest.mark.parametrize('resource,identity,expected', [ (SuperUserRepositoryBuildLogs, None, 401), (SuperUserRepositoryBuildLogs, 'freshuser', 403), (SuperUserRepositoryBuildLogs, 'reader', 403), (SuperUserRepositoryBuildLogs, 'devtable', 400), (SuperUserRepositoryBuildStatus, None, 401), (SuperUserRepositoryBuildStatus, 'freshuser', 403), (SuperUserRepositoryBuildStatus, 'reader', 403), (SuperUserRepositoryBuildStatus, 'devtable', 400), (SuperUserRepositoryBuildResource, None, 401), (SuperUserRepositoryBuildResource, 'freshuser', 403), (SuperUserRepositoryBuildResource, 'reader', 403), (SuperUserRepositoryBuildResource, 'devtable', 404), ]) def test_super_user_build_endpoints(resource, identity, expected, client): cl = client_with_identity(identity, client) final_url = api.url_for(resource, build_uuid='1234') rv = cl.open(final_url) msg = '%s %s: %s expected: %s' % ('GET', final_url, rv.status_code, expected) assert rv.status_code == expected, msg