Files
nginx-unit/test/unit/control.py
Andrei Zeliankou c183bd8749 Tests: get rid of classes in test files.
Class usage came from the unittest framework and it was always redundant
after migration to the pytest.  This commit removes classes from files
containing tests to make them more readable and understandable.
2023-06-14 18:20:09 +01:00

60 lines
1.5 KiB
Python

import json
from unit.http import HTTP1
from unit.option import option
def args_handler(conf_func):
def args_wrapper(self, *args):
argcount = conf_func.__code__.co_argcount
url_default = '/config'
conf = None
if argcount == 2:
url = args[0] if len(args) == 1 else url_default
elif argcount == 3:
conf = args[0]
if isinstance(conf, dict) or isinstance(conf, list):
conf = json.dumps(conf)
url = args[1] if len(args) == 2 else url_default
url = url if url.startswith('/') else f'{url_default}/{url}'
arguments = (self, url) if conf is None else (self, conf, url)
return json.loads(conf_func(*arguments))
return args_wrapper
class Control(HTTP1):
@args_handler
def conf(self, conf, url):
return self.put(**self._get_args(url, conf))['body']
@args_handler
def conf_get(self, url):
return self.get(**self._get_args(url))['body']
@args_handler
def conf_delete(self, url):
return self.delete(**self._get_args(url))['body']
@args_handler
def conf_post(self, conf, url):
return self.post(**self._get_args(url, conf))['body']
def _get_args(self, url, conf=None):
args = {
'url': url,
'sock_type': 'unix',
'addr': f'{option.temp_dir}/control.unit.sock',
}
if conf is not None:
args['body'] = conf
return args