Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
 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')
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
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&param2=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)