84 lines
3.9 KiB
Python
84 lines
3.9 KiB
Python
|
import pytest
|
||
|
|
||
|
from data import model
|
||
|
from endpoints.api.repository import Repository
|
||
|
from endpoints.api.build import (RepositoryBuildList, RepositoryBuildResource,
|
||
|
RepositoryBuildStatus, RepositoryBuildLogs)
|
||
|
from endpoints.api.image import RepositoryImageList, RepositoryImage
|
||
|
from endpoints.api.manifest import RepositoryManifestLabels, ManageRepositoryManifestLabel
|
||
|
from endpoints.api.repositorynotification import (RepositoryNotification,
|
||
|
RepositoryNotificationList,
|
||
|
TestRepositoryNotification)
|
||
|
from endpoints.api.secscan import RepositoryImageSecurity, RepositoryManifestSecurity
|
||
|
from endpoints.api.signing import RepositorySignatures
|
||
|
from endpoints.api.tag import ListRepositoryTags, RepositoryTag, RepositoryTagImages, RestoreTag
|
||
|
from endpoints.api.trigger import (BuildTriggerList, BuildTrigger, BuildTriggerSubdirs,
|
||
|
BuildTriggerActivate, BuildTriggerAnalyze, ActivateBuildTrigger,
|
||
|
TriggerBuildList, BuildTriggerFieldValues, BuildTriggerSources,
|
||
|
BuildTriggerSourceNamespaces)
|
||
|
from endpoints.api.test.shared import conduct_api_call
|
||
|
from endpoints.test.shared import client_with_identity
|
||
|
from test.fixtures import *
|
||
|
|
||
|
BUILD_ARGS = {'build_uuid': '1234'}
|
||
|
IMAGE_ARGS = {'imageid': '1234', 'image_id': 1234}
|
||
|
MANIFEST_ARGS = {'manifestref': 'sha256:abcd1234'}
|
||
|
LABEL_ARGS = {'manifestref': 'sha256:abcd1234', 'labelid': '1234'}
|
||
|
NOTIFICATION_ARGS = {'uuid': '1234'}
|
||
|
TAG_ARGS = {'tag': 'foobar'}
|
||
|
TRIGGER_ARGS = {'trigger_uuid': '1234'}
|
||
|
FIELD_ARGS = {'trigger_uuid': '1234', 'field_name': 'foobar'}
|
||
|
|
||
|
@pytest.mark.parametrize('resource, method, params', [
|
||
|
(RepositoryBuildList, 'get', None),
|
||
|
(RepositoryBuildList, 'post', None),
|
||
|
(RepositoryBuildResource, 'get', BUILD_ARGS),
|
||
|
(RepositoryBuildResource, 'delete', BUILD_ARGS),
|
||
|
(RepositoryBuildStatus, 'get', BUILD_ARGS),
|
||
|
(RepositoryBuildLogs, 'get', BUILD_ARGS),
|
||
|
(RepositoryImageList, 'get', None),
|
||
|
(RepositoryImage, 'get', IMAGE_ARGS),
|
||
|
(RepositoryManifestLabels, 'get', MANIFEST_ARGS),
|
||
|
(RepositoryManifestLabels, 'post', MANIFEST_ARGS),
|
||
|
(ManageRepositoryManifestLabel, 'get', LABEL_ARGS),
|
||
|
(ManageRepositoryManifestLabel, 'delete', LABEL_ARGS),
|
||
|
(RepositoryNotificationList, 'get', None),
|
||
|
(RepositoryNotificationList, 'post', None),
|
||
|
(RepositoryNotification, 'get', NOTIFICATION_ARGS),
|
||
|
(RepositoryNotification, 'delete', NOTIFICATION_ARGS),
|
||
|
(RepositoryNotification, 'post', NOTIFICATION_ARGS),
|
||
|
(TestRepositoryNotification, 'post', NOTIFICATION_ARGS),
|
||
|
(RepositoryImageSecurity, 'get', IMAGE_ARGS),
|
||
|
(RepositoryManifestSecurity, 'get', MANIFEST_ARGS),
|
||
|
(RepositorySignatures, 'get', None),
|
||
|
(ListRepositoryTags, 'get', None),
|
||
|
(RepositoryTag, 'put', TAG_ARGS),
|
||
|
(RepositoryTag, 'delete', TAG_ARGS),
|
||
|
(RepositoryTagImages, 'get', TAG_ARGS),
|
||
|
(RestoreTag, 'post', TAG_ARGS),
|
||
|
(BuildTriggerList, 'get', None),
|
||
|
(BuildTrigger, 'get', TRIGGER_ARGS),
|
||
|
(BuildTrigger, 'delete', TRIGGER_ARGS),
|
||
|
(BuildTriggerSubdirs, 'post', TRIGGER_ARGS),
|
||
|
(BuildTriggerActivate, 'post', TRIGGER_ARGS),
|
||
|
(BuildTriggerAnalyze, 'post', TRIGGER_ARGS),
|
||
|
(ActivateBuildTrigger, 'post', TRIGGER_ARGS),
|
||
|
(TriggerBuildList, 'get', TRIGGER_ARGS),
|
||
|
(BuildTriggerFieldValues, 'post', FIELD_ARGS),
|
||
|
(BuildTriggerSources, 'post', TRIGGER_ARGS),
|
||
|
(BuildTriggerSourceNamespaces, 'get', TRIGGER_ARGS),
|
||
|
])
|
||
|
def test_disallowed_for_apps(resource, method, params, client):
|
||
|
namespace = 'devtable'
|
||
|
repository = 'someapprepo'
|
||
|
|
||
|
devtable = model.user.get_user('devtable')
|
||
|
model.repository.create_repository(namespace, repository, devtable, repo_kind='application')
|
||
|
|
||
|
params = params or {}
|
||
|
params['repository'] = '%s/%s' % (namespace, repository)
|
||
|
|
||
|
with client_with_identity('devtable', client) as cl:
|
||
|
conduct_api_call(cl, resource, method, params, None, 501)
|
||
|
|