from copy import deepcopy from . import schemas def test_get_platform_info_and_settings(cli, unauthorised_cli): for path, schema in [ ('/v1/platformsettings/default-settings', schemas.platform_settings()), ('/v1/platformsettings/user-settings', schemas.platform_settings()), ('/v1/platform/basic-information', schemas.platform_info()), ]: cli.get(path, schema=schema) assert unauthorised_cli.get(path).json()['code'] == 401 def test_put_platform_settings__resource_template(cli): settings = cli.get('/v1/platformsettings/user-settings').json() res = {'cpu': 4, 'memory': 8} tpls = ('pdResourceTemplates', 'tidbResourceTemplates', 'tikvResourceTemplates') # append new res templates put_settings = deepcopy(settings) for i, t in enumerate(tpls): if res not in put_settings[t]: put_settings[t].append(res) settings = cli.put('/v1/platformsettings/user-settings', json=put_settings, schema=schemas.platform_settings()).json() # assert & remove put_settings = deepcopy(settings) for t in tpls: assert res in settings[t] put_settings[t].remove(res) settings = cli.put('/v1/platformsettings/user-settings', json=put_settings, schema=schemas.platform_settings()).json() settings_to_restore = deepcopy(settings) for t in tpls: assert res not in settings[t] for t in tpls: # duplicate items put_settings = deepcopy(settings) put_settings[t].append(res) put_settings[t].append(res) resp = cli.put('/v1/platformsettings/user-settings', json=put_settings) # TODO: maybe 400 is more appropriate assert resp.status_code == 500 assert resp.json()['code'] == 500 # clear all put_settings[t] = [] resp = cli.put('/v1/platformsettings/user-settings', json=put_settings) # TODO: maybe 400 is more appropriate assert resp.status_code == 500 assert resp.json()['code'] == 500 # keep one put_settings[t] = [res] settings = cli.put('/v1/platformsettings/user-settings', json=put_settings, schema=schemas.platform_settings()).json() assert settings[t] == [res] # TODO: add some negative cases, eg. PUT {...: {"cpu": -1}} cli.put('/v1/platformsettings/user-settings', json=settings_to_restore).json() assert settings_to_restore == cli.get('/v1/platformsettings/user-settings').json()