Implement the remaining registry tests in the new py.test format
This commit is contained in:
parent
77adf9dd77
commit
8c1b0e673c
7 changed files with 1200 additions and 62 deletions
|
@ -1,5 +1,6 @@
|
|||
import copy
|
||||
import logging.config
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
|
||||
|
@ -26,7 +27,7 @@ def registry_server_executor(app):
|
|||
return generate_csrf_token()
|
||||
|
||||
def set_supports_direct_download(enabled):
|
||||
storage.put_content(['local_us'], 'supports_direct_download', enabled)
|
||||
storage.put_content(['local_us'], 'supports_direct_download', 'true' if enabled else 'false')
|
||||
return 'OK'
|
||||
|
||||
def delete_image(image_id):
|
||||
|
@ -61,7 +62,7 @@ def registry_server_executor(app):
|
|||
'write')
|
||||
another_token.code = 'somecooltokencode'
|
||||
another_token.save()
|
||||
return 'OK'
|
||||
return another_token.code
|
||||
|
||||
def break_database():
|
||||
# Close any existing connection.
|
||||
|
@ -93,6 +94,11 @@ def registry_server_executor(app):
|
|||
|
||||
return 'OK'
|
||||
|
||||
def create_app_repository(namespace, name):
|
||||
user = model.user.get_user(namespace)
|
||||
model.repository.create_repository(namespace, name, user, repo_kind='application')
|
||||
return 'OK'
|
||||
|
||||
executor = LiveServerExecutor()
|
||||
executor.register('generate_csrf', generate_csrf)
|
||||
executor.register('set_supports_direct_download', set_supports_direct_download)
|
||||
|
@ -104,6 +110,7 @@ def registry_server_executor(app):
|
|||
executor.register('add_token', add_token)
|
||||
executor.register('break_database', break_database)
|
||||
executor.register('reload_app', reload_app)
|
||||
executor.register('create_app_repository', create_app_repository)
|
||||
return executor
|
||||
|
||||
|
||||
|
@ -148,7 +155,46 @@ class FeatureFlagValue(object):
|
|||
|
||||
def __enter__(self):
|
||||
result = self.executor.set_feature(self.feature_flag, self.test_value)
|
||||
self.old_value = result.json['old_value']
|
||||
self.old_value = result.json()['old_value']
|
||||
|
||||
def __exit__(self, type, value, traceback):
|
||||
self.executor.set_feature(self.feature_flag, self.old_value)
|
||||
|
||||
|
||||
class ApiCaller(object):
|
||||
def __init__(self, liveserver_session, registry_server_executor):
|
||||
self.liveserver_session = liveserver_session
|
||||
self.csrf_token = registry_server_executor.on_session(liveserver_session).generate_csrf()
|
||||
|
||||
def conduct_auth(self, username, password):
|
||||
r = self.post('/api/v1/signin',
|
||||
data=json.dumps(dict(username=username, password=password)),
|
||||
headers={'Content-Type': 'application/json'})
|
||||
assert r.status_code == 200
|
||||
|
||||
def _adjust_params(self, kwargs):
|
||||
if 'params' not in kwargs:
|
||||
kwargs['params'] = {}
|
||||
|
||||
kwargs['params'].update({
|
||||
'_csrf_token': self.csrf_token,
|
||||
})
|
||||
return kwargs
|
||||
|
||||
def get(self, url, **kwargs):
|
||||
kwargs = self._adjust_params(kwargs)
|
||||
return self.liveserver_session.get(url, **kwargs)
|
||||
|
||||
def post(self, url, **kwargs):
|
||||
kwargs = self._adjust_params(kwargs)
|
||||
return self.liveserver_session.post(url, **kwargs)
|
||||
|
||||
def change_repo_visibility(self, namespace, repository, visibility):
|
||||
self.post('/api/v1/repository/%s/%s/changevisibility' % (namespace, repository),
|
||||
data=json.dumps(dict(visibility=visibility)),
|
||||
headers={'Content-Type': 'application/json'})
|
||||
|
||||
|
||||
@pytest.fixture(scope="function")
|
||||
def api_caller(liveserver, registry_server_executor):
|
||||
return ApiCaller(liveserver.new_session(), registry_server_executor)
|
||||
|
|
Reference in a new issue