def test_config_server_default_port(self): """Testing the configure server default port.""" sys.argv = ['/bin/qpc', 'server', 'config', '--host', '127.0.0.1'] CLI().main() config = read_server_config() self.assertEqual(config['host'], '127.0.0.1') self.assertEqual(config['port'], 8000)
def test_success_config_server(self): """Testing the configure server green path.""" sys.argv = ['/bin/qpc', 'server', 'config', '--host', '127.0.0.1', '--port', '8005'] CLI().main() config = read_server_config() self.assertEqual(config['host'], '127.0.0.1') self.assertEqual(config['port'], 8005)
def test_invalid_configuration(self): """Test reading bad JSON on cli start.""" write_server_config({}) sys.argv = ['/bin/qpc', 'server', 'config', '--host', '127.0.0.1'] CLI().main() config = read_server_config() self.assertEqual(config['host'], '127.0.0.1') self.assertEqual(config['port'], 8000)
def tearDown(self): """Remove test case setup.""" # Reset server config to default ip/port sys.argv = ['/bin/qpc', 'server', 'config', '--host', '127.0.0.1', '--port', '443'] CLI().main() config = read_server_config() self.assertEqual(config['host'], '127.0.0.1') self.assertEqual(config['port'], 443) # Restore stderr sys.stderr = self.orig_stderr
def test_success_config_server(self): """Testing the configure server green path.""" config_out = StringIO() sys.argv = ['/bin/qpc', 'server', 'config', '--host', '127.0.0.1', '--port', '8005'] with redirect_stdout(config_out): CLI().main() config = read_server_config() self.assertEqual(config['host'], '127.0.0.1') self.assertEqual(config['port'], 8005) self.assertEqual(config_out.getvalue(), messages.SERVER_CONFIG_SUCCESS % ('https', '127.0.0.1', '8005') + '\n')
def tearDown(self): """Remove test case setup.""" # Reset server config to default ip/port config_out = StringIO() sys.argv = ['/bin/qpc', 'server', 'config', '--host', '127.0.0.1', '--port', str(DEFAULT_PORT)] with redirect_stdout(config_out): CLI().main() config = read_server_config() self.assertEqual(config['host'], '127.0.0.1') self.assertEqual(config['port'], DEFAULT_PORT) self.assertEqual(config_out.getvalue(), messages.SERVER_CONFIG_SUCCESS % ('https', '127.0.0.1', str(DEFAULT_PORT)) + '\n') # Restore stderr sys.stderr = self.orig_stderr
def request(method, path, params=None, payload=None, parser=None, headers=None, min_server_version=QPC_MIN_SERVER_VERSION): """Create a generic handler for passing to specific request methods. :param method: the request method to execute :param path: path after server and port (i.e. /api/v1/credentials) :param params: uri encoding params (i.e. ?param1=hello¶m2=world) :param payload: dictionary of payload to be posted :param parser: parser for printing usage on failure :param headers: headers to include :param min_server_version: min qpc server version allowed :returns: reponse object :raises: AssertionError error if method is not supported """ # grab the cli command for the log if the parser is provided log_command = None if parser is not None: log_command = parser.prog req_headers = {} token = read_client_token() # create the url by adding the path to the configured server location url = get_server_location() + path if headers: req_headers.update(headers) if token: req_headers['Authorization'] = 'Token {}'.format(token) try: if method == POST: result = handle_general_errors(post(url, payload, req_headers), min_server_version) elif method == GET: result = handle_general_errors(get(url, params, req_headers), min_server_version) elif method == PATCH: result = handle_general_errors(patch(url, payload, req_headers), min_server_version) elif method == DELETE: result = handle_general_errors(delete(url, req_headers), min_server_version) elif method == PUT: result = handle_general_errors(put(url, payload, req_headers), min_server_version) else: log.error('Unsupported request method %s', method) parser.print_help() sys.exit(1) try: log_request_info(method, log_command, url, result.json(), result.status_code) except ValueError: log_request_info(method, log_command, url, result.text, result.status_code) return result except (requests.exceptions.ConnectionError, requests.exceptions.SSLError): config = read_server_config() if config is not None: protocol = 'https' host = config.get(CONFIG_HOST_KEY) port = config.get(CONFIG_PORT_KEY) if config.get(CONFIG_USE_HTTP): protocol = 'http' log.error(_(CONNECTION_ERROR_MSG % (protocol, host, port))) log.error(_(messages.SERVER_CONFIG_REQUIRED % PKG_NAME)) else: log.error(_(messages.SERVER_CONFIG_REQUIRED % PKG_NAME)) sys.exit(1)