Beispiel #1
0
    def test_key_length_2(self):
        """Check for a shorter key."""
        from umbr_api.credentials import get_key

        with self.assertRaises(SystemExit) as expected_exc:
            get_key(key="12345678901234567890123456789012345")
        self.assertEqual(expected_exc.exception.code, 1)
Beispiel #2
0
    def test_key_incorrect_chars(self):
        """Check for incorrect chars in the key."""
        from umbr_api.credentials import get_key

        with self.assertRaises(SystemExit) as expected_exc:
            get_key(key="12345678901234567890123456789012345+")
        self.assertEqual(expected_exc.exception.code, 1)
Beispiel #3
0
    def test_wrong_file(self):
        """Check if non existing json file was provided."""
        from umbr_api.credentials import get_key

        with self.assertRaises(SystemExit) as expected_exc:
            get_key(key=None, filename="unique12345.json")
            # check exit code
        self.assertEqual(expected_exc.exception.code, 2)
Beispiel #4
0
def get_list(page=1, limit=10, key=None, exclude=None, **kwargs):
    """Return response tuple as response to API call.

    Note:
        Up to 200 records can be returned by API.

    Args:
        page (int): Page # to request.
        limit (int): Limit number of records to request.
        key (str): API key, if not specify obtain via ``key`` module.

    Returns:
        Return ``requests.Response`` object.
        http://docs.python-requests.org/en/master/api/#requests.Response

    """
    assert isinstance(page, int)
    assert isinstance(limit, int)

    key = get_key(key=key)
    response = None

    api_uri = ("https://s-platform.api.opendns.com/1.0/" +
               "domains?customerKey=" + key)
    api_uri += "&page={0}&limit={1}".format(page, limit)

    response = send_get(url=api_uri)

    format_response(response.status_code, json.loads(response.text), exclude,
                    **kwargs)

    return response
Beispiel #5
0
    def test_incorrect_json(self):
        """Check if incorrect json was provided."""
        import os.path
        from unittest import mock

        from umbr_api.credentials import get_key

        json_test_file = os.path.join(os.path.dirname(__file__), "data",
                                      "umbrella_incorrect.json")

        with mock.patch("os.path.join") as mock_path_join:
            mock_path_join.return_value = json_test_file

            with self.assertRaises(SystemExit) as expected_exc:
                get_key(filename="umbrella_incorrect.json")
                # check exit code
            self.assertEqual(expected_exc.exception.code, 1)
Beispiel #6
0
def add(domain=None, url=None, key=None, bypass=False):
    """Add domain name to block list."""
    assert domain and url
    assert isinstance(domain, str)
    assert isinstance(url, str)

    if domain != url:
        if url[0:7] == "http://" or url[0:8] == "https://":
            check_url = urlparse(url).hostname
        else:
            check_url = urlparse("http://" + url).hostname

        if domain != check_url:
            logger.warning(
                "Domain name part from URL doesn't match DNS domain name")
            logger.warning("DNS domain name: %s", domain)
            logger.warning("URL domain name: %s", check_url)

    key = get_key(key=key)
    response = None

    time_str = (datetime.utcnow()).isoformat(sep="T") + "Z"
    api_uri = ("https://s-platform.api.opendns.com/1.0/events?customerKey=" +
               key)

    if bypass:
        bypass_str = "true"
    else:
        bypass_str = "false"

    block_request_txt = """
    {{
        "alertTime": "{alertTime}",
        "deviceId": "ba6a59f4-e692-4724-ba36-c28132a761de",
        "deviceVersion": "{deviceVersion}",
        "dstDomain": "{dstDomain}",
        "dstUrl": "{dstUrl}",
        "eventTime": "{eventTime}",
        "protocolVersion": "1.0a",
        "providerName": "Security Platform",
        "disableDstSafeguards": {disableDstSafeguards}
    }}""".format(
        alertTime=time_str,
        deviceVersion=umbr_api.__version__,
        dstDomain=domain,
        dstUrl=url,
        eventTime=time_str,
        disableDstSafeguards=bypass_str,
    )

    response = send_post(
        api_uri,
        data=block_request_txt,
        headers={"Content-Type": "application/json"},
    )
    format_response(response)

    return response
    def test_keyring_general(self):
        """Save a key in the keyring, read back and compare."""
        import keyring
        import umbr_api
        from umbr_api.umbrella import save_key
        from umbr_api.credentials import get_key

        # check existing key
        old_key = get_key(keyring.get_password("python", umbr_api.__title__))

        # save new test key
        code = save_key("YOUR-CUSTOMER-KEY-IS-HERE-0123456789", "test")
        assert code == 0

        code = save_key(old_key, "test")
        assert code == 0
Beispiel #8
0
    def test_get_key_from_api_call(self):
        """Check if key returns."""
        from umbr_api.credentials import get_key

        assert (get_key(key="123456789012345678901234567890123456") ==
                "123456789012345678901234567890123456")
Beispiel #9
0
    def test_key_2(self):
        """Check reading from file if key=None."""
        from umbr_api.credentials import get_key

        assert (get_key(key=None, filename="umbrella_example.json") ==
                "YOUR-CUSTOMER-KEY-IS-HERE-0123456789")
Beispiel #10
0
    def test_get_key_from_file(self):
        """Check if key will be read from the file."""
        from umbr_api.credentials import get_key

        assert (get_key(filename="umbrella_example.json") ==
                "YOUR-CUSTOMER-KEY-IS-HERE-0123456789")