示例#1
0
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
示例#2
0
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",
            ]
        )