test.test_api_usage: add AppConfigChange ctxmgr
This commit is contained in:
parent
1d6339e644
commit
ab941607d4
1 changed files with 33 additions and 13 deletions
|
@ -119,6 +119,30 @@ CSRF_TOKEN_KEY = '_csrf_token'
|
|||
CSRF_TOKEN = '123csrfforme'
|
||||
|
||||
|
||||
class AppConfigChange(object):
|
||||
""" AppConfigChange takes a dictionary that overrides the global app config
|
||||
for a given block of code. The values are restored on exit. """
|
||||
def __init__(self, changes=None):
|
||||
self._changes = changes or {}
|
||||
self._originals = {}
|
||||
self._to_rm = []
|
||||
|
||||
def __enter__(self):
|
||||
for key in self._changes.keys():
|
||||
try:
|
||||
self._originals[key] = app.config[key]
|
||||
except KeyError:
|
||||
self._to_rm.append(key)
|
||||
app.config[key] = self._changes[key]
|
||||
|
||||
def __exit__(self, type, value, traceback):
|
||||
for key in self._originals.keys():
|
||||
app.config[key] = self._originals[key]
|
||||
|
||||
for key in self._to_rm:
|
||||
del app.config[key]
|
||||
|
||||
|
||||
class ApiTestCase(unittest.TestCase):
|
||||
maxDiff = None
|
||||
|
||||
|
@ -4342,20 +4366,16 @@ class TestRepositoryImageSecurity(ApiTestCase):
|
|||
expected_code=520)
|
||||
|
||||
# Set the failover URL in the global config.
|
||||
app.config['SECURITY_SCANNER_READONLY_FAILOVER_ENDPOINTS'] = ['http://failoverscanner']
|
||||
with AppConfigChange({'SECURITY_SCANNER_READONLY_FAILOVER_ENDPOINTS': ['https://failoverscanner']}):
|
||||
# Configure the API to return 200 for this layer.
|
||||
layer_id = security_scanner.layer_id(layer)
|
||||
security_scanner.set_ok_layer_id(layer_id)
|
||||
|
||||
# Configure the API to return 200 for this layer.
|
||||
layer_id = security_scanner.layer_id(layer)
|
||||
security_scanner.set_ok_layer_id(layer_id)
|
||||
|
||||
# Call the API and succeed on failover.
|
||||
self.getResponse(RepositoryImageSecurity,
|
||||
params=dict(repository=ADMIN_ACCESS_USER + '/simple',
|
||||
imageid=layer.docker_image_id, vulnerabilities='true'),
|
||||
expected_code=200)
|
||||
|
||||
# Remove the failover endpoints from the global config.
|
||||
app.config['SECURITY_SCANNER_READONLY_FAILOVER_ENDPOINTS'] = []
|
||||
# Call the API and succeed on failover.
|
||||
self.getResponse(RepositoryImageSecurity,
|
||||
params=dict(repository=ADMIN_ACCESS_USER + '/simple',
|
||||
imageid=layer.docker_image_id, vulnerabilities='true'),
|
||||
expected_code=200)
|
||||
|
||||
|
||||
class TestSuperUserCustomCertificates(ApiTestCase):
|
||||
|
|
Reference in a new issue