diff --git a/data/test/test_userfiles.py b/data/test/test_userfiles.py index 8aabf8d06..671011e58 100644 --- a/data/test/test_userfiles.py +++ b/data/test/test_userfiles.py @@ -38,16 +38,17 @@ def test_lookup_userfile(app, client): storage_mock.stream_read_file = _stream_read_file app.config['USERFILES_PATH'] = 'foo' - Userfiles(app, distributed_storage=storage_mock) + Userfiles(app, distributed_storage=storage_mock, path='mockuserfiles', + handler_name='mockuserfiles') - rv = client.open('/userfiles/' + uuid, method='GET') + rv = client.open('/mockuserfiles/' + uuid, method='GET') assert rv.status_code == 200 - rv = client.open('/userfiles/' + upper_uuid, method='GET') + rv = client.open('/mockuserfiles/' + upper_uuid, method='GET') assert rv.status_code == 200 - rv = client.open('/userfiles/' + bad_uuid, method='GET') + rv = client.open('/mockuserfiles/' + bad_uuid, method='GET') assert rv.status_code == 404 - rv = client.open('/userfiles/foo/bar/baz', method='GET') + rv = client.open('/mockuserfiles/foo/bar/baz', method='GET') assert rv.status_code == 404 diff --git a/data/userfiles.py b/data/userfiles.py index 9d2ea8a2b..1803c94ef 100644 --- a/data/userfiles.py +++ b/data/userfiles.py @@ -128,23 +128,23 @@ class DelegateUserfiles(object): class Userfiles(object): - def __init__(self, app=None, distributed_storage=None): + def __init__(self, app=None, distributed_storage=None, path='userfiles', + handler_name='userfiles_handler'): self.app = app if app is not None: - self.state = self.init_app(app, distributed_storage) + self.state = self.init_app(app, distributed_storage, path=path, handler_name=handler_name) else: self.state = None - def init_app(self, app, distributed_storage): + def init_app(self, app, distributed_storage, path='userfiles', handler_name='userfiles_handler'): location = app.config.get('USERFILES_LOCATION') - path = app.config.get('USERFILES_PATH', None) + userfiles_path = app.config.get('USERFILES_PATH', None) - if path is not None: - handler_name = 'userfiles_handlers' - userfiles = DelegateUserfiles(app, distributed_storage, location, path, + if userfiles_path is not None: + userfiles = DelegateUserfiles(app, distributed_storage, location, userfiles_path, handler_name=handler_name) - app.add_url_rule('/userfiles/', + app.add_url_rule('/%s/' % path, view_func=UserfilesHandlers.as_view(handler_name, distributed_storage=distributed_storage, location=location, diff --git a/endpoints/api/test/test_security.py b/endpoints/api/test/test_security.py index e644063a1..908395a0c 100644 --- a/endpoints/api/test/test_security.py +++ b/endpoints/api/test/test_security.py @@ -4,21 +4,38 @@ import pytest from flask_principal import AnonymousIdentity from endpoints.api import api -from endpoints.api.organization import OrganizationCollaboratorList -from endpoints.api.repositorynotification import RepositoryNotification -from endpoints.api.permission import RepositoryUserTransitivePermission -from endpoints.api.team import OrganizationTeamSyncing from endpoints.api.test.shared import conduct_api_call -from endpoints.api.repository import RepositoryTrust -from endpoints.api.signing import RepositorySignatures -from endpoints.api.search import ConductRepositorySearch -from endpoints.api.superuser import SuperUserRepositoryBuildLogs, SuperUserRepositoryBuildResource -from endpoints.api.superuser import SuperUserRepositoryBuildStatus -from endpoints.api.appspecifictokens import AppTokens, AppToken -from endpoints.api.manifest import RepositoryManifest -from endpoints.api.trigger import BuildTrigger from endpoints.test.shared import client_with_identity, toggle_feature +from endpoints.api.appspecifictokens import * +from endpoints.api.billing import * +from endpoints.api.build import * +from endpoints.api.discovery import * +from endpoints.api.globalmessages import * +from endpoints.api.image import * +from endpoints.api.logs import * +from endpoints.api.manifest import * +from endpoints.api.organization import * +from endpoints.api.permission import * +from endpoints.api.prototype import * +from endpoints.api.repoemail import * +from endpoints.api.repository import * +from endpoints.api.repositorynotification import * +from endpoints.api.repotoken import * +from endpoints.api.robot import * +from endpoints.api.search import * +from endpoints.api.secscan import * +from endpoints.api.signing import * +from endpoints.api.subscribe import * +from endpoints.api.suconfig import * +from endpoints.api.superuser import * +from endpoints.api.tag import * +from endpoints.api.team import * +from endpoints.api.trigger import * +from endpoints.api.user import * + +from endpoints.api.repository import Repository + from test.fixtures import * ORG_PARAMS = {'orgname': 'buynlarge'} @@ -31,13 +48,13 @@ TOKEN_PARAMS = {'token_uuid': 'someuuid'} TRIGGER_PARAMS = {'repository': 'devtable/simple', 'trigger_uuid': 'someuuid'} MANIFEST_PARAMS = {'repository': 'devtable/simple', 'manifestref': 'sha256:deadbeef'} -@pytest.mark.parametrize('resource,method,params,body,identity,expected', [ +SECURITY_TESTS = [ (AppTokens, 'GET', {}, {}, None, 401), (AppTokens, 'GET', {}, {}, 'freshuser', 200), (AppTokens, 'GET', {}, {}, 'reader', 200), (AppTokens, 'GET', {}, {}, 'devtable', 200), - (AppTokens, 'POST', {}, {}, None, 403), + (AppTokens, 'POST', {}, {}, None, 401), (AppTokens, 'POST', {}, {}, 'freshuser', 400), (AppTokens, 'POST', {}, {}, 'reader', 400), (AppTokens, 'POST', {}, {}, 'devtable', 400), @@ -47,7 +64,7 @@ MANIFEST_PARAMS = {'repository': 'devtable/simple', 'manifestref': 'sha256:dead (AppToken, 'GET', TOKEN_PARAMS, {}, 'reader', 404), (AppToken, 'GET', TOKEN_PARAMS, {}, 'devtable', 404), - (AppToken, 'DELETE', TOKEN_PARAMS, {}, None, 403), + (AppToken, 'DELETE', TOKEN_PARAMS, {}, None, 401), (AppToken, 'DELETE', TOKEN_PARAMS, {}, 'freshuser', 404), (AppToken, 'DELETE', TOKEN_PARAMS, {}, 'reader', 404), (AppToken, 'DELETE', TOKEN_PARAMS, {}, 'devtable', 404), @@ -62,12 +79,12 @@ MANIFEST_PARAMS = {'repository': 'devtable/simple', 'manifestref': 'sha256:dead (OrganizationCollaboratorList, 'GET', ORG_PARAMS, None, 'reader', 403), (OrganizationCollaboratorList, 'GET', ORG_PARAMS, None, 'devtable', 200), - (OrganizationTeamSyncing, 'POST', TEAM_PARAMS, {}, None, 403), + (OrganizationTeamSyncing, 'POST', TEAM_PARAMS, {}, None, 401), (OrganizationTeamSyncing, 'POST', TEAM_PARAMS, {}, 'freshuser', 403), (OrganizationTeamSyncing, 'POST', TEAM_PARAMS, {}, 'reader', 403), (OrganizationTeamSyncing, 'POST', TEAM_PARAMS, {}, 'devtable', 400), - (OrganizationTeamSyncing, 'DELETE', TEAM_PARAMS, {}, None, 403), + (OrganizationTeamSyncing, 'DELETE', TEAM_PARAMS, {}, None, 401), (OrganizationTeamSyncing, 'DELETE', TEAM_PARAMS, {}, 'freshuser', 403), (OrganizationTeamSyncing, 'DELETE', TEAM_PARAMS, {}, 'reader', 403), (OrganizationTeamSyncing, 'DELETE', TEAM_PARAMS, {}, 'devtable', 200), @@ -90,18 +107,18 @@ MANIFEST_PARAMS = {'repository': 'devtable/simple', 'manifestref': 'sha256:dead (SuperUserRepositoryBuildResource, 'GET', BUILD_PARAMS, None, None, 401), (SuperUserRepositoryBuildResource, 'GET', BUILD_PARAMS, None, 'freshuser', 403), (SuperUserRepositoryBuildResource, 'GET', BUILD_PARAMS, None, 'reader', 403), - (SuperUserRepositoryBuildResource, 'GET', BUILD_PARAMS, None, 'devtable', 404), + (SuperUserRepositoryBuildResource, 'GET', BUILD_PARAMS, None, 'devtable', 404), (RepositorySignatures, 'GET', REPO_PARAMS, {}, 'freshuser', 403), (RepositorySignatures, 'GET', REPO_PARAMS, {}, 'reader', 403), (RepositorySignatures, 'GET', REPO_PARAMS, {}, 'devtable', 404), - (RepositoryNotification, 'POST', NOTIFICATION_PARAMS, {}, None, 403), + (RepositoryNotification, 'POST', NOTIFICATION_PARAMS, {}, None, 401), (RepositoryNotification, 'POST', NOTIFICATION_PARAMS, {}, 'freshuser', 403), (RepositoryNotification, 'POST', NOTIFICATION_PARAMS, {}, 'reader', 403), (RepositoryNotification, 'POST', NOTIFICATION_PARAMS, {}, 'devtable', 400), - (RepositoryTrust, 'POST', REPO_PARAMS, {'trust_enabled': True}, None, 403), + (RepositoryTrust, 'POST', REPO_PARAMS, {'trust_enabled': True}, None, 401), (RepositoryTrust, 'POST', REPO_PARAMS, {'trust_enabled': True}, 'freshuser', 403), (RepositoryTrust, 'POST', REPO_PARAMS, {'trust_enabled': True}, 'reader', 403), (RepositoryTrust, 'POST', REPO_PARAMS, {'trust_enabled': True}, 'devtable', 404), @@ -111,12 +128,12 @@ MANIFEST_PARAMS = {'repository': 'devtable/simple', 'manifestref': 'sha256:dead (BuildTrigger, 'GET', TRIGGER_PARAMS, {}, 'reader', 403), (BuildTrigger, 'GET', TRIGGER_PARAMS, {}, 'devtable', 404), - (BuildTrigger, 'DELETE', TRIGGER_PARAMS, {}, None, 403), + (BuildTrigger, 'DELETE', TRIGGER_PARAMS, {}, None, 401), (BuildTrigger, 'DELETE', TRIGGER_PARAMS, {}, 'freshuser', 403), (BuildTrigger, 'DELETE', TRIGGER_PARAMS, {}, 'reader', 403), (BuildTrigger, 'DELETE', TRIGGER_PARAMS, {}, 'devtable', 404), - (BuildTrigger, 'PUT', TRIGGER_PARAMS, {}, None, 403), + (BuildTrigger, 'PUT', TRIGGER_PARAMS, {}, None, 401), (BuildTrigger, 'PUT', TRIGGER_PARAMS, {}, 'freshuser', 403), (BuildTrigger, 'PUT', TRIGGER_PARAMS, {}, 'reader', 403), (BuildTrigger, 'PUT', TRIGGER_PARAMS, {}, 'devtable', 400), @@ -135,12 +152,1287 @@ MANIFEST_PARAMS = {'repository': 'devtable/simple', 'manifestref': 'sha256:dead (RepositoryUserTransitivePermission, 'GET', {'username': 'A2O9','repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), (RepositoryUserTransitivePermission, 'GET', {'username': 'devtable','repository': 'devtable/shared'}, None, 'devtable', 200), (RepositoryUserTransitivePermission, 'GET', {'username': 'devtable','repository': 'devtable/nope'}, None, 'devtable', 404), -]) + + (StarredRepositoryList, 'GET', None, None, None, 401), + (StarredRepositoryList, 'GET', None, None, 'devtable', 200), + (StarredRepositoryList, 'GET', None, None, 'freshuser', 200), + (StarredRepositoryList, 'GET', None, None, 'reader', 200), + (StarredRepositoryList, 'POST', None, {u'namespace': 'public', u'repository': 'publicrepo'}, None, 401), + (StarredRepositoryList, 'POST', None, {u'namespace': 'public', u'repository': 'publicrepo'}, 'devtable', 201), + (StarredRepositoryList, 'POST', None, {u'namespace': 'public', u'repository': 'publicrepo'}, 'freshuser', 201), + (StarredRepositoryList, 'POST', None, {u'namespace': 'public', u'repository': 'publicrepo'}, 'reader', 201), + + (StarredRepository, 'DELETE', {'repository': 'public/publicrepo'}, None, None, 401), + (StarredRepository, 'DELETE', {'repository': 'public/publicrepo'}, None, 'devtable', 204), + (StarredRepository, 'DELETE', {'repository': 'public/publicrepo'}, None, 'freshuser', 204), + (StarredRepository, 'DELETE', {'repository': 'public/publicrepo'}, None, 'reader', 204), + + (UserNotification, 'GET', {'uuid': 'someuuid'}, None, None, 401), + (UserNotification, 'GET', {'uuid': 'someuuid'}, None, 'devtable', 404), + (UserNotification, 'GET', {'uuid': 'someuuid'}, None, 'freshuser', 404), + (UserNotification, 'GET', {'uuid': 'someuuid'}, None, 'reader', 404), + (UserNotification, 'PUT', {'uuid': 'someuuid'}, {}, None, 401), + (UserNotification, 'PUT', {'uuid': 'someuuid'}, {}, 'devtable', 404), + (UserNotification, 'PUT', {'uuid': 'someuuid'}, {}, 'freshuser', 404), + (UserNotification, 'PUT', {'uuid': 'someuuid'}, {}, 'reader', 404), + + (UserInvoiceList, 'GET', None, None, None, 401), + (UserInvoiceList, 'GET', None, None, 'devtable', 200), + (UserInvoiceList, 'GET', None, None, 'freshuser', 404), + (UserInvoiceList, 'GET', None, None, 'reader', 404), + + (PrivateRepositories, 'GET', None, None, None, 401), + (PrivateRepositories, 'GET', None, None, 'devtable', 200), + (PrivateRepositories, 'GET', None, None, 'freshuser', 200), + (PrivateRepositories, 'GET', None, None, 'reader', 200), + + (ConvertToOrganization, 'POST', None, {u'adminPassword': 'IQTM', u'plan': '1RB4', u'adminUser': '44E8'}, None, 401), + (ConvertToOrganization, 'POST', None, {u'adminPassword': 'IQTM', u'plan': '1RB4', u'adminUser': '44E8'}, 'devtable', 400), + (ConvertToOrganization, 'POST', None, {u'adminPassword': 'IQTM', u'plan': '1RB4', u'adminUser': '44E8'}, 'freshuser', 400), + (ConvertToOrganization, 'POST', None, {u'adminPassword': 'IQTM', u'plan': '1RB4', u'adminUser': '44E8'}, 'reader', 400), + + (UserRobotList, 'GET', None, None, None, 401), + (UserRobotList, 'GET', None, None, 'devtable', 200), + (UserRobotList, 'GET', None, None, 'freshuser', 200), + (UserRobotList, 'GET', None, None, 'reader', 200), + + (UserCard, 'GET', None, None, None, 401), + (UserCard, 'GET', None, None, 'devtable', 200), + (UserCard, 'GET', None, None, 'freshuser', 200), + (UserCard, 'GET', None, None, 'reader', 200), + (UserCard, 'POST', None, {u'token': 'ORH4'}, None, 401), + + (UserPlan, 'GET', None, None, None, 401), + (UserPlan, 'GET', None, None, 'devtable', 200), + (UserPlan, 'GET', None, None, 'freshuser', 200), + (UserPlan, 'GET', None, None, 'reader', 200), + (UserPlan, 'PUT', None, {u'plan': '1QIK'}, None, 401), + + (UserLogs, 'GET', None, None, None, 401), + (UserLogs, 'GET', None, None, 'devtable', 200), + (UserLogs, 'GET', None, None, 'freshuser', 200), + (UserLogs, 'GET', None, None, 'reader', 200), + + (OrganizationList, 'POST', None, {u'name': 'KSIS', u'email': 'DHVZ'}, None, 401), + (OrganizationList, 'POST', None, {u'name': 'KSIS', u'email': 'DHVZ'}, 'devtable', 400), + (OrganizationList, 'POST', None, {u'name': 'KSIS', u'email': 'DHVZ'}, 'freshuser', 400), + (OrganizationList, 'POST', None, {u'name': 'KSIS', u'email': 'DHVZ'}, 'reader', 400), + + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, None, 200), + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 200), + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 200), + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 200), + + (RepositoryList, 'GET', None, None, None, 400), + (RepositoryList, 'GET', None, None, 'devtable', 400), + (RepositoryList, 'GET', None, None, 'freshuser', 400), + (RepositoryList, 'GET', None, None, 'reader', 400), + (RepositoryList, 'POST', None, {u'repository': 'XZGB', u'visibility': u'public', u'description': '0O8U'}, None, 400), + (RepositoryList, 'POST', None, {u'repository': 'XZGB', u'visibility': u'public', u'description': '0O8U'}, 'devtable', 201), + (RepositoryList, 'POST', None, {u'repository': 'XZGB', u'visibility': u'public', u'description': '0O8U'}, 'freshuser', 201), + (RepositoryList, 'POST', None, {u'repository': 'XZGB', u'visibility': u'public', u'description': '0O8U'}, 'reader', 201), + + (DiscoveryResource, 'GET', None, None, None, 200), + (DiscoveryResource, 'GET', None, None, 'devtable', 200), + (DiscoveryResource, 'GET', None, None, 'freshuser', 200), + (DiscoveryResource, 'GET', None, None, 'reader', 200), + + (FileDropResource, 'POST', None, {u'mimeType': 'TKBX'}, None, 200), + (FileDropResource, 'POST', None, {u'mimeType': 'TKBX'}, 'devtable', 200), + (FileDropResource, 'POST', None, {u'mimeType': 'TKBX'}, 'freshuser', 200), + (FileDropResource, 'POST', None, {u'mimeType': 'TKBX'}, 'reader', 200), + + (Recovery, 'POST', None, {u'email': '826S'}, None, 200), + (Recovery, 'POST', None, {u'email': '826S'}, 'devtable', 200), + (Recovery, 'POST', None, {u'email': '826S'}, 'freshuser', 200), + (Recovery, 'POST', None, {u'email': '826S'}, 'reader', 200), + + (Signout, 'POST', None, None, None, 200), + (Signout, 'POST', None, None, 'devtable', 200), + (Signout, 'POST', None, None, 'freshuser', 200), + (Signout, 'POST', None, None, 'reader', 200), + + (Signin, 'POST', None, {u'username': 'E9RY', u'password': 'LQ0N'}, None, 403), + (Signin, 'POST', None, {u'username': 'E9RY', u'password': 'LQ0N'}, 'devtable', 403), + (Signin, 'POST', None, {u'username': 'E9RY', u'password': 'LQ0N'}, 'freshuser', 403), + (Signin, 'POST', None, {u'username': 'E9RY', u'password': 'LQ0N'}, 'reader', 403), + + (ExternalLoginInformation, 'POST', {'service_id': 'someservice'}, {}, None, 400), + (ExternalLoginInformation, 'POST', {'service_id': 'someservice'}, {}, 'devtable', 400), + (ExternalLoginInformation, 'POST', {'service_id': 'someservice'}, {}, 'freshuser', 400), + (ExternalLoginInformation, 'POST', {'service_id': 'someservice'}, {}, 'reader', 400), + + (DetachExternal, 'POST', {'service_id': 'someservice'}, {}, None, 401), + (DetachExternal, 'POST', {'service_id': 'someservice'}, {}, 'devtable', 200), + (DetachExternal, 'POST', {'service_id': 'someservice'}, {}, 'freshuser', 200), + (DetachExternal, 'POST', {'service_id': 'someservice'}, {}, 'reader', 200), + + (VerifyUser, 'POST', None, {u'password': 'LQ0N'}, None, 401), + (VerifyUser, 'POST', None, {u'password': 'password'}, 'devtable', 200), + (VerifyUser, 'POST', None, {u'password': 'LQ0N'}, 'freshuser', 403), + (VerifyUser, 'POST', None, {u'password': 'LQ0N'}, 'reader', 403), + + (ClientKey, 'POST', None, {u'password': 'LQ0N'}, None, 401), + (ClientKey, 'POST', None, {u'password': 'password'}, 'devtable', 200), + (ClientKey, 'POST', None, {u'password': 'LQ0N'}, 'freshuser', 400), + (ClientKey, 'POST', None, {u'password': 'password'}, 'reader', 200), + + (ListPlans, 'GET', None, None, None, 200), + (ListPlans, 'GET', None, None, 'devtable', 200), + (ListPlans, 'GET', None, None, 'freshuser', 200), + (ListPlans, 'GET', None, None, 'reader', 200), + + (User, 'GET', None, None, None, 401), + (User, 'GET', None, None, 'devtable', 200), + (User, 'GET', None, None, 'freshuser', 200), + (User, 'GET', None, None, 'reader', 200), + (User, 'POST', None, {u'username': 'T946', u'password': '0SG4', u'email': 'MENT'}, None, 400), + (User, 'POST', None, {u'username': 'T946', u'password': '0SG4', u'email': 'MENT'}, 'devtable', 400), + (User, 'POST', None, {u'username': 'T946', u'password': '0SG4', u'email': 'MENT'}, 'freshuser', 400), + (User, 'POST', None, {u'username': 'T946', u'password': '0SG4', u'email': 'MENT'}, 'reader', 400), + (User, 'PUT', None, {}, None, 401), + (User, 'PUT', None, {}, 'devtable', 200), + (User, 'PUT', None, {}, 'freshuser', 200), + (User, 'PUT', None, {}, 'reader', 200), + (User, 'DELETE', None, {}, None, 401), + (User, 'DELETE', None, {}, 'devtable', 400), + (User, 'DELETE', None, {}, 'freshuser', 204), + (User, 'DELETE', None, {}, 'reader', 204), + + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, None, 401), + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, 'devtable', 400), + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, 'freshuser', 403), + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, 'reader', 403), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, None, 401), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, 'devtable', 200), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, 'freshuser', 403), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'readers'}, None, 'reader', 403), + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, None, 401), + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, 'devtable', 400), + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, 'freshuser', 403), + (TeamMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, 'reader', 403), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, None, 401), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, 'devtable', 400), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, 'freshuser', 403), + (TeamMember, 'PUT', {'orgname': 'buynlarge', 'membername': 'devtable', 'teamname': 'owners'}, None, 'reader', 403), + + (TeamPermissions, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, None, 401), + (TeamPermissions, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'devtable', 200), + (TeamPermissions, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'freshuser', 403), + (TeamPermissions, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'reader', 403), + + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, None, 401), + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'devtable', 200), + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'freshuser', 403), + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'reader', 200), + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, None, 401), + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, 'devtable', 200), + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, 'freshuser', 403), + (TeamMemberList, 'GET', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, 'reader', 403), + + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'public/publicrepo'}, {u'role': u'read'}, None, 401), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'public/publicrepo'}, {u'role': u'read'}, 'devtable', 403), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'public/publicrepo'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'public/publicrepo'}, {u'role': u'read'}, 'reader', 403), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, 'devtable', 400), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, 'devtable', 400), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'devtable/shared'}, {u'role': u'read'}, None, 401), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'devtable/shared'}, {u'role': u'read'}, 'devtable', 400), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'devtable/shared'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'devtable/shared'}, {u'role': u'read'}, 'reader', 403), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 400), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryUserPermission, 'DELETE', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 400), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryUserPermission, 'GET', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, None, 401), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, 'devtable', 400), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryUserPermission, 'PUT', {'username': 'A2O9', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, 'reader', 403), + + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, None, 401), + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, 'devtable', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, 'reader', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, None, 401), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, 'devtable', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'readers'}, None, 'reader', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'readers'}, {u'role': u'read'}, None, 401), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'readers'}, {u'role': u'read'}, 'devtable', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'readers'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'readers'}, {u'role': u'read'}, 'reader', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, None, 401), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, 'devtable', 400), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, 'reader', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, None, 401), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, 'devtable', 400), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'readers'}, None, 'reader', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'readers'}, {u'role': u'read'}, None, 401), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'readers'}, {u'role': u'read'}, 'devtable', 400), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'readers'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'readers'}, {u'role': u'read'}, 'reader', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, None, 401), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, 'devtable', 204), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, 'reader', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, None, 401), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, 'devtable', 200), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, None, 'reader', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, {u'role': u'read'}, None, 401), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, {u'role': u'read'}, 'devtable', 200), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'readers'}, {u'role': u'read'}, 'reader', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, None, 401), + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, 'devtable', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, 'reader', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, None, 401), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, 'devtable', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'public/publicrepo', 'teamname': 'owners'}, None, 'reader', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'owners'}, {u'role': u'read'}, None, 401), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'owners'}, {u'role': u'read'}, 'devtable', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'owners'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'public/publicrepo', 'teamname': 'owners'}, {u'role': u'read'}, 'reader', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, None, 401), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, 'devtable', 400), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, 'reader', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, None, 401), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, 'devtable', 400), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'devtable/shared', 'teamname': 'owners'}, None, 'reader', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'owners'}, {u'role': u'read'}, None, 401), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'owners'}, {u'role': u'read'}, 'devtable', 400), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'owners'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'devtable/shared', 'teamname': 'owners'}, {u'role': u'read'}, 'reader', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, None, 401), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, 'devtable', 400), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'DELETE', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, 'reader', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, None, 401), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, 'devtable', 400), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, 'freshuser', 403), + (RepositoryTeamPermission, 'GET', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, None, 'reader', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, {u'role': u'read'}, None, 401), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, {u'role': u'read'}, 'devtable', 200), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryTeamPermission, 'PUT', {'repository': 'buynlarge/orgrepo', 'teamname': 'owners'}, {u'role': u'read'}, 'reader', 403), + + (BuildTriggerActivate, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, None, 401), + (BuildTriggerActivate, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, 'devtable', 403), + (BuildTriggerActivate, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, 'freshuser', 403), + (BuildTriggerActivate, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, 'reader', 403), + (BuildTriggerActivate, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {}, None, 401), + (BuildTriggerActivate, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {'config': {}}, 'devtable', 404), + (BuildTriggerActivate, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {}, 'freshuser', 403), + (BuildTriggerActivate, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {}, 'reader', 403), + (BuildTriggerActivate, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {}, None, 401), + (BuildTriggerActivate, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {'config': {}}, 'devtable', 404), + (BuildTriggerActivate, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {}, 'freshuser', 403), + (BuildTriggerActivate, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {}, 'reader', 403), + + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, None, 401), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, 'devtable', 403), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, 'freshuser', 403), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'public/publicrepo', 'trigger_uuid': 'SWO1'}, {}, 'reader', 403), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {}, None, 401), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {'config': {}}, 'devtable', 404), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {}, 'freshuser', 403), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'devtable/shared', 'trigger_uuid': 'SWO1'}, {}, 'reader', 403), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {}, None, 401), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {'config': {}}, 'devtable', 404), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {}, 'freshuser', 403), + (BuildTriggerFieldValues, 'POST', {'field_name': 'test_field', 'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'SWO1'}, {}, 'reader', 403), + + (BuildTriggerSources, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '831C'}, None, None, 401), + (BuildTriggerSources, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '831C'}, {'namespace': 'foo'}, 'devtable', 403), + (BuildTriggerSources, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '831C'}, None, 'freshuser', 403), + (BuildTriggerSources, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '831C'}, None, 'reader', 403), + (BuildTriggerSources, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '831C'}, None, None, 401), + (BuildTriggerSources, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '831C'}, {'namespace': 'foo'}, 'devtable', 404), + (BuildTriggerSources, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '831C'}, None, 'freshuser', 403), + (BuildTriggerSources, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '831C'}, None, 'reader', 403), + (BuildTriggerSources, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '831C'}, None, None, 401), + (BuildTriggerSources, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '831C'}, {'namespace': 'foo'}, 'devtable', 404), + (BuildTriggerSources, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '831C'}, None, 'freshuser', 403), + (BuildTriggerSources, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '831C'}, None, 'reader', 403), + + (BuildTriggerSubdirs, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '4I2Y'}, {}, None, 401), + (BuildTriggerSubdirs, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '4I2Y'}, {}, 'devtable', 403), + (BuildTriggerSubdirs, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '4I2Y'}, {}, 'freshuser', 403), + (BuildTriggerSubdirs, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '4I2Y'}, {}, 'reader', 403), + (BuildTriggerSubdirs, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '4I2Y'}, {}, None, 401), + (BuildTriggerSubdirs, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '4I2Y'}, {}, 'devtable', 404), + (BuildTriggerSubdirs, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '4I2Y'}, {}, 'freshuser', 403), + (BuildTriggerSubdirs, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '4I2Y'}, {}, 'reader', 403), + (BuildTriggerSubdirs, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '4I2Y'}, {}, None, 401), + (BuildTriggerSubdirs, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '4I2Y'}, {}, 'devtable', 404), + (BuildTriggerSubdirs, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '4I2Y'}, {}, 'freshuser', 403), + (BuildTriggerSubdirs, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '4I2Y'}, {}, 'reader', 403), + + (TriggerBuildList, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'ZM1W'}, None, None, 401), + (TriggerBuildList, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'ZM1W'}, None, 'devtable', 403), + (TriggerBuildList, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'ZM1W'}, None, 'freshuser', 403), + (TriggerBuildList, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'ZM1W'}, None, 'reader', 403), + (TriggerBuildList, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'ZM1W'}, None, None, 401), + (TriggerBuildList, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'ZM1W'}, None, 'devtable', 200), + (TriggerBuildList, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'ZM1W'}, None, 'freshuser', 403), + (TriggerBuildList, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'ZM1W'}, None, 'reader', 403), + (TriggerBuildList, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'ZM1W'}, None, None, 401), + (TriggerBuildList, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'ZM1W'}, None, 'devtable', 200), + (TriggerBuildList, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'ZM1W'}, None, 'freshuser', 403), + (TriggerBuildList, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'ZM1W'}, None, 'reader', 403), + + (ActivateBuildTrigger, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, None, None, 401), + (ActivateBuildTrigger, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, None, 'devtable', 403), + (ActivateBuildTrigger, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, None, 'freshuser', 403), + (ActivateBuildTrigger, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, None, 'reader', 403), + (ActivateBuildTrigger, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, None, None, 401), + (ActivateBuildTrigger, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, {}, 'devtable', 404), + (ActivateBuildTrigger, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, None, 'freshuser', 403), + (ActivateBuildTrigger, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, None, 'reader', 403), + (ActivateBuildTrigger, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, None, None, 401), + (ActivateBuildTrigger, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, {}, 'devtable', 404), + (ActivateBuildTrigger, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, None, 'freshuser', 403), + (ActivateBuildTrigger, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, None, 'reader', 403), + + (BuildTriggerAnalyze, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, None, None, 401), + (BuildTriggerAnalyze, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, {'config': {}}, 'devtable', 403), + (BuildTriggerAnalyze, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, None, 'freshuser', 403), + (BuildTriggerAnalyze, 'POST', {'repository': 'public/publicrepo', 'trigger_uuid': '0BYE'}, None, 'reader', 403), + (BuildTriggerAnalyze, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, None, None, 401), + (BuildTriggerAnalyze, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, {'config': {}}, 'devtable', 404), + (BuildTriggerAnalyze, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, None, 'freshuser', 403), + (BuildTriggerAnalyze, 'POST', {'repository': 'devtable/shared', 'trigger_uuid': '0BYE'}, None, 'reader', 403), + (BuildTriggerAnalyze, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, None, None, 401), + (BuildTriggerAnalyze, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, {'config': {}}, 'devtable', 404), + (BuildTriggerAnalyze, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, None, 'freshuser', 403), + (BuildTriggerAnalyze, 'POST', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': '0BYE'}, None, 'reader', 403), + + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, None, 400), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'devtable', 400), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'freshuser', 400), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'reader', 400), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'devtable', 400), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'reader', 400), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 400), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryBuildStatus, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 400), + + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, None, 404), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'devtable', 404), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'freshuser', 404), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'reader', 404), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'devtable', 404), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'reader', 404), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryBuildResource, 'GET', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 404), + + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'devtable', 404), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryBuildResource, 'DELETE', {'build_uuid': 'FG86', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'devtable/shared'}, None, 'devtable', 400), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 400), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryBuildLogs, 'GET', {'build_uuid': 'S5J8', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, None, 200), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, 'devtable', 200), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, 'freshuser', 200), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, 'reader', 200), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, None, 401), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, 'devtable', 200), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, 'reader', 200), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (ListRepositoryTags, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 200), + + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, None, 404), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, 'devtable', 404), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, 'freshuser', 404), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'public/publicrepo'}, None, 'reader', 404), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, 'devtable', 404), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'devtable/shared'}, None, 'reader', 404), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryTagImages, 'GET', {'tag': 'TN96', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 404), + + (PermissionPrototype, 'DELETE', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, None, None, 401), + (PermissionPrototype, 'DELETE', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, None, 'devtable', 404), + (PermissionPrototype, 'DELETE', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, None, 'freshuser', 403), + (PermissionPrototype, 'DELETE', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, None, 'reader', 403), + (PermissionPrototype, 'PUT', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, {u'role': u'read'}, None, 401), + (PermissionPrototype, 'PUT', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, {u'role': u'read'}, 'devtable', 404), + (PermissionPrototype, 'PUT', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, {u'role': u'read'}, 'freshuser', 403), + (PermissionPrototype, 'PUT', {'orgname': 'buynlarge', 'prototypeid': 'L24B'}, {u'role': u'read'}, 'reader', 403), + + (OrganizationMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, None, 401), + (OrganizationMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, 'devtable', 404), + (OrganizationMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, 'freshuser', 403), + (OrganizationMember, 'DELETE', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, 'reader', 403), + (OrganizationMember, 'GET', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, None, 401), + (OrganizationMember, 'GET', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, 'devtable', 404), + (OrganizationMember, 'GET', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, 'freshuser', 403), + (OrganizationMember, 'GET', {'orgname': 'buynlarge', 'membername': 'someuser'}, None, 'reader', 403), + + (OrgRobot, 'DELETE', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, None, 401), + (OrgRobot, 'DELETE', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, 'devtable', 400), + (OrgRobot, 'DELETE', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, 'freshuser', 403), + (OrgRobot, 'DELETE', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, 'reader', 403), + (OrgRobot, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, None, 401), + (OrgRobot, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, 'devtable', 400), + (OrgRobot, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, 'freshuser', 403), + (OrgRobot, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, None, 'reader', 403), + (OrgRobot, 'PUT', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, {}, None, 401), + (OrgRobot, 'PUT', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, {}, 'devtable', 400), + (OrgRobot, 'PUT', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, {}, 'freshuser', 403), + (OrgRobot, 'PUT', {'orgname': 'buynlarge', 'robot_shortname': 'Z7PD'}, {}, 'reader', 403), + + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, None, 401), + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'devtable', 204), + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'freshuser', 403), + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'readers'}, None, 'reader', 403), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'readers'}, {u'role': u'member'}, None, 401), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'readers'}, {u'role': u'member'}, 'devtable', 200), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'readers'}, {u'role': u'member'}, 'freshuser', 403), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'readers'}, {u'role': u'member'}, 'reader', 403), + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, None, 401), + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, 'devtable', 400), + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, 'freshuser', 403), + (OrganizationTeam, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners'}, None, 'reader', 403), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners'}, {u'role': u'member'}, None, 401), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners'}, {u'role': u'member'}, 'devtable', 400), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners'}, {u'role': u'member'}, 'freshuser', 403), + (OrganizationTeam, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners'}, {u'role': u'member'}, 'reader', 403), + + (RepositoryTeamPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryTeamPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryTeamPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryTeamPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryTeamPermissionList, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (RepositoryTeamPermissionList, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (RepositoryTeamPermissionList, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryTeamPermissionList, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryTeamPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryTeamPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (RepositoryTeamPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryTeamPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + + (RepositoryUserPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryUserPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryUserPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryUserPermissionList, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryUserPermissionList, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (RepositoryUserPermissionList, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (RepositoryUserPermissionList, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryUserPermissionList, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryUserPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryUserPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (RepositoryUserPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryUserPermissionList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + + (BuildTrigger, 'DELETE', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, None, 401), + (BuildTrigger, 'DELETE', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, 'devtable', 403), + (BuildTrigger, 'DELETE', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, 'freshuser', 403), + (BuildTrigger, 'DELETE', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, 'reader', 403), + (BuildTrigger, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, None, 401), + (BuildTrigger, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, 'devtable', 403), + (BuildTrigger, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, 'freshuser', 403), + (BuildTrigger, 'GET', {'repository': 'public/publicrepo', 'trigger_uuid': 'D6TI'}, None, 'reader', 403), + (BuildTrigger, 'DELETE', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, None, 401), + (BuildTrigger, 'DELETE', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, 'devtable', 404), + (BuildTrigger, 'DELETE', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, 'freshuser', 403), + (BuildTrigger, 'DELETE', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, 'reader', 403), + (BuildTrigger, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, None, 401), + (BuildTrigger, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, 'devtable', 404), + (BuildTrigger, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, 'freshuser', 403), + (BuildTrigger, 'GET', {'repository': 'devtable/shared', 'trigger_uuid': 'D6TI'}, None, 'reader', 403), + (BuildTrigger, 'DELETE', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, None, 401), + (BuildTrigger, 'DELETE', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, 'devtable', 404), + (BuildTrigger, 'DELETE', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, 'freshuser', 403), + (BuildTrigger, 'DELETE', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, 'reader', 403), + (BuildTrigger, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, None, 401), + (BuildTrigger, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, 'devtable', 404), + (BuildTrigger, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, 'freshuser', 403), + (BuildTrigger, 'GET', {'repository': 'buynlarge/orgrepo', 'trigger_uuid': 'D6TI'}, None, 'reader', 403), + + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, 'devtable', 400), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, 'devtable', 404), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 400), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryNotification, 'DELETE', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryNotification, 'GET', {'uuid': 'QFAT', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'public/publicrepo'}, {u'role': u'read'}, None, 401), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'public/publicrepo'}, {u'role': u'read'}, 'devtable', 403), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'public/publicrepo'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'public/publicrepo'}, {u'role': u'read'}, 'reader', 403), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, 'devtable', 400), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, 'devtable', 404), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'devtable/shared'}, {u'role': u'read'}, None, 401), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'devtable/shared'}, {u'role': u'read'}, 'devtable', 400), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'devtable/shared'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'devtable/shared'}, {u'role': u'read'}, 'reader', 403), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 400), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryToken, 'DELETE', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryToken, 'GET', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, None, 401), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, 'devtable', 400), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, 'freshuser', 403), + (RepositoryToken, 'PUT', {'code': 'UJQB', 'repository': 'buynlarge/orgrepo'}, {u'role': u'read'}, 'reader', 403), + + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'public/publicrepo'}, None, None, 404), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'public/publicrepo'}, None, 'devtable', 404), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'public/publicrepo'}, None, 'freshuser', 404), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'public/publicrepo'}, None, 'reader', 404), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'devtable/shared'}, None, 'devtable', 404), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'devtable/shared'}, None, 'reader', 404), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryImage, 'GET', {'image_id': '5AVQ', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 404), + + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, None, 401), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, 'devtable', 403), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, 'freshuser', 403), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, 'reader', 403), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, None, 401), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, 'devtable', 400), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, 'freshuser', 403), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, 'reader', 403), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, None, 401), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, 'devtable', 400), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, 'freshuser', 403), + (RestoreTag, 'POST', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, 'reader', 403), + + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, None, 401), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, 'devtable', 403), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, 'freshuser', 403), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'public/publicrepo'}, {u'image': 'WXNG'}, 'reader', 403), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'devtable/shared'}, None, 'devtable', 400), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, None, 401), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, 'devtable', 404), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, 'freshuser', 403), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'devtable/shared'}, {u'image': 'WXNG'}, 'reader', 403), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 400), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryTag, 'DELETE', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, None, 401), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, 'devtable', 404), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, 'freshuser', 403), + (RepositoryTag, 'PUT', {'tag': 'HP8R', 'repository': 'buynlarge/orgrepo'}, {u'image': 'WXNG'}, 'reader', 403), + + (PermissionPrototypeList, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (PermissionPrototypeList, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (PermissionPrototypeList, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (PermissionPrototypeList, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + (PermissionPrototypeList, 'POST', {'orgname': 'buynlarge'}, {u'role': u'read', u'delegate': {u'kind': u'user', u'name': '7DGP'}}, None, 401), + (PermissionPrototypeList, 'POST', {'orgname': 'buynlarge'}, {u'role': u'read', u'delegate': {u'kind': u'user', u'name': '7DGP'}}, 'devtable', 400), + (PermissionPrototypeList, 'POST', {'orgname': 'buynlarge'}, {u'role': u'read', u'delegate': {u'kind': u'user', u'name': '7DGP'}}, 'freshuser', 403), + (PermissionPrototypeList, 'POST', {'orgname': 'buynlarge'}, {u'role': u'read', u'delegate': {u'kind': u'user', u'name': '7DGP'}}, 'reader', 403), + + (OrganizationInvoiceList, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrganizationInvoiceList, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrganizationInvoiceList, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrganizationInvoiceList, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + + (OrgPrivateRepositories, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrgPrivateRepositories, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrgPrivateRepositories, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrgPrivateRepositories, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + + (OrganizationMemberList, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrganizationMemberList, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrganizationMemberList, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrganizationMemberList, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + + (OrgRobotList, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrgRobotList, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrgRobotList, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrgRobotList, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 200), + + (OrganizationCard, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrganizationCard, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrganizationCard, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrganizationCard, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + (OrganizationCard, 'POST', {'orgname': 'buynlarge'}, {u'token': '4VFR'}, None, 401), + (OrganizationCard, 'POST', {'orgname': 'buynlarge'}, {u'token': '4VFR'}, 'freshuser', 403), + (OrganizationCard, 'POST', {'orgname': 'buynlarge'}, {u'token': '4VFR'}, 'reader', 403), + + (OrganizationPlan, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrganizationPlan, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrganizationPlan, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrganizationPlan, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + (OrganizationPlan, 'PUT', {'orgname': 'buynlarge'}, {u'plan': 'WWEI'}, None, 401), + (OrganizationPlan, 'PUT', {'orgname': 'buynlarge'}, {u'plan': 'WWEI'}, 'freshuser', 403), + (OrganizationPlan, 'PUT', {'orgname': 'buynlarge'}, {u'plan': 'WWEI'}, 'reader', 403), + + (OrgLogs, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrgLogs, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrgLogs, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrgLogs, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + + (RepositoryVisibility, 'POST', {'repository': 'public/publicrepo'}, {u'visibility': u'public'}, None, 401), + (RepositoryVisibility, 'POST', {'repository': 'public/publicrepo'}, {u'visibility': u'public'}, 'devtable', 403), + (RepositoryVisibility, 'POST', {'repository': 'public/publicrepo'}, {u'visibility': u'public'}, 'freshuser', 403), + (RepositoryVisibility, 'POST', {'repository': 'public/publicrepo'}, {u'visibility': u'public'}, 'reader', 403), + (RepositoryVisibility, 'POST', {'repository': 'devtable/shared'}, {u'visibility': u'public'}, None, 401), + (RepositoryVisibility, 'POST', {'repository': 'devtable/shared'}, {u'visibility': u'public'}, 'devtable', 200), + (RepositoryVisibility, 'POST', {'repository': 'devtable/shared'}, {u'visibility': u'public'}, 'freshuser', 403), + (RepositoryVisibility, 'POST', {'repository': 'devtable/shared'}, {u'visibility': u'public'}, 'reader', 403), + (RepositoryVisibility, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'visibility': u'public'}, None, 401), + (RepositoryVisibility, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'visibility': u'public'}, 'devtable', 200), + (RepositoryVisibility, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'visibility': u'public'}, 'freshuser', 403), + (RepositoryVisibility, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'visibility': u'public'}, 'reader', 403), + + (BuildTriggerList, 'GET', {'repository': 'public/publicrepo'}, None, None, 401), + (BuildTriggerList, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 403), + (BuildTriggerList, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (BuildTriggerList, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 403), + (BuildTriggerList, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (BuildTriggerList, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (BuildTriggerList, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (BuildTriggerList, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 403), + (BuildTriggerList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (BuildTriggerList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (BuildTriggerList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (BuildTriggerList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + + (RepositoryNotificationList, 'GET', {'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryNotificationList, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryNotificationList, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryNotificationList, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryNotificationList, 'POST', {'repository': 'public/publicrepo'}, {}, None, 401), + (RepositoryNotificationList, 'POST', {'repository': 'public/publicrepo'}, {}, 'devtable', 403), + (RepositoryNotificationList, 'POST', {'repository': 'public/publicrepo'}, {}, 'freshuser', 403), + (RepositoryNotificationList, 'POST', {'repository': 'public/publicrepo'}, {}, 'reader', 403), + (RepositoryNotificationList, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (RepositoryNotificationList, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (RepositoryNotificationList, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryNotificationList, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryNotificationList, 'POST', {'repository': 'devtable/shared'}, {}, None, 401), + (RepositoryNotificationList, 'POST', {'repository': 'devtable/shared'}, {'config': {'email': 'a@b.com'}, 'event': 'repo_push', 'method': 'email'}, 'devtable', 400), + (RepositoryNotificationList, 'POST', {'repository': 'devtable/shared'}, {}, 'freshuser', 403), + (RepositoryNotificationList, 'POST', {'repository': 'devtable/shared'}, {}, 'reader', 403), + (RepositoryNotificationList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryNotificationList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (RepositoryNotificationList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryNotificationList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryNotificationList, 'POST', {'repository': 'buynlarge/orgrepo'}, {}, None, 401), + (RepositoryNotificationList, 'POST', {'repository': 'buynlarge/orgrepo'}, {'config': {'email': 'a@b.com'}, 'event': 'repo_push', 'method': 'email'}, 'devtable', 400), + (RepositoryNotificationList, 'POST', {'repository': 'buynlarge/orgrepo'}, {}, 'freshuser', 403), + (RepositoryNotificationList, 'POST', {'repository': 'buynlarge/orgrepo'}, {}, 'reader', 403), + + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, {}, None, 401), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, {}, 'devtable', 403), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, {}, 'freshuser', 403), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'public/publicrepo'}, {}, 'reader', 403), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, None, None, 401), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, None, 'devtable', 404), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, {}, None, 401), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, {}, 'devtable', 200), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, {}, 'freshuser', 403), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'devtable/shared'}, {}, 'reader', 403), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, None, 'devtable', 404), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryAuthorizedEmail, 'GET', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, {}, None, 401), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, {}, 'devtable', 200), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, {}, 'freshuser', 403), + (RepositoryAuthorizedEmail, 'POST', {'email': 'jschorr@devtable.com', 'repository': 'buynlarge/orgrepo'}, {}, 'reader', 403), + + (RepositoryTokenList, 'GET', {'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryTokenList, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryTokenList, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryTokenList, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryTokenList, 'POST', {'repository': 'public/publicrepo'}, {u'friendlyName': 'R1CN'}, None, 401), + (RepositoryTokenList, 'POST', {'repository': 'public/publicrepo'}, {u'friendlyName': 'R1CN'}, 'devtable', 403), + (RepositoryTokenList, 'POST', {'repository': 'public/publicrepo'}, {u'friendlyName': 'R1CN'}, 'freshuser', 403), + (RepositoryTokenList, 'POST', {'repository': 'public/publicrepo'}, {u'friendlyName': 'R1CN'}, 'reader', 403), + (RepositoryTokenList, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (RepositoryTokenList, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (RepositoryTokenList, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryTokenList, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryTokenList, 'POST', {'repository': 'devtable/shared'}, {u'friendlyName': 'R1CN'}, None, 401), + (RepositoryTokenList, 'POST', {'repository': 'devtable/shared'}, {u'friendlyName': 'R1CN'}, 'devtable', 201), + (RepositoryTokenList, 'POST', {'repository': 'devtable/shared'}, {u'friendlyName': 'R1CN'}, 'freshuser', 403), + (RepositoryTokenList, 'POST', {'repository': 'devtable/shared'}, {u'friendlyName': 'R1CN'}, 'reader', 403), + (RepositoryTokenList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryTokenList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (RepositoryTokenList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryTokenList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (RepositoryTokenList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'friendlyName': 'R1CN'}, None, 401), + (RepositoryTokenList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'friendlyName': 'R1CN'}, 'devtable', 201), + (RepositoryTokenList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'friendlyName': 'R1CN'}, 'freshuser', 403), + (RepositoryTokenList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'friendlyName': 'R1CN'}, 'reader', 403), + + (RepositoryBuildList, 'GET', {'repository': 'public/publicrepo'}, None, None, 200), + (RepositoryBuildList, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 200), + (RepositoryBuildList, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 200), + (RepositoryBuildList, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 200), + (RepositoryBuildList, 'POST', {'repository': 'public/publicrepo'}, {u'file_id': 'UX7K'}, None, 401), + (RepositoryBuildList, 'POST', {'repository': 'public/publicrepo'}, {u'file_id': 'UX7K'}, 'devtable', 403), + (RepositoryBuildList, 'POST', {'repository': 'public/publicrepo'}, {u'file_id': 'UX7K'}, 'freshuser', 403), + (RepositoryBuildList, 'POST', {'repository': 'public/publicrepo'}, {u'file_id': 'UX7K'}, 'reader', 403), + (RepositoryBuildList, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (RepositoryBuildList, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (RepositoryBuildList, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryBuildList, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 200), + (RepositoryBuildList, 'POST', {'repository': 'devtable/shared'}, {u'file_id': 'UX7K'}, None, 401), + (RepositoryBuildList, 'POST', {'repository': 'devtable/shared'}, {u'file_id': 'UX7K'}, 'devtable', 201), + (RepositoryBuildList, 'POST', {'repository': 'devtable/shared'}, {u'file_id': 'UX7K'}, 'freshuser', 403), + (RepositoryBuildList, 'POST', {'repository': 'devtable/shared'}, {u'file_id': 'UX7K'}, 'reader', 403), + (RepositoryBuildList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryBuildList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (RepositoryBuildList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryBuildList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 200), + (RepositoryBuildList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'file_id': 'UX7K'}, None, 401), + (RepositoryBuildList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'file_id': 'UX7K'}, 'devtable', 201), + (RepositoryBuildList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'file_id': 'UX7K'}, 'freshuser', 403), + (RepositoryBuildList, 'POST', {'repository': 'buynlarge/orgrepo'}, {u'file_id': 'UX7K'}, 'reader', 403), + + (RepositoryImageList, 'GET', {'repository': 'public/publicrepo'}, None, None, 200), + (RepositoryImageList, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 200), + (RepositoryImageList, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 200), + (RepositoryImageList, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 200), + (RepositoryImageList, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (RepositoryImageList, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (RepositoryImageList, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryImageList, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 200), + (RepositoryImageList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryImageList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (RepositoryImageList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryImageList, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 200), + + (RepositoryLogs, 'GET', {'repository': 'public/publicrepo'}, None, None, 401), + (RepositoryLogs, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 403), + (RepositoryLogs, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (RepositoryLogs, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 403), + (RepositoryLogs, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (RepositoryLogs, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (RepositoryLogs, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (RepositoryLogs, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 403), + (RepositoryLogs, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (RepositoryLogs, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (RepositoryLogs, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (RepositoryLogs, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + + (UserRobot, 'DELETE', {'robot_shortname': 'robotname'}, None, None, 401), + (UserRobot, 'DELETE', {'robot_shortname': 'robotname'}, None, 'devtable', 400), + (UserRobot, 'DELETE', {'robot_shortname': 'robotname'}, None, 'freshuser', 400), + (UserRobot, 'DELETE', {'robot_shortname': 'robotname'}, None, 'reader', 400), + (UserRobot, 'GET', {'robot_shortname': 'robotname'}, None, None, 401), + (UserRobot, 'GET', {'robot_shortname': 'robotname'}, None, 'devtable', 400), + (UserRobot, 'GET', {'robot_shortname': 'robotname'}, None, 'freshuser', 400), + (UserRobot, 'GET', {'robot_shortname': 'robotname'}, None, 'reader', 400), + (UserRobot, 'PUT', {'robot_shortname': 'robotname'}, {}, None, 401), + (UserRobot, 'PUT', {'robot_shortname': 'robotname'}, {}, 'devtable', 201), + (UserRobot, 'PUT', {'robot_shortname': 'robotname'}, {}, 'freshuser', 201), + (UserRobot, 'PUT', {'robot_shortname': 'robotname'}, {}, 'reader', 201), + + (RegenerateUserRobot, 'POST', {'robot_shortname': 'robotname'}, None, None, 401), + (RegenerateUserRobot, 'POST', {'robot_shortname': 'robotname'}, None, 'devtable', 400), + (RegenerateUserRobot, 'POST', {'robot_shortname': 'robotname'}, None, 'freshuser', 400), + (RegenerateUserRobot, 'POST', {'robot_shortname': 'robotname'}, None, 'reader', 400), + + (RegenerateOrgRobot, 'POST', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, None, 401), + (RegenerateOrgRobot, 'POST', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, 'devtable', 400), + (RegenerateOrgRobot, 'POST', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, 'freshuser', 403), + (RegenerateOrgRobot, 'POST', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, 'reader', 403), + + (UserRobotPermissions, 'GET', {'robot_shortname': 'robotname'}, None, None, 401), + (UserRobotPermissions, 'GET', {'robot_shortname': 'robotname'}, None, 'devtable', 400), + (UserRobotPermissions, 'GET', {'robot_shortname': 'robotname'}, None, 'freshuser', 400), + (UserRobotPermissions, 'GET', {'robot_shortname': 'robotname'}, None, 'reader', 400), + + (OrgRobotPermissions, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, None, 401), + (OrgRobotPermissions, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, 'devtable', 400), + (OrgRobotPermissions, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, 'freshuser', 403), + (OrgRobotPermissions, 'GET', {'orgname': 'buynlarge', 'robot_shortname': 'robotname'}, None, 'reader', 403), + + (Organization, 'DELETE', {'orgname': 'buynlarge'}, {}, None, 401), + (Organization, 'DELETE', {'orgname': 'buynlarge'}, {}, 'devtable', 204), + (Organization, 'DELETE', {'orgname': 'buynlarge'}, {}, 'freshuser', 403), + (Organization, 'DELETE', {'orgname': 'buynlarge'}, {}, 'reader', 403), + (Organization, 'GET', {'orgname': 'buynlarge'}, None, None, 200), + (Organization, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (Organization, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 200), + (Organization, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 200), + (Organization, 'PUT', {'orgname': 'buynlarge'}, {}, None, 401), + (Organization, 'PUT', {'orgname': 'buynlarge'}, {}, 'devtable', 200), + (Organization, 'PUT', {'orgname': 'buynlarge'}, {}, 'freshuser', 403), + (Organization, 'PUT', {'orgname': 'buynlarge'}, {}, 'reader', 403), + + (Repository, 'DELETE', {'repository': 'public/publicrepo'}, None, None, 401), + (Repository, 'DELETE', {'repository': 'public/publicrepo'}, None, 'devtable', 403), + (Repository, 'DELETE', {'repository': 'public/publicrepo'}, None, 'freshuser', 403), + (Repository, 'DELETE', {'repository': 'public/publicrepo'}, None, 'reader', 403), + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, None, 200), + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, 'devtable', 200), + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, 'freshuser', 200), + (Repository, 'GET', {'repository': 'public/publicrepo'}, None, 'reader', 200), + (Repository, 'PUT', {'repository': 'public/publicrepo'}, {u'description': 'WXNG'}, None, 401), + (Repository, 'PUT', {'repository': 'public/publicrepo'}, {u'description': 'WXNG'}, 'devtable', 403), + (Repository, 'PUT', {'repository': 'public/publicrepo'}, {u'description': 'WXNG'}, 'freshuser', 403), + (Repository, 'PUT', {'repository': 'public/publicrepo'}, {u'description': 'WXNG'}, 'reader', 403), + (Repository, 'DELETE', {'repository': 'devtable/shared'}, None, None, 401), + (Repository, 'DELETE', {'repository': 'devtable/shared'}, None, 'devtable', 204), + (Repository, 'DELETE', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (Repository, 'DELETE', {'repository': 'devtable/shared'}, None, 'reader', 403), + (Repository, 'GET', {'repository': 'devtable/shared'}, None, None, 401), + (Repository, 'GET', {'repository': 'devtable/shared'}, None, 'devtable', 200), + (Repository, 'GET', {'repository': 'devtable/shared'}, None, 'freshuser', 403), + (Repository, 'GET', {'repository': 'devtable/shared'}, None, 'reader', 200), + (Repository, 'PUT', {'repository': 'devtable/shared'}, {u'description': 'WXNG'}, None, 401), + (Repository, 'PUT', {'repository': 'devtable/shared'}, {u'description': 'WXNG'}, 'devtable', 200), + (Repository, 'PUT', {'repository': 'devtable/shared'}, {u'description': 'WXNG'}, 'freshuser', 403), + (Repository, 'PUT', {'repository': 'devtable/shared'}, {u'description': 'WXNG'}, 'reader', 403), + (Repository, 'DELETE', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (Repository, 'DELETE', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 204), + (Repository, 'DELETE', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (Repository, 'DELETE', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 403), + (Repository, 'GET', {'repository': 'buynlarge/orgrepo'}, None, None, 401), + (Repository, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'devtable', 200), + (Repository, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'freshuser', 403), + (Repository, 'GET', {'repository': 'buynlarge/orgrepo'}, None, 'reader', 200), + (Repository, 'PUT', {'repository': 'buynlarge/orgrepo'}, {u'description': 'WXNG'}, None, 401), + (Repository, 'PUT', {'repository': 'buynlarge/orgrepo'}, {u'description': 'WXNG'}, 'devtable', 200), + (Repository, 'PUT', {'repository': 'buynlarge/orgrepo'}, {u'description': 'WXNG'}, 'freshuser', 403), + (Repository, 'PUT', {'repository': 'buynlarge/orgrepo'}, {u'description': 'WXNG'}, 'reader', 403), + + (EntitySearch, 'GET', {'prefix': 'R9NZ'}, None, None, 200), + (EntitySearch, 'GET', {'prefix': 'R9NZ'}, None, 'devtable', 200), + (EntitySearch, 'GET', {'prefix': 'R9NZ'}, None, 'freshuser', 200), + (EntitySearch, 'GET', {'prefix': 'R9NZ'}, None, 'reader', 200), + + (ApplicationInformation, 'GET', {'client_id': '3LGI'}, None, None, 404), + (ApplicationInformation, 'GET', {'client_id': '3LGI'}, None, 'devtable', 404), + (ApplicationInformation, 'GET', {'client_id': '3LGI'}, None, 'freshuser', 404), + (ApplicationInformation, 'GET', {'client_id': '3LGI'}, None, 'reader', 404), + + (OrganizationApplications, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrganizationApplications, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrganizationApplications, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrganizationApplications, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + (OrganizationApplications, 'POST', {'orgname': 'buynlarge'}, {u'name': 'foo'}, None, 401), + (OrganizationApplications, 'POST', {'orgname': 'buynlarge'}, {u'name': 'foo'}, 'devtable', 200), + (OrganizationApplications, 'POST', {'orgname': 'buynlarge'}, {u'name': 'foo'}, 'freshuser', 403), + (OrganizationApplications, 'POST', {'orgname': 'buynlarge'}, {u'name': 'foo'}, 'reader', 403), + + (OrganizationApplicationResource, 'DELETE', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, None, 401), + (OrganizationApplicationResource, 'DELETE', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'devtable', 204), + (OrganizationApplicationResource, 'DELETE', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'freshuser', 403), + (OrganizationApplicationResource, 'DELETE', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'reader', 403), + (OrganizationApplicationResource, 'GET', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, None, 401), + (OrganizationApplicationResource, 'GET', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'devtable', 200), + (OrganizationApplicationResource, 'GET', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'freshuser', 403), + (OrganizationApplicationResource, 'GET', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'reader', 403), + (OrganizationApplicationResource, 'PUT', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, {u'redirect_uri': 'foo', u'name': 'foo', u'application_uri': 'foo'}, None, 401), + (OrganizationApplicationResource, 'PUT', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, {u'redirect_uri': 'foo', u'name': 'foo', u'application_uri': 'foo'}, 'devtable', 200), + (OrganizationApplicationResource, 'PUT', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, {u'redirect_uri': 'foo', u'name': 'foo', u'application_uri': 'foo'}, 'freshuser', 403), + (OrganizationApplicationResource, 'PUT', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, {u'redirect_uri': 'foo', u'name': 'foo', u'application_uri': 'foo'}, 'reader', 403), + + (OrganizationApplicationResetClientSecret, 'POST', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, None, 401), + (OrganizationApplicationResetClientSecret, 'POST', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'devtable', 200), + (OrganizationApplicationResetClientSecret, 'POST', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'freshuser', 403), + (OrganizationApplicationResetClientSecret, 'POST', {'orgname': 'buynlarge', 'client_id': 'deadbeef'}, None, 'reader', 403), + + (Users, 'GET', {'username': 'devtable'}, None, None, 200), + + (UserNotificationList, 'GET', None, None, None, 401), + (UserNotificationList, 'GET', None, None, 'devtable', 200), + (UserNotificationList, 'GET', None, None, 'freshuser', 200), + (UserNotificationList, 'GET', None, None, 'reader', 200), + + (UserAuthorizationList, 'GET', None, None, None, 401), + (UserAuthorizationList, 'GET', None, None, 'devtable', 200), + (UserAuthorizationList, 'GET', None, None, 'freshuser', 200), + (UserAuthorizationList, 'GET', None, None, 'reader', 200), + + (UserAuthorization, 'DELETE', {'access_token_uuid': 'fake'}, None, None, 401), + (UserAuthorization, 'DELETE', {'access_token_uuid': 'fake'}, None, 'devtable', 404), + (UserAuthorization, 'DELETE', {'access_token_uuid': 'fake'}, None, 'freshuser', 404), + (UserAuthorization, 'DELETE', {'access_token_uuid': 'fake'}, None, 'reader', 404), + (UserAuthorization, 'GET', {'access_token_uuid': 'fake'}, None, None, 401), + (UserAuthorization, 'GET', {'access_token_uuid': 'fake'}, None, 'devtable', 404), + (UserAuthorization, 'GET', {'access_token_uuid': 'fake'}, None, 'freshuser', 404), + (UserAuthorization, 'GET', {'access_token_uuid': 'fake'}, None, 'reader', 404), + + (UserAggregateLogs, 'GET', None, None, None, 401), + (UserAggregateLogs, 'GET', None, None, 'devtable', 200), + (UserAggregateLogs, 'GET', None, None, 'freshuser', 200), + (UserAggregateLogs, 'GET', None, None, 'reader', 200), + + (OrgAggregateLogs, 'GET', {'orgname': 'buynlarge'}, None, None, 401), + (OrgAggregateLogs, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrgAggregateLogs, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrgAggregateLogs, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + + (RepositoryAggregateLogs, 'GET', {'repository': 'devtable/simple'}, None, None, 401), + (RepositoryAggregateLogs, 'GET', {'repository': 'devtable/simple'}, None, 'devtable', 200), + (RepositoryAggregateLogs, 'GET', {'repository': 'devtable/simple'}, None, 'freshuser', 403), + (RepositoryAggregateLogs, 'GET', {'repository': 'devtable/simple'}, None, 'reader', 403), + + (SuperUserAggregateLogs, 'GET', None, None, None, 401), + (SuperUserAggregateLogs, 'GET', None, None, 'devtable', 200), + (SuperUserAggregateLogs, 'GET', None, None, 'freshuser', 403), + (SuperUserAggregateLogs, 'GET', None, None, 'reader', 403), + + (SuperUserLogs, 'GET', None, None, None, 401), + (SuperUserLogs, 'GET', None, None, 'devtable', 200), + (SuperUserLogs, 'GET', None, None, 'freshuser', 403), + (SuperUserLogs, 'GET', None, None, 'reader', 403), + + (SuperUserSendRecoveryEmail, 'POST', {'username': 'someuser'}, None, None, 401), + (SuperUserSendRecoveryEmail, 'POST', {'username': 'someuser'}, None, 'devtable', 404), + (SuperUserSendRecoveryEmail, 'POST', {'username': 'someuser'}, None, 'freshuser', 403), + (SuperUserSendRecoveryEmail, 'POST', {'username': 'someuser'}, None, 'reader', 403), + + (SuperUserTakeOwnership, 'POST', {'namespace': 'invalidnamespace'}, {}, None, 401), + (SuperUserTakeOwnership, 'POST', {'namespace': 'invalidnamespace'}, {}, 'devtable', 404), + (SuperUserTakeOwnership, 'POST', {'namespace': 'invalidnamespace'}, {}, 'freshuser', 403), + (SuperUserTakeOwnership, 'POST', {'namespace': 'invalidnamespace'}, {}, 'reader', 403), + + (SuperUserServiceKeyApproval, 'POST', {'kid': 1234}, {}, None, 401), + (SuperUserServiceKeyApproval, 'POST', {'kid': 1234}, {}, 'devtable', 404), + (SuperUserServiceKeyApproval, 'POST', {'kid': 1234}, {}, 'freshuser', 403), + (SuperUserServiceKeyApproval, 'POST', {'kid': 1234}, {}, 'reader', 403), + + (SuperUserServiceKeyManagement, 'GET', None, None, None, 401), + (SuperUserServiceKeyManagement, 'GET', None, None, 'devtable', 200), + (SuperUserServiceKeyManagement, 'GET', None, None, 'freshuser', 403), + (SuperUserServiceKeyManagement, 'GET', None, None, 'reader', 403), + (SuperUserServiceKeyManagement, 'POST', None, {'expiration': None, 'service': 'someservice'}, None, 401), + (SuperUserServiceKeyManagement, 'POST', None, {'expiration': None, 'service': 'someservice'}, 'devtable', 200), + (SuperUserServiceKeyManagement, 'POST', None, {'expiration': None, 'service': 'someservice'}, 'freshuser', 403), + (SuperUserServiceKeyManagement, 'POST', None, {'expiration': None, 'service': 'someservice'}, 'reader', 403), + + (SuperUserServiceKey, 'DELETE', {'kid': 1234}, None, None, 401), + (SuperUserServiceKey, 'DELETE', {'kid': 1234}, None, 'devtable', 404), + (SuperUserServiceKey, 'DELETE', {'kid': 1234}, None, 'freshuser', 403), + (SuperUserServiceKey, 'DELETE', {'kid': 1234}, None, 'reader', 403), + (SuperUserServiceKey, 'GET', {'kid': 1234}, None, None, 401), + (SuperUserServiceKey, 'GET', {'kid': 1234}, None, 'devtable', 404), + (SuperUserServiceKey, 'GET', {'kid': 1234}, None, 'freshuser', 403), + (SuperUserServiceKey, 'GET', {'kid': 1234}, None, 'reader', 403), + (SuperUserServiceKey, 'PUT', {'kid': 1234}, {}, None, 401), + (SuperUserServiceKey, 'PUT', {'kid': 1234}, {}, 'devtable', 404), + (SuperUserServiceKey, 'PUT', {'kid': 1234}, {}, 'freshuser', 403), + (SuperUserServiceKey, 'PUT', {'kid': 1234}, {}, 'reader', 403), + + (TeamMemberInvite, 'DELETE', {'code': 'foobarbaz'}, None, None, 401), + (TeamMemberInvite, 'DELETE', {'code': 'foobarbaz'}, None, 'devtable', 400), + (TeamMemberInvite, 'DELETE', {'code': 'foobarbaz'}, None, 'freshuser', 400), + (TeamMemberInvite, 'DELETE', {'code': 'foobarbaz'}, None, 'reader', 400), + (TeamMemberInvite, 'PUT', {'code': 'foobarbaz'}, None, None, 401), + (TeamMemberInvite, 'PUT', {'code': 'foobarbaz'}, None, 'devtable', 400), + (TeamMemberInvite, 'PUT', {'code': 'foobarbaz'}, None, 'freshuser', 400), + (TeamMemberInvite, 'PUT', {'code': 'foobarbaz'}, None, 'reader', 400), + + (ConductSearch, 'GET', None, None, None, 200), + (ConductSearch, 'GET', None, None, 'devtable', 200), + + (ChangeLog, 'GET', None, None, None, 401), + (ChangeLog, 'GET', None, None, 'devtable', 200), + (ChangeLog, 'GET', None, None, 'freshuser', 403), + (ChangeLog, 'GET', None, None, 'reader', 403), + + (SuperUserOrganizationList, 'GET', None, None, None, 401), + (SuperUserOrganizationList, 'GET', None, None, 'devtable', 200), + (SuperUserOrganizationList, 'GET', None, None, 'freshuser', 403), + (SuperUserOrganizationList, 'GET', None, None, 'reader', 403), + + (SuperUserOrganizationManagement, 'DELETE', {'name': 'buynlarge'}, None, None, 401), + (SuperUserOrganizationManagement, 'DELETE', {'name': 'buynlarge'}, None, 'devtable', 204), + (SuperUserOrganizationManagement, 'DELETE', {'name': 'buynlarge'}, None, 'freshuser', 403), + (SuperUserOrganizationManagement, 'DELETE', {'name': 'buynlarge'}, None, 'reader', 403), + (SuperUserOrganizationManagement, 'PUT', {'name': 'buynlarge'}, {}, None, 401), + (SuperUserOrganizationManagement, 'PUT', {'name': 'buynlarge'}, {}, 'devtable', 200), + (SuperUserOrganizationManagement, 'PUT', {'name': 'buynlarge'}, {}, 'freshuser', 403), + (SuperUserOrganizationManagement, 'PUT', {'name': 'buynlarge'}, {}, 'reader', 403), + + (SuperUserList, 'GET', None, None, None, 401), + (SuperUserList, 'GET', None, None, 'devtable', 200), + (SuperUserList, 'GET', None, None, 'freshuser', 403), + (SuperUserList, 'GET', None, None, 'reader', 403), + + (SuperUserList, 'POST', None, {'username': 'foo'}, None, 401), + (SuperUserList, 'POST', None, {'username': 'foo'}, 'devtable', 400), + (SuperUserList, 'POST', None, {'username': 'foo'}, 'freshuser', 403), + (SuperUserList, 'POST', None, {'username': 'foo'}, 'reader', 403), + + (SuperUserCustomCertificates, 'GET', None, None, None, 401), + (SuperUserCustomCertificates, 'GET', None, None, 'devtable', 200), + (SuperUserCustomCertificates, 'GET', None, None, 'freshuser', 403), + (SuperUserCustomCertificates, 'GET', None, None, 'reader', 403), + + (SuperUserSystemLogServices, 'GET', None, None, None, 401), + (SuperUserSystemLogServices, 'GET', None, None, 'devtable', 200), + (SuperUserSystemLogServices, 'GET', None, None, 'freshuser', 403), + (SuperUserSystemLogServices, 'GET', None, None, 'reader', 403), + + (SuperUserGetLogsForService, 'GET', {'service': 'foo'}, None, None, 401), + (SuperUserGetLogsForService, 'GET', {'service': 'foo'}, None, 'devtable', 404), + (SuperUserGetLogsForService, 'GET', {'service': 'foo'}, None, 'freshuser', 403), + (SuperUserGetLogsForService, 'GET', {'service': 'foo'}, None, 'reader', 403), + + (SuperUserCustomCertificate, 'DELETE', {'certpath': 'somecert.crt'}, None, None, 401), + (SuperUserCustomCertificate, 'DELETE', {'certpath': 'somecert.crt'}, None, 'devtable', 204), + (SuperUserCustomCertificate, 'DELETE', {'certpath': 'somecert.crt'}, None, 'freshuser', 403), + (SuperUserCustomCertificate, 'DELETE', {'certpath': 'somecert.crt'}, None, 'reader', 403), + (SuperUserCustomCertificate, 'POST', {'certpath': 'somecert.crt'}, None, None, 401), + (SuperUserCustomCertificate, 'POST', {'certpath': 'somecert.crt'}, None, 'devtable', 400), + (SuperUserCustomCertificate, 'POST', {'certpath': 'somecert.crt'}, None, 'freshuser', 403), + (SuperUserCustomCertificate, 'POST', {'certpath': 'somecert.crt'}, None, 'reader', 403), + + (SuperUserManagement, 'DELETE', {'username': 'freshuser'}, None, None, 401), + (SuperUserManagement, 'DELETE', {'username': 'freshuser'}, None, 'devtable', 204), + (SuperUserManagement, 'DELETE', {'username': 'freshuser'}, None, 'freshuser', 403), + (SuperUserManagement, 'DELETE', {'username': 'freshuser'}, None, 'reader', 403), + (SuperUserManagement, 'GET', {'username': 'freshuser'}, None, None, 401), + (SuperUserManagement, 'GET', {'username': 'freshuser'}, None, 'devtable', 200), + (SuperUserManagement, 'GET', {'username': 'freshuser'}, None, 'freshuser', 403), + (SuperUserManagement, 'GET', {'username': 'freshuser'}, None, 'reader', 403), + (SuperUserManagement, 'PUT', {'username': 'freshuser'}, {}, None, 401), + (SuperUserManagement, 'PUT', {'username': 'freshuser'}, {}, 'devtable', 200), + (SuperUserManagement, 'PUT', {'username': 'freshuser'}, {}, 'freshuser', 403), + (SuperUserManagement, 'PUT', {'username': 'freshuser'}, {}, 'reader', 403), + + (GlobalUserMessages, 'GET', None, None, None, 200), + + (GlobalUserMessages, 'POST', None, None, None, 401), + (GlobalUserMessages, 'POST', None, {'message': {'content': 'msg', 'media_type': 'text/plain', 'severity': 'info'}}, 'devtable', 201), + (GlobalUserMessages, 'POST', None, {'message': {'content': 'msg', 'media_type': 'text/plain', 'severity': 'info'}}, 'freshuser', 403), + (GlobalUserMessages, 'POST', None, {'message': {'content': 'msg', 'media_type': 'text/plain', 'severity': 'info'}}, 'reader', 403), + + (GlobalUserMessage, 'DELETE', {'uuid': '1234'}, None, None, 401), + (GlobalUserMessage, 'DELETE', {'uuid': '1234'}, None, 'devtable', 204), + (GlobalUserMessage, 'DELETE', {'uuid': '1234'}, None, 'freshuser', 403), + (GlobalUserMessage, 'DELETE', {'uuid': '1234'}, None, 'reader', 403), + + (UserInvoiceFieldList, 'GET', None, None, None, 401), + (UserInvoiceFieldList, 'GET', None, None, 'devtable', 200), + (UserInvoiceFieldList, 'GET', None, None, 'freshuser', 404), + (UserInvoiceFieldList, 'GET', None, None, 'reader', 404), + (UserInvoiceFieldList, 'POST', None, None, None, 401), + (UserInvoiceFieldList, 'POST', None, {'value': 'bar', 'title': 'foo'}, 'devtable', 200), + (UserInvoiceFieldList, 'POST', None, {'value': 'bar', 'title': 'foo'}, 'freshuser', 404), + (UserInvoiceFieldList, 'POST', None, {'value': 'bar', 'title': 'foo'}, 'reader', 404), + + (UserInvoiceField, 'DELETE', {'field_uuid': '1234'}, None, None, 401), + (UserInvoiceField, 'DELETE', {'field_uuid': '1234'}, None, 'devtable', 201), + (UserInvoiceField, 'DELETE', {'field_uuid': '1234'}, None, 'freshuser', 404), + (UserInvoiceField, 'DELETE', {'field_uuid': '1234'}, None, 'reader', 404), + + (OrganizationInvoiceFieldList, 'GET', {'orgname': 'buynlarge'}, None, None, 403), + (OrganizationInvoiceFieldList, 'GET', {'orgname': 'buynlarge'}, None, 'devtable', 200), + (OrganizationInvoiceFieldList, 'GET', {'orgname': 'buynlarge'}, None, 'freshuser', 403), + (OrganizationInvoiceFieldList, 'GET', {'orgname': 'buynlarge'}, None, 'reader', 403), + (OrganizationInvoiceFieldList, 'POST', {'orgname': 'buynlarge'}, {'value': 'bar', 'title': 'foo'}, None, 403), + (OrganizationInvoiceFieldList, 'POST', {'orgname': 'buynlarge'}, {'value': 'bar', 'title': 'foo'}, 'devtable', 200), + (OrganizationInvoiceFieldList, 'POST', {'orgname': 'buynlarge'}, {'value': 'bar', 'title': 'foo'}, 'freshuser', 403), + (OrganizationInvoiceFieldList, 'POST', {'orgname': 'buynlarge'}, {'value': 'bar', 'title': 'foo'}, 'reader', 403), + + (OrganizationInvoiceField, 'DELETE', {'orgname': 'buynlarge', 'field_uuid': '1234'}, None, None, 403), + (OrganizationInvoiceField, 'DELETE', {'orgname': 'buynlarge', 'field_uuid': '1234'}, None, 'devtable', 201), + (OrganizationInvoiceField, 'DELETE', {'orgname': 'buynlarge', 'field_uuid': '1234'}, None, 'freshuser', 403), + (OrganizationInvoiceField, 'DELETE', {'orgname': 'buynlarge', 'field_uuid': '1234'}, None, 'reader', 403), + + (RepositoryImageSecurity, 'GET', {'repository': 'devtable/simple', 'imageid': 'fake'}, None, None, 401), + (RepositoryImageSecurity, 'GET', {'repository': 'devtable/simple', 'imageid': 'fake'}, None, 'devtable', 404), + (RepositoryImageSecurity, 'GET', {'repository': 'devtable/simple', 'imageid': 'fake'}, None, 'freshuser', 403), + (RepositoryImageSecurity, 'GET', {'repository': 'devtable/simple', 'imageid': 'fake'}, None, 'reader', 403), + + (RepositoryManifestSecurity, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, None, 401), + (RepositoryManifestSecurity, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'devtable', 404), + (RepositoryManifestSecurity, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'freshuser', 403), + (RepositoryManifestSecurity, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'reader', 403), + + (RepositoryManifestLabels, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, None, 401), + (RepositoryManifestLabels, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'devtable', 404), + (RepositoryManifestLabels, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'freshuser', 403), + (RepositoryManifestLabels, 'GET', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'reader', 403), + (RepositoryManifestLabels, 'POST', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, {'media_type': 'text/plain', 'value': 'bar', 'key': 'foo'}, None, 401), + (RepositoryManifestLabels, 'POST', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, {'media_type': 'text/plain', 'value': 'bar', 'key': 'foo'}, 'devtable', 404), + (RepositoryManifestLabels, 'POST', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, {'media_type': 'text/plain', 'value': 'bar', 'key': 'foo'}, 'freshuser', 403), + (RepositoryManifestLabels, 'POST', {'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, {'media_type': 'text/plain', 'value': 'bar', 'key': 'foo'}, 'reader', 403), + + (ManageRepositoryManifestLabel, 'GET', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, None, 401), + (ManageRepositoryManifestLabel, 'GET', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'devtable', 404), + (ManageRepositoryManifestLabel, 'GET', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'freshuser', 403), + (ManageRepositoryManifestLabel, 'GET', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'reader', 403), + + (ManageRepositoryManifestLabel, 'DELETE', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, None, 401), + (ManageRepositoryManifestLabel, 'DELETE', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'devtable', 404), + (ManageRepositoryManifestLabel, 'DELETE', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'freshuser', 403), + (ManageRepositoryManifestLabel, 'DELETE', {'labelid': 'someid', 'manifestref': 'sha256:abcd', 'repository': 'devtable/simple'}, None, 'reader', 403), + + (InviteTeamMember, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, None, 401), + (InviteTeamMember, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, 'devtable', 200), + (InviteTeamMember, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, 'freshuser', 403), + (InviteTeamMember, 'PUT', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, 'reader', 403), + + (InviteTeamMember, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, None, 401), + (InviteTeamMember, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, 'devtable', 404), + (InviteTeamMember, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, 'freshuser', 403), + (InviteTeamMember, 'DELETE', {'orgname': 'buynlarge', 'teamname': 'owners', 'email': 'a@example.com'}, None, 'reader', 403), + + (TestRepositoryNotification, 'POST', {'repository': 'buynlarge/orgrepo', 'uuid': 'foo'}, None, None, 401), + (TestRepositoryNotification, 'POST', {'repository': 'buynlarge/orgrepo', 'uuid': 'foo'}, None, 'devtable', 400), + (TestRepositoryNotification, 'POST', {'repository': 'buynlarge/orgrepo', 'uuid': 'foo'}, None, 'freshuser', 403), + (TestRepositoryNotification, 'POST', {'repository': 'buynlarge/orgrepo', 'uuid': 'foo'}, None, 'reader', 403), + + (LinkExternalEntity, 'POST', {'username': 'foo'}, None, None, 404), + + (BuildTriggerSourceNamespaces, 'GET', {'repository': 'devtable/simple', 'trigger_uuid': 'foo'}, None, None, 401), + (BuildTriggerSourceNamespaces, 'GET', {'repository': 'devtable/simple', 'trigger_uuid': 'foo'}, None, 'devtable', 404), + (BuildTriggerSourceNamespaces, 'GET', {'repository': 'devtable/simple', 'trigger_uuid': 'foo'}, None, 'freshuser', 403), + (BuildTriggerSourceNamespaces, 'GET', {'repository': 'devtable/simple', 'trigger_uuid': 'foo'}, None, 'reader', 403), +] + +@pytest.mark.parametrize('resource,method,params,body,identity,expected', SECURITY_TESTS) def test_api_security(resource, method, params, body, identity, expected, client): with client_with_identity(identity, client) as cl: conduct_api_call(cl, resource, method, params, body, expected) +ALLOWED_MISSING_MODULES = {'endpoints.api.suconfig', 'endpoints.api.error', 'data.userfiles'} + +def test_all_apis_tested(app): + required_tests = set() + + for rule in app.url_map.iter_rules(): + endpoint_method = app.view_functions[rule.endpoint] + + # Verify that we have a view class for this API method. + if not 'view_class' in dir(endpoint_method): + continue + + view_class = endpoint_method.view_class + if view_class.__module__ in ALLOWED_MISSING_MODULES: + continue + + method_names = list(rule.methods.difference(['HEAD', 'OPTIONS'])) + full_name = '%s.%s' % (view_class.__module__, view_class.__name__) + for method_name in method_names: + required_tests.add('%s::%s' % (full_name, method_name.upper())) + + assert required_tests + + for test in SECURITY_TESTS: + view_class = test[0] + required_tests.discard('%s.%s::%s' % (view_class.__module__, view_class.__name__, + test[1].upper())) + + assert not required_tests, "API security tests missing for: %s" % required_tests + + @pytest.mark.parametrize('is_superuser', [ (True), (False), diff --git a/endpoints/test/shared.py b/endpoints/test/shared.py index 7b540abde..115149fe4 100644 --- a/endpoints/test/shared.py +++ b/endpoints/test/shared.py @@ -14,11 +14,11 @@ CSRF_TOKEN = '123csrfforme' @contextmanager def client_with_identity(auth_username, client): with client.session_transaction() as sess: + sess[CSRF_TOKEN_KEY] = CSRF_TOKEN if auth_username and auth_username is not None: loaded = model.user.get_user(auth_username) sess['user_id'] = loaded.uuid sess['login_time'] = datetime.datetime.now() - sess[CSRF_TOKEN_KEY] = CSRF_TOKEN else: sess['user_id'] = 'anonymous' diff --git a/test/fixtures.py b/test/fixtures.py index 68e461510..ce6a339e2 100644 --- a/test/fixtures.py +++ b/test/fixtures.py @@ -7,6 +7,7 @@ import shutil from flask import Flask, jsonify from flask_login import LoginManager from flask_principal import identity_loaded, Permission, Identity, identity_changed, Principal +from flask_mail import Mail from peewee import SqliteDatabase, savepoint, InternalError from app import app as application @@ -14,6 +15,7 @@ from auth.permissions import on_identity_loaded from data import model from data.database import close_db_filter, db, configure from data.model.user import LoginWrappedDBUser +from data.userfiles import Userfiles from endpoints.api import api_bp from endpoints.appr import appr_bp from endpoints.web import web @@ -124,6 +126,9 @@ def appconfig(database_uri): "DATA_MODEL_CACHE_CONFIG": { 'engine': 'inmemory', }, + "USERFILES_PATH": "userfiles/", + "MAIL_SERVER": "", + "MAIL_DEFAULT_SENDER": 'support@quay.io', } return conf @@ -192,4 +197,8 @@ def app(appconfig, initialized_db): app.register_blueprint(webhooks, url_prefix='/webhooks') app.config.update(appconfig) + + Userfiles(app) + Mail(app) + return app diff --git a/test/test_api_security.py b/test/test_api_security.py deleted file mode 100644 index 0835ed3a9..000000000 --- a/test/test_api_security.py +++ /dev/null @@ -1,4456 +0,0 @@ -import unittest -import json -import datetime - -from urllib import urlencode -from urlparse import urlparse, urlunparse, parse_qs - -from app import app -from data import model -from initdb import setup_database_for_testing, finished_database_for_testing -from endpoints.api import api_bp, api - -from endpoints.api.team import (TeamMember, TeamMemberList, OrganizationTeam, TeamMemberInvite, - TeamPermissions) -from endpoints.api.tag import RepositoryTagImages, RepositoryTag, ListRepositoryTags, RestoreTag -from endpoints.api.search import EntitySearch -from endpoints.api.image import RepositoryImage, RepositoryImageList -from endpoints.api.build import (FileDropResource, RepositoryBuildStatus, RepositoryBuildLogs, - RepositoryBuildList, RepositoryBuildResource) -from endpoints.api.robot import (UserRobotList, OrgRobot, OrgRobotList, UserRobot, - RegenerateOrgRobot, RegenerateUserRobot, UserRobotPermissions, - OrgRobotPermissions) -from endpoints.api.trigger import (BuildTriggerActivate, BuildTriggerSources, BuildTriggerSubdirs, - TriggerBuildList, ActivateBuildTrigger, BuildTrigger, - BuildTriggerList, BuildTriggerAnalyze, BuildTriggerFieldValues) -from endpoints.api.repoemail import RepositoryAuthorizedEmail -from endpoints.api.repositorynotification import RepositoryNotification, RepositoryNotificationList -from endpoints.api.user import (PrivateRepositories, ConvertToOrganization, Recovery, Signout, - Signin, User, UserAuthorizationList, UserAuthorization, UserNotification, - VerifyUser, DetachExternal, StarredRepositoryList, StarredRepository, - ClientKey, ExternalLoginInformation) -from endpoints.api.repotoken import RepositoryToken, RepositoryTokenList -from endpoints.api.prototype import PermissionPrototype, PermissionPrototypeList -from endpoints.api.logs import UserLogs, OrgLogs, RepositoryLogs -from endpoints.api.billing import (UserInvoiceList, UserCard, UserPlan, ListPlans, - OrganizationInvoiceList, OrganizationCard, OrganizationPlan, - UserInvoiceFieldList, UserInvoiceField, - OrganizationInvoiceFieldList, OrganizationInvoiceField) -from endpoints.api.discovery import DiscoveryResource -from endpoints.api.organization import (OrganizationList, OrganizationMember, - OrgPrivateRepositories, OrganizationMemberList, - Organization, ApplicationInformation, - OrganizationApplications, OrganizationApplicationResource, - OrganizationApplicationResetClientSecret) -from endpoints.api.repository import RepositoryList, RepositoryVisibility, Repository -from endpoints.api.permission import (RepositoryUserPermission, RepositoryTeamPermission, - RepositoryTeamPermissionList, RepositoryUserPermissionList, - RepositoryUserTransitivePermission) -from endpoints.api.superuser import (SuperUserLogs, SuperUserList, SuperUserManagement, - SuperUserSendRecoveryEmail, ChangeLog, - SuperUserOrganizationManagement, SuperUserOrganizationList, - SuperUserAggregateLogs, SuperUserServiceKeyManagement, - SuperUserServiceKey, SuperUserServiceKeyApproval, - SuperUserTakeOwnership, - SuperUserCustomCertificates, - SuperUserCustomCertificate, SuperUserRepositoryBuildLogs, - SuperUserRepositoryBuildResource, SuperUserRepositoryBuildStatus) -from endpoints.api.globalmessages import GlobalUserMessage, GlobalUserMessages -from endpoints.api.secscan import RepositoryImageSecurity, RepositoryManifestSecurity -from endpoints.api.manifest import RepositoryManifestLabels, ManageRepositoryManifestLabel - - -try: - app.register_blueprint(api_bp, url_prefix='/api') -except ValueError: - # This blueprint was already registered - pass - -CSRF_TOKEN_KEY = '_csrf_token' -CSRF_TOKEN = '123csrfforme' - - -class ApiTestCase(unittest.TestCase): - @staticmethod - def _add_csrf(without_csrf): - parts = urlparse(without_csrf) - query = parse_qs(parts[4]) - query[CSRF_TOKEN_KEY] = CSRF_TOKEN - return urlunparse(list(parts[0:4]) + [urlencode(query)] + list(parts[5:])) - - def _set_url(self, resource, **url_params): - with app.test_request_context(): - self.url = api.url_for(resource, **url_params) - - def _run_test(self, method, expected_status, auth_username=None, request_body=None): - with app.test_client() as client: - # Temporarily remove the teardown functions - teardown_funcs = [] - if None in app.teardown_request_funcs: - teardown_funcs = app.teardown_request_funcs[None] - app.teardown_request_funcs[None] = [] - - with client.session_transaction() as sess: - if auth_username: - loaded = model.user.get_user(auth_username) - sess['user_id'] = loaded.uuid - sess['login_time'] = datetime.datetime.now() - sess[CSRF_TOKEN_KEY] = CSRF_TOKEN - - # Restore the teardown functions - app.teardown_request_funcs[None] = teardown_funcs - - open_kwargs = { - 'method': method - } - - final_url = self.url - if method != 'GET' and method != 'HEAD': - final_url = self._add_csrf(self.url) - - open_kwargs.update({ - 'data': json.dumps(request_body), - 'content_type': 'application/json', - }) - - rv = client.open(final_url, **open_kwargs) - msg = '%s %s: %s expected: %s' % (method, final_url, rv.status_code, expected_status) - if rv.status_code != expected_status: - print rv.data - - self.assertEqual(rv.status_code, expected_status, msg) - - def setUp(self): - setup_database_for_testing(self) - - def tearDown(self): - finished_database_for_testing(self) - - -class TestUserStarredRepositoryList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(StarredRepositoryList) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'namespace': 'public', - u'repository': 'publicrepo'}) - - def test_post_freshuser(self): - self._run_test('POST', 201, 'freshuser', {u'namespace': 'public', - u'repository': 'publicrepo'}) - - def test_post_reader(self): - self._run_test('POST', 201, 'reader', {u'namespace': 'public', - u'repository': 'publicrepo'}) - - def test_post_devtable(self): - self._run_test('POST', 201, 'devtable', {u'namespace': 'public', - u'repository': 'publicrepo'}) - - -class TestUserStarredRepository(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(StarredRepository, repository="public/publicrepo") - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 204, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 204, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestUserNotification(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserNotification, uuid='someuuid') - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {}) - - def test_put_freshuser(self): - self._run_test('PUT', 404, 'freshuser', {}) - - def test_put_reader(self): - self._run_test('PUT', 404, 'reader', {}) - - def test_put_devtable(self): - self._run_test('PUT', 404, 'devtable', {}) - - -class TestUserInvoiceList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserInvoiceList) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestPrivateRepositories(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(PrivateRepositories) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestConvertToOrganization(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ConvertToOrganization) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'plan': '1RB4', u'adminUser': '44E8', - u'adminPassword': 'IQTM'}) - - def test_post_freshuser(self): - self._run_test('POST', 400, 'freshuser', {u'plan': '1RB4', u'adminUser': '44E8', - u'adminPassword': 'IQTM'}) - - def test_post_reader(self): - self._run_test('POST', 400, 'reader', {u'plan': '1RB4', u'adminUser': '44E8', - u'adminPassword': 'IQTM'}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {u'plan': '1RB4', u'adminUser': '44E8', - u'adminPassword': 'IQTM'}) - - -class TestUserRobotList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserRobotList) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestUserCard(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserCard) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'token': 'ORH4'}) - - -class TestUserPlan(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserPlan) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'plan': '1QIK'}) - - -class TestUserLogs(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserLogs) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestOrganizationList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationList) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'name': 'KSIS', u'email': 'DHVZ'}) - - def test_post_freshuser(self): - self._run_test('POST', 400, 'freshuser', {u'name': 'KSIS', u'email': 'DHVZ'}) - - def test_post_reader(self): - self._run_test('POST', 400, 'reader', {u'name': 'KSIS', u'email': 'DHVZ'}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {u'name': 'KSIS', u'email': 'DHVZ'}) - - -class TestPublicRepository(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Repository, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryList) - - def test_get_anonymous(self): - self._run_test('GET', 400, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 400, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 400, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 400, None, {u'visibility': u'public', u'repository': 'XZGB', - u'description': '0O8U'}) - - def test_post_freshuser(self): - self._run_test('POST', 201, 'freshuser', {u'visibility': u'public', u'repository': 'XZGB', - u'description': '0O8U'}) - - def test_post_reader(self): - self._run_test('POST', 201, 'reader', {u'visibility': u'public', u'repository': 'XZGB', - u'description': '0O8U'}) - - def test_post_devtable(self): - self._run_test('POST', 201, 'devtable', {u'visibility': u'public', u'repository': 'XZGB', - u'description': '0O8U'}) - - -class TestDiscoveryResource(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(DiscoveryResource) - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestFileDropResource(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(FileDropResource) - - def test_post_anonymous(self): - self._run_test('POST', 200, None, {u'mimeType': 'TKBX'}) - - def test_post_freshuser(self): - self._run_test('POST', 200, 'freshuser', {u'mimeType': 'TKBX'}) - - def test_post_reader(self): - self._run_test('POST', 200, 'reader', {u'mimeType': 'TKBX'}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {u'mimeType': 'TKBX'}) - - -class TestRecovery(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Recovery) - - def test_post_anonymous(self): - self._run_test('POST', 200, None, {u'email': '826S'}) - - def test_post_freshuser(self): - self._run_test('POST', 200, 'freshuser', {u'email': '826S'}) - - def test_post_reader(self): - self._run_test('POST', 200, 'reader', {u'email': '826S'}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {u'email': '826S'}) - - -class TestSignout(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Signout) - - def test_post_anonymous(self): - self._run_test('POST', 200, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 200, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 200, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', None) - - -class TestSignin(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Signin) - - def test_post_anonymous(self): - self._run_test('POST', 403, None, {u'username': 'E9RY', u'password': 'LQ0N'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'username': 'E9RY', u'password': 'LQ0N'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'username': 'E9RY', u'password': 'LQ0N'}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {u'username': 'E9RY', u'password': 'LQ0N'}) - - -class TestExternalLoginInformation(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ExternalLoginInformation, service_id='someservice') - - def test_post_anonymous(self): - self._run_test('POST', 400, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 400, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 400, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {}) - - -class TestDetachExternal(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(DetachExternal, service_id='someservice') - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 200, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 200, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {}) - - -class TestVerifyUser(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(VerifyUser) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'password': 'LQ0N'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'password': 'LQ0N'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'password': 'LQ0N'}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {u'password': 'password'}) - - - -class TestClientKey(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ClientKey) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'password': 'LQ0N'}) - - def test_post_freshuser(self): - self._run_test('POST', 400, 'freshuser', {u'password': 'LQ0N'}) - - def test_post_reader(self): - self._run_test('POST', 200, 'reader', {u'password': 'password'}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {u'password': 'password'}) - - - -class TestListPlans(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ListPlans) - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestUser(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(User) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {}) - - def test_put_freshuser(self): - self._run_test('PUT', 200, 'freshuser', {}) - - def test_put_reader(self): - self._run_test('PUT', 200, 'reader', {}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {}) - - def test_post_anonymous(self): - self._run_test('POST', 400, None, {u'username': 'T946', u'password': '0SG4', u'email': 'MENT'}) - - def test_post_freshuser(self): - self._run_test('POST', 400, 'freshuser', {u'username': 'T946', u'password': '0SG4', - u'email': 'MENT'}) - - def test_post_reader(self): - self._run_test('POST', 400, 'reader', {u'username': 'T946', u'password': '0SG4', - u'email': 'MENT'}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {u'username': 'T946', u'password': '0SG4', - u'email': 'MENT'}) - - -class TestTeamMemberBuynlargeDevtableReaders(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TeamMember, orgname="buynlarge", membername="devtable", teamname="readers") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, None) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', None) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', None) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestTeamMemberBuynlargeDevtableOwners(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TeamMember, orgname="buynlarge", membername="devtable", teamname="owners") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, None) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', None) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', None) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestTeamPermissionsBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TeamPermissions, orgname="buynlarge", teamname="readers") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestTeamMemberListBuynlargeReaders(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TeamMemberList, orgname="buynlarge", teamname="readers") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestTeamMemberListBuynlargeOwners(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TeamMemberList, orgname="buynlarge", teamname="owners") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryUserPermissionA2o9PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryUserPermission, username="A2O9", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 403, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryUserPermissionA2o9DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryUserPermission, username="A2O9", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryUserPermissionA2o9BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryUserPermission, username="A2O9", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryTeamPermissionReadersPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermission, teamname="readers", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 403, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryTeamPermissionReadersDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermission, teamname="readers", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryTeamPermissionReadersBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermission, teamname="readers", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestRepositoryTeamPermissionOwnersPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermission, teamname="owners", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 403, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryTeamPermissionOwnersDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermission, teamname="owners", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryTeamPermissionOwnersBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermission, teamname="owners", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestBuildTriggerActivateSwo1PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerActivate, trigger_uuid="SWO1", repository="public/publicrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {}) - - -class TestBuildTriggerActivateSwo1DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerActivate, trigger_uuid="SWO1", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - - -class TestBuildTriggerActivateSwo1BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerActivate, trigger_uuid="SWO1", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - -class TestBuildTriggerFieldValuesSwo1PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerFieldValues, trigger_uuid="SWO1", repository="public/publicrepo", - field_name="test_field") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {}) - - -class TestBuildTriggerFieldValuesSwo1DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerFieldValues, trigger_uuid="SWO1", repository="devtable/shared", - field_name="test_field") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - - -class TestBuildTriggerFieldValuesSwo1BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerFieldValues, trigger_uuid="SWO1", repository="buynlarge/orgrepo", - field_name="test_field") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - - -class TestBuildTriggerSources831cPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerSources, trigger_uuid="831C", repository="public/publicrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', dict(namespace="foo")) - - -class TestBuildTriggerSources831cDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerSources, trigger_uuid="831C", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', dict(namespace="foo")) - - -class TestBuildTriggerSources831cBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerSources, trigger_uuid="831C", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', dict(namespace="foo")) - - -class TestBuildTriggerSubdirs4i2yPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerSubdirs, trigger_uuid="4I2Y", repository="public/publicrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {}) - - -class TestBuildTriggerSubdirs4i2yDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerSubdirs, trigger_uuid="4I2Y", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {}) - - -class TestBuildTriggerSubdirs4i2yBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerSubdirs, trigger_uuid="4I2Y", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {}) - - -class TestTriggerBuildListZm1wPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TriggerBuildList, trigger_uuid="ZM1W", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - -class TestTriggerBuildListZm1wDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TriggerBuildList, trigger_uuid="ZM1W", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestTriggerBuildListZm1wBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TriggerBuildList, trigger_uuid="ZM1W", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestActivateBuildTrigger0byePublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ActivateBuildTrigger, trigger_uuid="0BYE", repository="public/publicrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', None) - - -class TestActivateBuildTrigger0byeDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ActivateBuildTrigger, trigger_uuid="0BYE", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', None) - - -class TestActivateBuildTrigger0byeBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ActivateBuildTrigger, trigger_uuid="0BYE", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', None) - -class TestActivateBuildTrigger0byeDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ActivateBuildTrigger, trigger_uuid="0BYE", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {}) - - -class TestActivateBuildTrigger0byeBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ActivateBuildTrigger, trigger_uuid="0BYE", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {}) - - -class TestBuildTriggerAnalyze0byePublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerAnalyze, trigger_uuid="0BYE", repository="public/publicrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {'config': {}}) - - -class TestBuildTriggerAnalyze0byeDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerAnalyze, trigger_uuid="0BYE", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - - -class TestBuildTriggerAnalyze0byeBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerAnalyze, trigger_uuid="0BYE", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - -class TestBuildTriggerAnalyze0byeDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerAnalyze, trigger_uuid="0BYE", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - - -class TestBuildTriggerAnalyze0byeBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerAnalyze, trigger_uuid="0BYE", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {'config': {}}) - - -class TestRepositoryBuildStatusFg86PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildStatus, build_uuid="FG86", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 400, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 400, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 400, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - -class TestRepositoryBuildStatusFg86DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildStatus, build_uuid="FG86", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 400, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - -class TestRepositoryBuildStatusFg86BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildStatus, build_uuid="FG86", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 400, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - -class TestRepositoryBuildResourceFg86PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildResource, build_uuid="FG86", repository="public/publicrepo") - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryBuildResourceFg86DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildResource, build_uuid="FG86", repository="devtable/shared") - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -class TestRepositoryBuildResourceFg86BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildResource, build_uuid="FG86", repository="buynlarge/orgrepo") - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -class TestRepositoryBuildLogsS5j8PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildLogs, build_uuid="S5J8", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - -class TestRepositoryBuildLogsS5j8DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildLogs, build_uuid="S5J8", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - -class TestRepositoryBuildLogsS5j8BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildLogs, build_uuid="S5J8", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - -class TestListRepositoryTagsTn96PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ListRepositoryTags, tag="TN96", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestListRepositoryTagsTn96DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ListRepositoryTags, tag="TN96", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestListRepositoryTagsTn96BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ListRepositoryTags, tag="TN96", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryTagImagesTn96PublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTagImages, tag="TN96", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 404, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestRepositoryTagImagesTn96DevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTagImages, tag="TN96", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestRepositoryTagImagesTn96BuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTagImages, tag="TN96", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestPermissionPrototypeBuynlargeL24b(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(PermissionPrototype, orgname="buynlarge", prototypeid="L24B") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 404, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -class TestOrganizationMemberBuynlargeDevtable(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationMember, orgname="buynlarge", membername="someuser") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -class TestOrgRobotBuynlargeZ7pd(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrgRobot, orgname="buynlarge", robot_shortname="Z7PD") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, None) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', None) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', None) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', None) - - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestOrganizationTeamBuynlargeReaders(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationTeam, orgname="buynlarge", teamname="readers") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'member'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'member'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'member'}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {u'role': u'member'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestOrganizationTeamBuynlargeOwners(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationTeam, orgname="buynlarge", teamname="owners") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'member'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'member'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'member'}) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', {u'role': u'member'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryTeamPermissionListPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermissionList, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - -class TestRepositoryTeamPermissionListDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermissionList, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryTeamPermissionListBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTeamPermissionList, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryUserPermissionListPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryUserPermissionList, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - -class TestRepositoryUserPermissionListDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryUserPermissionList, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryUserPermissionListBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryUserPermissionList, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestBuildTriggerD6tiPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTrigger, trigger_uuid="D6TI", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestBuildTriggerD6tiDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTrigger, trigger_uuid="D6TI", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -class TestBuildTriggerD6tiBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTrigger, trigger_uuid="D6TI", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -class TestRepositoryNotificationQfatPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryNotification, uuid="QFAT", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryNotificationQfatDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryNotification, uuid="QFAT", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryNotificationQfatBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryNotification, uuid="QFAT", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryTokenUjqbPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryToken, code="UJQB", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 403, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryTokenUjqbDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryToken, code="UJQB", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryTokenUjqbBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryToken, code="UJQB", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'role': u'read'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'role': u'read'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'role': u'read'}) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', {u'role': u'read'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryImage5avqPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryImage, image_id="5AVQ", repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 404, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestRepositoryImage5avqDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryImage, image_id="5AVQ", repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestRepositoryImage5avqBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryImage, image_id="5AVQ", repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestRestoreTagHp8rPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RestoreTag, tag="HP8R", repository="public/publicrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'image': 'WXNG'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'image': 'WXNG'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'image': 'WXNG'}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {u'image': 'WXNG'}) - - -class TestRestoreTagHp8rDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RestoreTag, tag="HP8R", repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'image': 'WXNG'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'image': 'WXNG'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'image': 'WXNG'}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {u'image': 'WXNG'}) - - -class TestRestoreTagHp8rBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RestoreTag, tag="HP8R", repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'image': 'WXNG'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'image': 'WXNG'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'image': 'WXNG'}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {u'image': 'WXNG'}) - - - -class TestRepositoryTagHp8rPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTag, tag="HP8R", repository="public/publicrepo") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'image': 'WXNG'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'image': 'WXNG'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'image': 'WXNG'}) - - def test_put_devtable(self): - self._run_test('PUT', 403, 'devtable', {u'image': 'WXNG'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryTagHp8rDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTag, tag="HP8R", repository="devtable/shared") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'image': 'WXNG'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'image': 'WXNG'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'image': 'WXNG'}) - - def test_put_devtable(self): - self._run_test('PUT', 404, 'devtable', {u'image': 'WXNG'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRepositoryTagHp8rBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTag, tag="HP8R", repository="buynlarge/orgrepo") - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'image': 'WXNG'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'image': 'WXNG'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'image': 'WXNG'}) - - def test_put_devtable(self): - self._run_test('PUT', 404, 'devtable', {u'image': 'WXNG'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestPermissionPrototypeListBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(PermissionPrototypeList, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'role': u'read', - u'delegate': {u'kind': u'user', u'name': '7DGP'}}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'role': u'read', - u'delegate': {u'kind': u'user', u'name': '7DGP'}}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'role': u'read', - u'delegate': {u'kind': u'user', u'name': '7DGP'}}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {u'role': u'read', - u'delegate': {u'kind': u'user', u'name': '7DGP'}}) - - -class TestOrganizationInvoiceListBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationInvoiceList, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestOrgPrivateRepositoriesBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrgPrivateRepositories, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestOrganizationMemberListBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationMemberList, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestOrgRobotListBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrgRobotList, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestOrganizationCardBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationCard, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'token': '4VFR'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'token': '4VFR'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'token': '4VFR'}) - - -class TestOrganizationPlanBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationPlan, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'plan': 'WWEI'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'plan': 'WWEI'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'plan': 'WWEI'}) - - -class TestOrgLogsBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrgLogs, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryVisibilityPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryVisibility, repository="public/publicrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'visibility': u'public'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'visibility': u'public'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'visibility': u'public'}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {u'visibility': u'public'}) - - -class TestRepositoryVisibilityDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryVisibility, repository="devtable/shared") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'visibility': u'public'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'visibility': u'public'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'visibility': u'public'}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {u'visibility': u'public'}) - - -class TestRepositoryVisibilityBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryVisibility, repository="buynlarge/orgrepo") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'visibility': u'public'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'visibility': u'public'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'visibility': u'public'}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {u'visibility': u'public'}) - - -class TestBuildTriggerListPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerList, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - -class TestBuildTriggerListDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerList, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestBuildTriggerListBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(BuildTriggerList, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryNotificationListPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryNotificationList, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {}) - - -class TestRepositoryNotificationListDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryNotificationList, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {'event': 'repo_push', 'method': 'email', - 'config': {'email': 'a@b.com'}}) - - -class TestRepositoryNotificationListBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryNotificationList, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', {'event': 'repo_push', 'method': 'email', - 'config': {'email': 'a@b.com'}}) - - -class TestRepositoryAuthorizedEmailPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryAuthorizedEmail, repository="public/publicrepo", - email="jschorr@devtable.com") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {}) - - -class TestRepositoryAuthorizedEmailDevtableSharedrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryAuthorizedEmail, repository="devtable/shared", - email="jschorr@devtable.com") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {}) - - -class TestRepositoryAuthorizedEmailBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryAuthorizedEmail, repository="buynlarge/orgrepo", - email="jschorr@devtable.com") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {}) - - - -class TestRepositoryTokenListPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTokenList, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'friendlyName': 'R1CN'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'friendlyName': 'R1CN'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'friendlyName': 'R1CN'}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {u'friendlyName': 'R1CN'}) - - -class TestRepositoryTokenListDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTokenList, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'friendlyName': 'R1CN'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'friendlyName': 'R1CN'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'friendlyName': 'R1CN'}) - - def test_post_devtable(self): - self._run_test('POST', 201, 'devtable', {u'friendlyName': 'R1CN'}) - - -class TestRepositoryTokenListBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryTokenList, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'friendlyName': 'R1CN'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'friendlyName': 'R1CN'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'friendlyName': 'R1CN'}) - - def test_post_devtable(self): - self._run_test('POST', 201, 'devtable', {u'friendlyName': 'R1CN'}) - - -class TestRepositoryBuildListPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildList, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'file_id': 'UX7K'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'file_id': 'UX7K'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'file_id': 'UX7K'}) - - def test_post_devtable(self): - self._run_test('POST', 403, 'devtable', {u'file_id': 'UX7K'}) - - -class TestRepositoryBuildListDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildList, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'file_id': 'UX7K'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'file_id': 'UX7K'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'file_id': 'UX7K'}) - - def test_post_devtable(self): - self._run_test('POST', 201, 'devtable', {u'file_id': 'UX7K'}) - - -class TestRepositoryBuildListBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryBuildList, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'file_id': 'UX7K'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'file_id': 'UX7K'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'file_id': 'UX7K'}) - - def test_post_devtable(self): - self._run_test('POST', 201, 'devtable', {u'file_id': 'UX7K'}) - - -class TestRepositoryImageListPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryImageList, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryImageListDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryImageList, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryImageListBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryImageList, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryLogsPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryLogs, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 403, 'devtable', None) - - -class TestRepositoryLogsDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryLogs, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestRepositoryLogsBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryLogs, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestUserRobot5vdy(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserRobot, robot_shortname="robotname") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 400, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 400, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, None) - - def test_put_freshuser(self): - self._run_test('PUT', 201, 'freshuser', None) - - def test_put_reader(self): - self._run_test('PUT', 201, 'reader', None) - - def test_put_devtable(self): - self._run_test('PUT', 201, 'devtable', None) - - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 400, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 400, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestRegenerateUserRobot(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RegenerateUserRobot, robot_shortname="robotname") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 400, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 400, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', None) - - -class TestRegenerateOrgRobot(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RegenerateOrgRobot, orgname="buynlarge", robot_shortname="robotname") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', None) - - -class TestUserRobotPermissions(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserRobotPermissions, robot_shortname="robotname") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 400, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 400, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - -class TestOrgRobotPermissions(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrgRobotPermissions, orgname="buynlarge", robot_shortname="robotname") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 400, 'devtable', None) - - -class TestOrganizationBuynlarge(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Organization, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, {}) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', {}) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', {}) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', {}) - - -class TestRepositoryPublicPublicrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Repository, repository="public/publicrepo") - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'description': 'WXNG'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'description': 'WXNG'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'description': 'WXNG'}) - - def test_put_devtable(self): - self._run_test('PUT', 403, 'devtable', {u'description': 'WXNG'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 403, 'devtable', None) - - -class TestRepositoryDevtableShared(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Repository, repository="devtable/shared") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'description': 'WXNG'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'description': 'WXNG'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'description': 'WXNG'}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {u'description': 'WXNG'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestRepositoryBuynlargeOrgrepo(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(Repository, repository="buynlarge/orgrepo") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {u'description': 'WXNG'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {u'description': 'WXNG'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {u'description': 'WXNG'}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {u'description': 'WXNG'}) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestEntitySearchR9nz(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(EntitySearch, prefix="R9NZ") - - def test_get_anonymous(self): - self._run_test('GET', 200, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestApplicationInformation3lgi(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ApplicationInformation, client_id="3LGI") - - def test_get_anonymous(self): - self._run_test('GET', 404, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestOrganizationApplications(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationApplications, orgname="buynlarge") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {u'name': 'foo'}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {u'name': 'foo'}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {u'name': 'foo'}) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', {u'name': 'foo'}) - - -class TestOrganizationApplicationResource(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationApplicationResource, orgname="buynlarge", client_id="deadbeef") - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, - {u'name': 'foo', u'application_uri': 'foo', u'redirect_uri': 'foo'}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', - {u'name': 'foo', u'application_uri': 'foo', u'redirect_uri': 'foo'}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', - {u'name': 'foo', u'application_uri': 'foo', u'redirect_uri': 'foo'}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', - {u'name': 'foo', u'application_uri': 'foo', u'redirect_uri': 'foo'}) - - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestOrganizationApplicationResetClientSecret(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationApplicationResetClientSecret, - orgname="buynlarge", client_id="deadbeef") - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', None) - - - -class TestUserAuthorizationList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserAuthorizationList) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 200, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 200, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - - -class TestUserAuthorization(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserAuthorization, access_token_uuid='fake') - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 404, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 404, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -class TestSuperAggregateUserLogs(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserAggregateLogs) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestSuperUserLogs(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserLogs) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestSuperUserSendRecoveryEmail(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserSendRecoveryEmail, username='someuser') - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', None) - - -class TestSuperUserTakeOwnership(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserTakeOwnership, namespace='invalidnamespace') - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {}) - - -class TestSuperUserServiceKeyApproval(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserServiceKeyApproval, kid=1234) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, {}) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', {}) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', {}) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', {}) - - -class TestSuperUserServiceKeyManagement(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserServiceKeyManagement) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, dict(service='someservice', expiration=None)) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', dict(service='someservice', expiration=None)) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', dict(service='someservice', expiration=None)) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', dict(service='someservice', expiration=None)) - - -class TestSuperUserServiceKey(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserServiceKey, kid=1234) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {}) - - def test_put_devtable(self): - self._run_test('PUT', 404, 'devtable', {}) - - -class TestTeamMemberInvite(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(TeamMemberInvite, code='foobarbaz') - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, None) - - def test_put_freshuser(self): - self._run_test('PUT', 400, 'freshuser', None) - - def test_put_reader(self): - self._run_test('PUT', 400, 'reader', None) - - def test_put_devtable(self): - self._run_test('PUT', 400, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 400, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 400, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 400, 'devtable', None) - - -class TestChangeLog(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ChangeLog) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestSuperUserOrganizationList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserOrganizationList) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestSuperUserOrganizationManagement(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserOrganizationManagement, name='buynlarge') - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {}) - - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - - -class TestSuperUserList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserList) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestSuperUserCustomCertificates(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserCustomCertificates) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - -class TestSuperUserCustomCertificate(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserCustomCertificate, certpath='somecert.crt') - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', None) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', None) - - def test_post_devtable(self): - self._run_test('POST', 400, 'devtable', None) - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestSuperUserManagement(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(SuperUserManagement, username='freshuser') - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - - def test_put_anonymous(self): - self._run_test('PUT', 401, None, {}) - - def test_put_freshuser(self): - self._run_test('PUT', 403, 'freshuser', {}) - - def test_put_reader(self): - self._run_test('PUT', 403, 'reader', {}) - - def test_put_devtable(self): - self._run_test('PUT', 200, 'devtable', {}) - - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestSuperUserMessages(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(GlobalUserMessages) - self.message = {'message': {'content': 'msg', 'severity': 'info', 'media_type': 'text/plain'}} - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', self.message) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', self.message) - - def test_post_devtable(self): - self._run_test('POST', 201, 'devtable', self.message) - - -class TestSuperUserMessage(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(GlobalUserMessage, uuid='1234') - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 204, 'devtable', None) - - -class TestUserInvoiceFieldList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserInvoiceFieldList) - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - - def test_post_anonymous(self): - self._run_test('POST', 401, None, None) - - def test_post_freshuser(self): - self._run_test('POST', 404, 'freshuser', dict(title='foo', value='bar')) - - def test_post_reader(self): - self._run_test('POST', 404, 'reader', dict(title='foo', value='bar')) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', dict(title='foo', value='bar')) - - -class TestUserInvoiceField(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(UserInvoiceField, field_uuid='1234') - - def test_get_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_get_freshuser(self): - self._run_test('DELETE', 404, 'freshuser', None) - - def test_get_reader(self): - self._run_test('DELETE', 404, 'reader', None) - - def test_get_devtable(self): - self._run_test('DELETE', 201, 'devtable', None) - - - -class TestOrganizationInvoiceFieldList(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationInvoiceFieldList, orgname='buynlarge') - - def test_get_anonymous(self): - self._run_test('GET', 403, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 200, 'devtable', None) - - - def test_post_anonymous(self): - self._run_test('POST', 403, None, dict(title='foo', value='bar')) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', dict(title='foo', value='bar')) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', dict(title='foo', value='bar')) - - def test_post_devtable(self): - self._run_test('POST', 200, 'devtable', dict(title='foo', value='bar')) - - -class TestOrganizationInvoiceField(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(OrganizationInvoiceField, orgname='buynlarge', field_uuid='1234') - - def test_delete_anonymous(self): - self._run_test('DELETE', 403, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 201, 'devtable', None) - - -class TestRepositoryImageSecurity(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryImageSecurity, repository='devtable/simple', imageid='fake') - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestRepositoryManifestSecurity(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryManifestSecurity, repository='devtable/simple', manifestref='sha256:abcd') - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - -class TestRepositoryManifestLabels(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(RepositoryManifestLabels, repository='devtable/simple', manifestref='sha256:abcd') - - def test_get_anonymous(self): - self._run_test('GET', 401, None, None) - - def test_get_freshuser(self): - self._run_test('GET', 403, 'freshuser', None) - - def test_get_reader(self): - self._run_test('GET', 403, 'reader', None) - - def test_get_devtable(self): - self._run_test('GET', 404, 'devtable', None) - - def test_post_anonymous(self): - self._run_test('POST', 401, None, dict(key='foo', value='bar', media_type='text/plain')) - - def test_post_freshuser(self): - self._run_test('POST', 403, 'freshuser', dict(key='foo', value='bar', media_type='text/plain')) - - def test_post_reader(self): - self._run_test('POST', 403, 'reader', dict(key='foo', value='bar', media_type='text/plain')) - - def test_post_devtable(self): - self._run_test('POST', 404, 'devtable', dict(key='foo', value='bar', media_type='text/plain')) - - -class TestManageRepositoryManifestLabel(ApiTestCase): - def setUp(self): - ApiTestCase.setUp(self) - self._set_url(ManageRepositoryManifestLabel, repository='devtable/simple', - manifestref='sha256:abcd', labelid='someid') - - def test_delete_anonymous(self): - self._run_test('DELETE', 401, None, None) - - def test_delete_freshuser(self): - self._run_test('DELETE', 403, 'freshuser', None) - - def test_delete_reader(self): - self._run_test('DELETE', 403, 'reader', None) - - def test_delete_devtable(self): - self._run_test('DELETE', 404, 'devtable', None) - - -if __name__ == '__main__': - unittest.main() diff --git a/test/testconfig.py b/test/testconfig.py index 2ba731589..e7ed55b24 100644 --- a/test/testconfig.py +++ b/test/testconfig.py @@ -42,6 +42,7 @@ class TestConfig(DefaultConfig): BUILDLOGS_OPTIONS = ['devtable', 'building', 'deadbeef-dead-beef-dead-beefdeadbeef', False] USERFILES_LOCATION = 'local_us' + USERFILES_PATH= "userfiles/" FEATURE_SUPER_USERS = True FEATURE_BILLING = True