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)
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)
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)
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
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)
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
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")
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")
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")