def check_response_facts(facts_known, response): for i, fact_known in enumerate(facts_known): assert fact_known.module == response.data['results'][i]['module'] assert timestamp_apiformat( fact_known.timestamp) == response.data['results'][i]['timestamp'] check_url(response.data['results'][i]['related']['fact_view'], fact_known, fact_known.module)
def test_content(hosts, fact_scans, get, user, fact_ansible_json, monkeypatch_jsonbfield_get_db_prep_save): (fact_known, response) = setup_common(hosts, fact_scans, get, user) assert fact_known.host_id == response.data['host'] # TODO: Just make response.data['facts'] when we're only dealing with postgres, or if jsonfields ever fixes this bug assert fact_ansible_json == (json.loads(response.data['facts']) if isinstance(response.data['facts'], str) else response.data['facts']) assert timestamp_apiformat(fact_known.timestamp) == response.data['timestamp'] assert fact_known.module == response.data['module']
def _test_search_by_module(hosts, fact_scans, get, user, fact_json, module_name): params = { 'module': module_name } (fact_known, response) = setup_common(hosts, fact_scans, get, user, module_name=module_name, get_params=params) # TODO: Just make response.data['facts'] when we're only dealing with postgres, or if jsonfields ever fixes this bug assert fact_json == (json.loads(response.data['facts']) if isinstance(response.data['facts'], str) else response.data['facts']) assert timestamp_apiformat(fact_known.timestamp) == response.data['timestamp'] assert module_name == response.data['module']
def check_url(url1_full, fact_known, module): url1_split = urllib.parse.urlsplit(url1_full) url1 = url1_split.path url1_params = urllib.parse.parse_qsl(url1_split.query) url2 = reverse('api:host_fact_compare_view', kwargs={'pk': fact_known.host.pk}) url2_params = [('module', module), ('datetime', timestamp_apiformat(fact_known.timestamp))] assert url1 == url2 # Sort before comparing because urlencode can't be trusted url1_params_sorted = sorted(url1_params, key=lambda val: val[0]) url2_params_sorted = sorted(url2_params, key=lambda val: val[0]) assert urllib.parse.urlencode(url1_params_sorted) == urllib.parse.urlencode(url2_params_sorted)