Esempio n. 1
0
def test_puppetdb_query_init_invalid():
    """Instantiating PuppetDBQuery with an unsupported API version should raise InvalidQueryError."""
    with pytest.raises(InvalidQueryError, match='Unsupported PuppetDB API version'):
        puppetdb.PuppetDBQuery({'puppetdb': {'api_version': 99}})
Esempio n. 2
0
 def setup_method(self, _):
     """Set an instance of PuppetDBQuery for each test."""
     config = {'puppetdb': {'api_version': 3}}
     self.query = puppetdb.PuppetDBQuery(config)  # pylint: disable=attribute-defined-outside-init
Esempio n. 3
0
 def setup_method(self, _):
     """Set an instance of PuppetDBQuery for each test."""
     self.query = puppetdb.PuppetDBQuery({})  # pylint: disable=attribute-defined-outside-init
Esempio n. 4
0
def query_requests(request, mocked_requests):  # pylint: disable=redefined-outer-name
    """Set the requests library mock for each test and PuppetDB API version."""
    if request.param == 3:  # PuppetDB API v3
        query = puppetdb.PuppetDBQuery({
            'puppetdb': {
                'api_version': 3,
                'urllib3_disable_warnings': ['SubjectAltNameWarning']
            }
        })
        for endpoint, key in query.hosts_keys.items():
            mocked_requests.register_uri(
                'GET',
                re.compile(re.escape(query.url + endpoint + '?query=')),
                status_code=200,
                json=[{
                    key: endpoint + '_host1',
                    'key': 'value1'
                }, {
                    key: endpoint + '_host2',
                    'key': 'value2'
                }])

        # Register a requests response for a non matching query
        mocked_requests.register_uri(
            'GET',
            query.url + query.endpoints['F'] +
            '?query=["or", ["=", "name", "non_existent_host"]]',
            status_code=200,
            json=[],
            complete_qs=True)
        # Register a requests response for an invalid query
        mocked_requests.register_uri(
            'GET',
            query.url + query.endpoints['F'] +
            '?query=["or", ["=", "name", "invalid_query"]]',
            status_code=400,
            complete_qs=True)

    elif request.param == 4:  # PuppetDB API v4
        query = puppetdb.PuppetDBQuery({})
        for endpoint, key in query.hosts_keys.items():
            mocked_requests.register_uri('POST',
                                         query.url + endpoint,
                                         status_code=200,
                                         complete_qs=True,
                                         json=[{
                                             key: endpoint + '_host1',
                                             'key': 'value1'
                                         }, {
                                             key: endpoint + '_host2',
                                             'key': 'value2'
                                         }])

        # Register a requests response for a non matching query
        mocked_requests.register_uri(
            'POST',
            query.url + query.endpoints['F'],
            status_code=200,
            json=[],
            complete_qs=True,
            additional_matcher=_requests_matcher_non_existent)
        # Register a requests response for an invalid query
        mocked_requests.register_uri(
            'POST',
            query.url + query.endpoints['F'],
            status_code=400,
            complete_qs=True,
            additional_matcher=_requests_matcher_invalid)

    return query, mocked_requests