def test_censysconnector_search_too_much_results_error( censys_id_value: str, censys_secret_value: str, capsys) -> None: """ Check how we can handle situation when we got more results than we can afford with our API plan. Interesting fact, that if we will search with empty request, we will get a lot of trash - that's cool in case of this test, but kinda strange in case of API :) :param censys_id_value: censys id :param censys_secret_value: censys secret :param capsys: catch output of the function :return: None """ api = CensysConnector(api_id=censys_id_value, api_secret=censys_secret_value) api.search(query="") output = capsys.readouterr().out assert ( "Only the first 1,000 search results are available. Retry search with 1,000 results limit." in output) # check if we get 1.000 of results - it is # maximum quantity for free plan assert len(api.get_raw_results()) == 1000 assert api.censys_results_count == 1000
def test_censysconnector_get_raw_results( censys_id_value: str, censys_secret_value: str ) -> None: """ Check raw results keys :param censys_id_value: censys id :param censys_secret_value: censys secret :return: None """ api = CensysConnector(api_id=censys_id_value, api_secret=censys_secret_value) api.search(query="nginx", max_records=10) results = api.get_raw_results() assert len(results) == 10 for result in results: assert Counter(result.keys()) == Counter( [ "ip", "location.country", "location.latitude", "location.longitude", "ports", "protocols", "autonomous_system.name", ] )