diff --git a/tests/ft/neuron/api.py b/tests/ft/neuron/api.py index 294ff721..327d4ffe 100644 --- a/tests/ft/neuron/api.py +++ b/tests/ft/neuron/api.py @@ -1,8 +1,24 @@ +import sys +import inspect + import requests import neuron.config as config import neuron.error as error +def gen_check(func): + def wrapper(*args, **kwargs): + response = func(*args, **kwargs) + assert 200 == response.status_code + assert error.NEU_ERR_SUCCESS == response.json()['error'] + return response + wrapper.__name__ = f"{func.__name__}_check" + wrapper.__signature__ = inspect.signature(func) + current_module = sys.modules[__name__] + setattr(current_module, wrapper.__name__, wrapper) + return func + + def login(user='admin', password='0000'): return requests.post(url=config.BASE_URL + '/api/v2/login', json={"name": user, "pass": password}) @@ -11,22 +27,27 @@ def change_password(new_password, user='admin', old_password='0000', jwt=config. return requests.post(url=config.BASE_URL + '/api/v2/password', headers={"Authorization": jwt}, json={"name": user, "old_pass": old_password, "new_pass": new_password}) +@gen_check def get_license(jwt=config.default_jwt): return requests.get(url=config.BASE_URL + '/api/v2/license', headers={"Authorization": jwt}) +@gen_check def upload_license(license, jwt=config.default_jwt): return requests.post(url=config.BASE_URL + '/api/v2/license', headers={"Authorization": jwt}, json={"license": license}) +@gen_check def change_log_level(node, level, jwt=config.default_jwt): return requests.put(url=config.BASE_URL + '/api/v2/log/level', headers={"Authorization": jwt}, json={"node": node, "level": level}) +@gen_check def add_node(node, plugin, jwt=config.default_jwt): return requests.post(url=config.BASE_URL + '/api/v2/node', headers={"Authorization": jwt}, json={"name": node, "plugin": plugin}) +@gen_check def del_node(node, jwt=config.default_jwt): return requests.delete(url=config.BASE_URL + '/api/v2/node', headers={"Authorization": jwt}, json={"name": node}) @@ -35,6 +56,7 @@ def get_nodes(type, jwt=config.default_jwt): return requests.get(url=config.BASE_URL + '/api/v2/node', headers={"Authorization": jwt}, params={"type": type}) +@gen_check def node_ctl(node, ctl, jwt=config.default_jwt): return requests.post(url=config.BASE_URL + '/api/v2/node/ctl', headers={"Authorization": jwt}, json={"node": node, "cmd": ctl}) @@ -43,6 +65,7 @@ def get_nodes_state(node, jwt=config.default_jwt): return requests.get(url=config.BASE_URL + '/api/v2/node/state', headers={"Authorization": jwt}, params={"node": node}) +@gen_check def node_setting(node, json, jwt=config.default_jwt): return requests.post(url=config.BASE_URL + '/api/v2/node/setting', headers={"Authorization": jwt}, json={"node": node, "params": json}) @@ -51,14 +74,17 @@ def get_node_setting(node, jwt=config.default_jwt): return requests.get(url=config.BASE_URL + '/api/v2/node/setting', headers={"Authorization": jwt}, params={"node": node}) +@gen_check def add_group(node, group, interval=100): return requests.post(url=config.BASE_URL + '/api/v2/group', headers={"Authorization": config.default_jwt}, json={"node": node, "group": group, "interval": interval}) +@gen_check def del_group(node, group): return requests.delete(url=config.BASE_URL + '/api/v2/group', headers={"Authorization": config.default_jwt}, json={"node": node, "group": group}) +@gen_check def update_group(node, group, new_name="", interval=0): if len(new_name) > 0 and interval > 0: return requests.put(url=config.BASE_URL + '/api/v2/group', headers={"Authorization": config.default_jwt}, json={"node": node, "group": group, "new_name": new_name, "interval": interval}) @@ -70,20 +96,17 @@ def update_group(node, group, new_name="", interval=0): assert False +@gen_check def add_tags(node, group, tags): return requests.post(url=config.BASE_URL + '/api/v2/tags', headers={"Authorization": config.default_jwt}, json={"node": node, "group": group, "tags": tags}) -def add_tags_check(node, group, tags): - response = add_tags(node=node, group=group, tags=tags) - assert 200 == response.status_code - assert error.NEU_ERR_SUCCESS == response.json()['error'] - - +@gen_check def del_tags(node, group, tags): - return requests.delete(url=config.BASE_URL + '/api/v2/tags', headers={"Authorizatioin": config.default_jwt}, json={"node": node, "group": group, "tags": tags}) + return requests.delete(url=config.BASE_URL + '/api/v2/tags', headers={"Authorization": config.default_jwt}, json={"node": node, "group": group, "tags": tags}) +@gen_check def update_tags(node, group, tags): return requests.put(url=config.BASE_URL + '/api/v2/tags', headers={"Authorization": config.default_jwt}, json={"node": node, "group": group, "tags": tags}) @@ -124,31 +147,38 @@ def read_tag_error(node, group, tag, sync=False): return x[0]['error'] +@gen_check def write_tag(node, group, tag, value): return requests.post(url=config.BASE_URL + "/api/v2/write", headers={"Authorization": config.default_jwt}, json={"node": node, "group": group, "tag": tag, "value": value}) -def write_tag_check(node, group, tag, value): - response = write_tag(node, group, tag, value) - assert 200 == response.status_code - assert error.NEU_ERR_SUCCESS == response.json()['error'] - - +@gen_check def write_tags(node, group, tag_values): return requests.post(url=config.BASE_URL + "/api/v2/writes", headers={"Authorization": config.default_jwt}, json={"node": node, "group": group, "tags": tag_values}) def add_plugin(library_name, so_file, schema_file): - return requests.post(url=config.BASE_URL + "/api/v2/plugin", json={"library":library_name, "so_file":so_file,"schema_file":schema_file}, headers={"Authorization": config.default_jwt}) + return requests.post(url=config.BASE_URL + "/api/v2/plugin", json={"library": library_name, "so_file": so_file, "schema_file": schema_file}, headers={"Authorization": config.default_jwt}) + + def updata_plugin(library_name, so_file, schema_file): - return requests.put(url=config.BASE_URL + "/api/v2/plugin", json={"library":library_name, "so_file":so_file,"schema_file":schema_file}, headers={"Authorization": config.default_jwt}) + return requests.put(url=config.BASE_URL + "/api/v2/plugin", json={"library": library_name, "so_file": so_file, "schema_file": schema_file}, headers={"Authorization": config.default_jwt}) + + def del_plugin(plugin_name): - return requests.delete(url=config.BASE_URL + "/api/v2/plugin", json={"plugin":plugin_name}, headers={"Authorization": config.default_jwt}) -def get_plugin(): + return requests.delete(url=config.BASE_URL + "/api/v2/plugin", json={"plugin": plugin_name}, headers={"Authorization": config.default_jwt}) + + +def get_plugins(): return requests.get(url=config.BASE_URL + "/api/v2/plugin", headers={"Authorization": config.default_jwt}) + +@gen_check def add_template(name, plugin, groups): return requests.post(url=config.BASE_URL + "/api/v2/template", json={"name": name, "plugin": plugin, "groups": groups}, headers={"Authorization": config.default_jwt}) + + +@gen_check def del_template(name): return requests.delete(url=config.BASE_URL + "/api/v2/template" + f"?name={name}", headers={"Authorization": config.default_jwt})