def test_wrong_file(self): """Check if non existing json file was provided.""" from umbr_api._key 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): """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)) return response
def test_incorrect_json(self): """Check if incorrect json was provided.""" import os.path from unittest import mock from umbr_api._key import get_key json_test_file = os.path.join(os.path.dirname(__file__), 'data', 'customer_key_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='customer_key_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 remove(record_id=None, key=None): """Remove a record from the policy.""" key = get_key(key=key) response = None if record_id: api_uri = """https://s-platform.api.opendns.com/1.0/domains/""" + \ """{0}?customerKey={1}""".format(record_id, key) response = send_delete(api_uri, headers=APP_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._key 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') assert code == 0 code = save_key(old_key) assert code == 0
def test_get_key_from_api_call(self): """Check if key returns.""" from umbr_api._key import get_key assert get_key(key='123456789012345678901234567890123456') == \ '123456789012345678901234567890123456'
def test_key_2(self): """Check reading from file if key=None.""" from umbr_api._key import get_key assert get_key(key=None, filename='customer_key_example.json') == \ 'YOUR-CUSTOMER-KEY-IS-HERE-0123456789'
def test_key_length_2(self): """Check for a shorter key.""" from umbr_api._key 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._key import get_key with self.assertRaises(SystemExit) as expected_exc: get_key(key='12345678901234567890123456789012345+') self.assertEqual(expected_exc.exception.code, 1)
def test_get_key_from_file(self): """Check if key will be read from the file.""" from umbr_api._key import get_key assert get_key(filename='customer_key_example.json') == \ 'YOUR-CUSTOMER-KEY-IS-HERE-0123456789'