def test_get_site_success(client, connector) -> None: # given get_response_payload = """ { "site": { "id": 42, "site_name": "apitest-site-1", "lat": 54.349276, "lon": 18.659577, "company_id": 3250 } }""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK # when site_id = ID(42) site = client.sites.get(site_id) # then request properly formed assert connector.last_url_path == f"/site/{site_id}" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # then response properly parsed assert site.id == ID(42) assert site.site_name == "apitest-site-1" assert site.latitude == 54.349276 assert site.longitude == 18.659577 assert site.company_id == ID(3250)
def test_create_site_success(client, connector) -> None: # given create_response_payload = """ { "site": { "id": 42, "site_name": "apitest-site-1", "lat": 54.349276, "lon": 18.659577, "company_id": "3250" } }""" connector.response_text = create_response_payload connector.response_code = HTTPStatus.CREATED # when site = Site("apitest-site-1", 54.349276, 18.659577) created = client.sites.create(site) # then request properly formed assert connector.last_url_path == "/site" assert connector.last_method == APICallMethods.POST assert connector.last_payload is not None assert "site" in connector.last_payload assert connector.last_payload["site"]["site_name"] == "apitest-site-1" assert connector.last_payload["site"]["lat"] == 54.349276 assert connector.last_payload["site"]["lon"] == 18.659577 # and response properly parsed assert created.id == ID(42) assert created.site_name == "apitest-site-1" assert created.latitude == 54.349276 assert created.longitude == 18.659577 assert created.company_id == ID(3250)
def test_create_tenant_user_success(client, connector) -> None: # given create_response_payload = """ { "id":"148148", "user_email":"*****@*****.**", "last_login":null, "tenant_id":"577", "company_id":"74333" }""" connector.response_text = create_response_payload connector.response_code = HTTPStatus.OK # when to_create_email = "*****@*****.**" tenant_id = ID(577) created = client.my_kentik_portal.create_tenant_user(tenant_id, to_create_email) # then assert connector.last_url_path == "/mykentik/tenant/577/user" assert connector.last_method == APICallMethods.POST assert connector.last_payload is not None assert connector.last_payload["user"]["user_email"] == "*****@*****.**" assert created.id == ID(148148) assert created.email == "*****@*****.**" assert created.last_login is None assert created.tenant_id == ID(577) assert created.company_id == ID(74333)
def test_update_site_success(client, connector) -> None: # given update_response_payload = """ { "site": { "id": "42", "site_name": "new-site", "lat": -15.0, "lon": -45.0, "company_id": "3250" } }""" connector.response_text = update_response_payload connector.response_code = HTTPStatus.OK # when site_id = ID(42) site = Site(site_name="new-site", latitude=None, longitude=-45.0, id=site_id) updated = client.sites.update(site) # then request properly formed assert connector.last_url_path == f"/site/{site_id}" assert connector.last_method == APICallMethods.PUT assert connector.last_payload is not None assert "site" in connector.last_payload assert connector.last_payload["site"]["site_name"] == "new-site" assert connector.last_payload["site"]["lon"] == -45.0 assert "lat" not in connector.last_payload["site"] # then response properly parsed assert updated.id == ID(42) assert updated.site_name == "new-site" assert updated.latitude == -15.0 assert updated.longitude == -45.0 assert updated.company_id == ID(3250)
def test_get_all_custom_applications_success() -> None: # given get_response_payload = """ [ { "id": 42, "company_id": "74333", "user_id": "144319", "name": "apitest-customapp-1", "description": "TESTING CUSTOM APPS 1", "ip_range": "192.168.0.1,192.168.0.2", "protocol": "6,17", "port": "9001,9002,9003", "asn": "asn1,asn2,asn3", "cdate": "2020-12-11T07:07:20.968Z", "edate": "2020-12-11T07:07:20.968Z" }, { "id": 43, "company_id": "74333", "user_id": "144319", "name": "apitest-customapp-2", "description": "TESTING CUSTOM APPS 2", "ip_range": "192.168.0.3,192.168.0.4", "protocol": "6,17", "port": "9011,9012,9013", "asn": "asn4,asn5,asn6", "cdate": "2020-12-11T07:08:20.968Z", "edate": "2020-12-11T07:08:20.968Z" } ]""" connector = StubAPIConnector(get_response_payload, HTTPStatus.OK) custom_applications_api = CustomApplicationsAPI(connector) # when apps = custom_applications_api.get_all() # then request properly formed assert connector.last_url_path == "/customApplications" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # and response properly parsed assert len(apps) == 2 assert apps[1].id == ID(43) assert apps[1].company_id == ID(74333) assert apps[1].user_id == ID(144319) assert apps[1].name == "apitest-customapp-2" assert apps[1].description == "TESTING CUSTOM APPS 2" assert apps[1].ip_range == "192.168.0.3,192.168.0.4" assert apps[1].protocol == "6,17" assert apps[1].port == "9011,9012,9013" assert apps[1].asn == "asn4,asn5,asn6" assert apps[1].created_date == "2020-12-11T07:08:20.968Z" assert apps[1].updated_date == "2020-12-11T07:08:20.968Z"
def test_create_user_success(client, connector) -> None: # given create_response_payload = """ { "user": { "id":"145985", "username":"******", "user_full_name":"Test User", "user_email":"*****@*****.**", "role":"Member", "email_service":"true", "email_product":"true", "last_login":null, "created_date":"2020-12-09T14:33:28.330Z", "updated_date":"2020-12-09T14:33:28.369Z", "company_id":"74333", "user_api_token":null, "filters":{}, "saved_filters":[] } }""" connector.response_text = create_response_payload connector.response_code = HTTPStatus.CREATED # when user = User(full_name="Test User", email="*****@*****.**", role="Member", email_service=True, email_product=True) created = client.users.create(user) # then request properly formed assert connector.last_url_path == "/user" assert connector.last_method == APICallMethods.POST assert connector.last_payload is not None assert "user" in connector.last_payload assert connector.last_payload["user"]["user_full_name"] == "Test User" assert connector.last_payload["user"]["user_email"] == "*****@*****.**" assert connector.last_payload["user"]["role"] == "Member" assert connector.last_payload["user"]["email_service"] is True assert connector.last_payload["user"]["email_product"] is True # and response properly parsed assert created.id == ID(145985) assert created.username == "*****@*****.**" assert created.full_name == "Test User" assert created.email == "*****@*****.**" assert created.company_id == ID(74333) assert created.role == "Member" assert created.password is None assert created.email_service is True assert created.email_product is True assert created.api_token is None
def test_update_custom_application_success() -> None: # given update_response_payload = """ { "id": 207, "company_id": "74333", "user_id": "144319", "name": "apitest-customapp-one", "description": "TESTING CUSTOM APPS", "ip_range": "192.168.5.1,192.168.5.2", "protocol": "6,17", "port": "9011,9012,9013", "asn": "asn1,asn2,asn3", "cdate": "2020-12-11T07:07:20.968Z", "edate": "2020-12-11T07:07:20.968Z" }""" connector = StubAPIConnector(update_response_payload, HTTPStatus.OK) custom_applications_api = CustomApplicationsAPI(connector) # when app_id = ID(207) app = CustomApplication( id=app_id, name="apitest-customapp-one", description="TESTING CUSTOM APPS", ip_range="192.168.5.1,192.168.5.2", port="9011,9012,9013", ) updated = custom_applications_api.update(app) # then request properly formed assert connector.last_url_path == f"/customApplications/{app_id}" assert connector.last_method == APICallMethods.PUT assert connector.last_payload is not None assert connector.last_payload["name"] == "apitest-customapp-one" assert connector.last_payload["description"] == "TESTING CUSTOM APPS" assert connector.last_payload["ip_range"] == "192.168.5.1,192.168.5.2" assert connector.last_payload["port"] == "9011,9012,9013" assert "protocol" not in connector.last_payload assert "asn" not in connector.last_payload # and response properly parsed assert updated.name == "apitest-customapp-one" assert updated.description == "TESTING CUSTOM APPS" assert updated.ip_range == "192.168.5.1,192.168.5.2" assert updated.protocol == "6,17" assert updated.port == "9011,9012,9013" assert updated.asn == "asn1,asn2,asn3" assert updated.id == ID(207) assert updated.user_id == ID(144319) assert updated.company_id == ID(74333) assert updated.created_date == "2020-12-11T07:07:20.968Z" assert updated.updated_date == "2020-12-11T07:07:20.968Z"
def test_get_saved_filter_success(client, connector) -> None: # given get_response_payload = """ { "id":8153, "company_id":"74333", "filters":{ "connector":"All", "filterGroups":[ { "connector":"All", "filters":[{ "filterField":"dst_as", "filterValue":"81", "operator":"=" }], "not":false }] }, "filter_name":"test_filter1", "filter_description":"This is test filter description", "cdate":"2020-12-16T11:26:18.578Z", "edate":"2020-12-26T11:26:19.187Z", "filter_level":"company" }""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK filter_id = ID(8153) # when saved_filter = client.saved_filters.get(filter_id) # then assert connector.last_url_path == f"/saved-filter/custom/{filter_id}" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None assert saved_filter.id == ID(8153) assert saved_filter.filter_name == "test_filter1" assert saved_filter.filter_description == "This is test filter description" assert saved_filter.company_id == ID(74333) assert saved_filter.filter_level == "company" assert saved_filter.created_date == "2020-12-16T11:26:18.578Z" assert saved_filter.updated_date == "2020-12-26T11:26:19.187Z" assert saved_filter.filters.connector == "All" assert saved_filter.filters.filterGroups[0].connector == "All" assert saved_filter.filters.filterGroups[0].not_ is False assert saved_filter.filters.filterGroups[0].filters[ 0].filterField == "dst_as" assert saved_filter.filters.filterGroups[0].filters[0].filterValue == "81" assert saved_filter.filters.filterGroups[0].filters[0].operator == "="
def test_create_custom_application_success() -> None: # given create_response_payload = """ { "name": "apitest-customapp-1", "description": "Testing custom application api", "ip_range": "192.168.0.1,192.168.0.2", "protocol": "6,17", "port": "9001,9002,9003", "asn": "asn1,asn2,asn3", "id": 207, "user_id": "144319", "company_id": "74333" }""" connector = StubAPIConnector(create_response_payload, HTTPStatus.OK) custom_applications_api = CustomApplicationsAPI(connector) # when app = CustomApplication( name="apitest-customapp-1", description="Testing custom application api", ip_range="192.168.0.1,192.168.0.2", protocol="6,17", port="9001,9002,9003", asn="asn1,asn2,asn3", ) created = custom_applications_api.create(app) # then request properly formed assert connector.last_url_path == "/customApplications" assert connector.last_method == APICallMethods.POST assert connector.last_payload is not None assert connector.last_payload["name"] == "apitest-customapp-1" assert connector.last_payload[ "description"] == "Testing custom application api" assert connector.last_payload["ip_range"] == "192.168.0.1,192.168.0.2" assert connector.last_payload["protocol"] == "6,17" assert connector.last_payload["port"] == "9001,9002,9003" assert connector.last_payload["asn"] == "asn1,asn2,asn3" # and response properly parsed assert created.name == "apitest-customapp-1" assert created.description == "Testing custom application api" assert created.ip_range == "192.168.0.1,192.168.0.2" assert created.protocol == "6,17" assert created.port == "9001,9002,9003" assert created.asn == "asn1,asn2,asn3" assert created.id == ID(207) assert created.user_id == ID(144319) assert created.company_id == ID(74333)
def test_delete_tenant_user_success(client, connector) -> None: # given delete_response_payload = "" # deleting user responds with empty body connector.response_text = delete_response_payload connector.response_code = HTTPStatus.NO_CONTENT # when tenant_id = ID(577) tenant_user_id = ID(148099) delete_successful = client.my_kentik_portal.delete_tenant_user(tenant_id, tenant_user_id) # then assert connector.last_url_path == f"/mykentik/tenant/577/user/148099" assert connector.last_method == APICallMethods.DELETE assert connector.last_payload is None assert delete_successful is True
def test_get_device_label_success(client, connector) -> None: # given get_response_payload = """ { "id": 32, "name": "ISP", "color": "#f1d5b9", "user_id": "52", "company_id": "72", "order": 0, "devices": [ { "id": "42", "device_name": "my_device_1", "device_subtype": "router" } ], "created_date": "2018-05-16T20:21:10.406Z", "updated_date": "2018-05-16T20:21:10.406Z" }""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK # when device_label_id = ID(32) device_label = client.device_labels.get(device_label_id) # then request properly formed assert connector.last_url_path == f"/deviceLabels/{device_label_id}" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # then response properly parsed assert device_label.id == ID(32) assert device_label.name == "ISP" assert device_label.color == "#f1d5b9" assert device_label.user_id == ID(52) assert device_label.company_id == ID(72) assert device_label.created_date == "2018-05-16T20:21:10.406Z" assert device_label.updated_date == "2018-05-16T20:21:10.406Z" assert len(device_label.devices) == 1 assert device_label.devices[0].id == ID(42) assert device_label.devices[0].device_name == "my_device_1" assert device_label.devices[0].device_subtype == "router"
def test_get_user_success(client, connector) -> None: # given get_response_payload = """ { "user": { "id":"145999", "username":"******", "user_full_name":"Test User", "user_email":"*****@*****.**", "role":"Member", "email_service":true, "email_product":true, "last_login":null, "created_date":"2020-12-09T14:48:42.187Z", "updated_date":"2020-12-09T14:48:43.243Z", "company_id":"74333", "user_api_token":"****************************a997", "filters":{}, "saved_filters":[] } }""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK # when user_id = ID(145999) user = client.users.get(user_id) # then request properly formed assert connector.last_url_path == f"/user/{user_id}" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # then response properly parsed assert int(user.id) == 145999 assert user.username == "*****@*****.**" assert user.full_name == "Test User" assert user.email == "*****@*****.**" assert user.company_id == ID(74333) assert user.role == "Member" assert user.password is None assert user.email_service is True assert user.email_product is True assert user.api_token == "****************************a997"
def test_update_user_success(client, connector) -> None: # given update_response_payload = """ { "user":{ "id":"146034", "username":"******", "user_full_name":"User Testing", "user_email":"*****@*****.**", "role":"Member", "email_service":true, "email_product":true, "last_login":null, "created_date":"2020-12-09T15:23:29.768Z", "updated_date":"2020-12-09T15:23:31.108Z", "company_id":"74333", "user_api_token":null, "filters":{}, "saved_filters":[] } }""" connector.response_text = update_response_payload connector.response_code = HTTPStatus.OK # when user_id = ID(146034) user = User( id=user_id, full_name="User Testing", ) updated = client.users.update(user) # then request properly formed assert connector.last_url_path == f"/user/{user_id}" assert connector.last_method == APICallMethods.PUT assert connector.last_payload is not None assert "user" in connector.last_payload assert connector.last_payload["user"]["user_full_name"] == "User Testing" # then response properly parsed assert updated.id == ID(146034) assert updated.full_name == "User Testing" assert updated.email == "*****@*****.**"
def test_get_tenant_success(client, connector) -> None: # given get_response_payload = """ { "id":577, "name":"test_tenant", "description":"This is test tenant", "users": [ { "id":"148099", "user_email":"*****@*****.**", "last_login":null, "tenant_id":"577", "company_id":"74333" },{ "id":"148113", "user_email":"*****@*****.**", "last_login":null, "tenant_id":"577", "company_id":"74333" }], "created_date":"2020-12-21T10:55:52.449Z", "updated_date":"2020-12-22T10:55:52.449Z" }""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK tenant_id = ID(577) # when tenant = client.my_kentik_portal.get(tenant_id) # then assert connector.last_url_path == f"/mykentik/tenant/577" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None assert tenant.id == ID(577) assert tenant.name == "test_tenant" assert tenant.description == "This is test tenant" assert tenant.users[0].id == ID(148099) assert tenant.users[1].id == ID(148113) assert tenant.created_date == "2020-12-21T10:55:52.449Z" assert tenant.updated_date == "2020-12-22T10:55:52.449Z"
def test_delete_populator_success() -> None: # given delete_response_payload = "" # deleting populator responds with empty body connector = StubAPIConnector(delete_response_payload, HTTPStatus.NO_CONTENT) custom_dimensions_api = CustomDimensionsAPI(connector) # when populator_id = ID(42) dimension_id = ID(4002) delete_successful = custom_dimensions_api.populators.delete( dimension_id, populator_id) # then request properly formed assert connector.last_url_path == f"/customdimension/{dimension_id}/populator/{populator_id}" assert connector.last_method == APICallMethods.DELETE assert connector.last_payload is None # then response properly parsed assert delete_successful
def test_create_custom_dimension_success() -> None: # given create_response_payload = """ { "customDimension": { "id": 42, "name": "c_testapi_dimension_1", "display_name": "dimension_display_name", "type": "string", "company_id": "74333", "populators": [] } }""" connector = StubAPIConnector(create_response_payload, HTTPStatus.OK) custom_dimensions_api = CustomDimensionsAPI(connector) # when dimension = CustomDimension( name="c_testapi_dimension_1", display_name="dimension_display_name", type="string", ) created = custom_dimensions_api.create(dimension) # then request properly formed assert connector.last_url_path == "/customdimension" assert connector.last_method == APICallMethods.POST assert connector.last_payload is not None assert connector.last_payload["name"] == "c_testapi_dimension_1" assert connector.last_payload["display_name"] == "dimension_display_name" assert connector.last_payload["type"] == "string" # and response properly parsed assert created.id == ID(42) assert created.name == "c_testapi_dimension_1" assert created.display_name == "dimension_display_name" assert created.type == "string" assert created.company_id == ID(74333) assert created.populators is not None assert len(created.populators) == 0
def test_update_device_label_success(client, connector) -> None: # given update_response_payload = """ { "id": 42, "name": "apitest-device_label-one", "color": "#00FF00", "user_id": "52", "company_id": "72", "devices": [], "created_date": "2018-05-16T20:21:10.406Z", "updated_date": "2018-05-16T20:21:10.406Z" }""" connector.response_text = update_response_payload connector.response_code = HTTPStatus.OK # when device_label_id = ID(42) device_label = DeviceLabel(id=device_label_id, name="apitest-device_label-one") updated = client.device_labels.update(device_label) # then request properly formed assert connector.last_url_path == f"/deviceLabels/{device_label_id}" assert connector.last_method == APICallMethods.PUT assert connector.last_payload is not None assert connector.last_payload["name"] == "apitest-device_label-one" assert "color" not in connector.last_payload # then response properly parsed assert updated.id == ID(42) assert updated.name == "apitest-device_label-one" assert updated.color == "#00FF00" assert updated.user_id == ID(52) assert updated.company_id == ID(72) assert updated.created_date == "2018-05-16T20:21:10.406Z" assert updated.updated_date == "2018-05-16T20:21:10.406Z" assert len(updated.devices) == 0
def test_create_device_label_success(client, connector) -> None: # given create_response_payload = """ { "id": 42, "name": "apitest-device_label-1", "color": "#00FF00", "user_id": "52", "company_id": "72", "order": 0, "devices": [], "created_date": "2018-05-16T20:21:10.406Z", "updated_date": "2018-05-16T20:21:10.406Z" }""" connector.response_text = create_response_payload connector.response_code = HTTPStatus.CREATED # when device_label = DeviceLabel("apitest-device_label-1", "#00FF00") created = client.device_labels.create(device_label) # then request properly formed assert connector.last_url_path == "/deviceLabels" assert connector.last_method == APICallMethods.POST assert connector.last_payload is not None assert connector.last_payload["name"] == "apitest-device_label-1" assert connector.last_payload["color"] == "#00FF00" # and response properly parsed assert created.id == ID(42) assert created.name == "apitest-device_label-1" assert created.color == "#00FF00" assert created.user_id == ID(52) assert created.company_id == ID(72) assert created.created_date == "2018-05-16T20:21:10.406Z" assert created.updated_date == "2018-05-16T20:21:10.406Z" assert len(created.devices) == 0
def test_delete_saved_filter_success(client, connector) -> None: # given delete_response_payload = "" # deleting user responds with empty body connector.response_text = delete_response_payload connector.response_code = HTTPStatus.NO_CONTENT # when filter_id = ID(8153) delete_successful = client.saved_filters.delete(filter_id) # then assert connector.last_url_path == f"/saved-filter/custom/{filter_id}" assert connector.last_method == APICallMethods.DELETE assert connector.last_payload is None assert delete_successful is True
def test_update_saved_filter_success(client, connector) -> None: # given get_response_payload = """ { "id":8153, "company_id":"74333", "filters":{ "connector":"All", "filterGroups":[ { "connector":"All", "filters":[{ "filterField":"dst_as", "filterValue":"81", "operator":"=" }], "not":false }] }, "filter_name":"test_filter1", "filter_description":"Updated Saved Filter description", "cdate":"2020-12-16T11:26:18.578Z", "edate":"2020-12-16T11:26:19.187Z", "filter_level":"company" }""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK # when filter_id = ID(8153) filter_ = Filter(filterField="dst_as", filterValue="81", operator="=") filter_groups = [ FilterGroups(connector="All", not_=False, filters=[filter_]) ] filters = Filters(connector="All", filterGroups=filter_groups) to_update = SavedFilter( filter_name="test_filter1", filters=filters, id=filter_id, filter_description="Updated Saved Filter description") updated = client.saved_filters.update(to_update) # then assert connector.last_url_path == f"/saved-filter/custom/{filter_id}" assert connector.last_method == APICallMethods.PUT assert connector.last_payload is not None assert updated.filter_description == "Updated Saved Filter description"
def test_delete_site_success(client, connector) -> None: # given delete_response_payload = "" # deleting site responds with empty body connector.response_text = delete_response_payload connector.response_code = HTTPStatus.NO_CONTENT # when site_id = ID(42) delete_successful = client.sites.delete(site_id) # then request properly formed assert connector.last_url_path == f"/site/{site_id}" assert connector.last_method == APICallMethods.DELETE assert connector.last_payload is None # then response properly parsed assert delete_successful
def test_delete_tag_success() -> None: # given delete_response_payload = "" # deleting tag responds with empty body connector = StubAPIConnector(delete_response_payload, HTTPStatus.NO_CONTENT) tags_api = TagsAPI(connector) # when tag_id = ID(42) delete_successful = tags_api.delete(tag_id) # then request properly formed assert connector.last_url_path == f"/tag/{tag_id}" assert connector.last_method == APICallMethods.DELETE assert connector.last_payload is None # then response properly parsed assert delete_successful
def test_delete_custom_application_success() -> None: # given delete_response_payload = "" # deleting custom application responds with empty body connector = StubAPIConnector(delete_response_payload, HTTPStatus.NO_CONTENT) custom_applications_api = CustomApplicationsAPI(connector) # when app_id = ID(42) delete_successful = custom_applications_api.delete(app_id) # then request properly formed assert connector.last_url_path == f"/customApplications/{app_id}" assert connector.last_method == APICallMethods.DELETE assert connector.last_payload is None # then response properly parsed assert delete_successful
def test_delete_device_label_success(client, connector) -> None: # given delete_response_payload = """ { "success": true }""" connector.response_text = delete_response_payload connector.response_code = HTTPStatus.OK # when device_label_id = ID(42) delete_successful = client.device_labels.delete(device_label_id) # then request properly formed assert connector.last_url_path == f"/deviceLabels/{device_label_id}" assert connector.last_method == APICallMethods.DELETE assert connector.last_payload is None # then response properly parsed assert delete_successful
def test_update_populator_success() -> None: # given update_response_payload = """ { "populator": { "id": 1510862280, "dimension_id": 24001, "value": "testapi-dimension-value-3", "direction": "SRC", "interface_name": "interface3", "addr_count": 0, "tcp_flags": "12", "protocol": "17", "user": "******", "created_date": "2020-12-15T07:55:23.911095Z", "updated_date": "2020-12-15T10:50:22.35787Z", "company_id": "74333", "device_type": "device-type3", "site": "site3", "mac_count": 0 } }""" connector = StubAPIConnector(update_response_payload, HTTPStatus.OK) custom_dimensions_api = CustomDimensionsAPI(connector) # when populator_id = ID(1510862280) dimension_id = ID(24001) populator = Populator( id=populator_id, dimension_id=dimension_id, value="testapi-dimension-value-3", direction=Populator.Direction.SRC, interface_name="interface3", tcp_flags="12", protocol="17", device_type="device-type3", site="site3", ) updated = custom_dimensions_api.populators.update(populator) # then request properly formed assert connector.last_url_path == f"/customdimension/{dimension_id}/populator/{populator_id}" assert connector.last_method == APICallMethods.PUT assert connector.last_payload is not None assert "populator" in connector.last_payload assert connector.last_payload["populator"][ "value"] == "testapi-dimension-value-3" assert connector.last_payload["populator"]["direction"] == "SRC" assert connector.last_payload["populator"]["device_type"] == "device-type3" assert connector.last_payload["populator"]["site"] == "site3" assert connector.last_payload["populator"][ "interface_name"] == "interface3" assert connector.last_payload["populator"]["tcp_flags"] == "12" assert connector.last_payload["populator"]["protocol"] == "17" assert "device_name" not in connector.last_payload["populator"] assert "addr" not in connector.last_payload["populator"] assert "port" not in connector.last_payload["populator"] assert "asn" not in connector.last_payload["populator"] assert "lasthop_as_name" not in connector.last_payload["populator"] assert "nexthop_asn" not in connector.last_payload["populator"] assert "nexthop_as_name" not in connector.last_payload["populator"] assert "nexthop" not in connector.last_payload["populator"] assert "bgp_aspath" not in connector.last_payload["populator"] assert "bgp_community" not in connector.last_payload["populator"] assert "mac" not in connector.last_payload["populator"] assert "country" not in connector.last_payload["populator"] assert "vlans" not in connector.last_payload["populator"] # and response properly parsed assert updated.id == ID(1510862280) assert updated.dimension_id == ID(24001) assert updated.value == "testapi-dimension-value-3" assert updated.direction == Populator.Direction.SRC assert updated.interface_name == "interface3" assert updated.addr_count == 0 assert updated.tcp_flags == "12" assert updated.protocol == "17" assert updated.user == "144319" assert updated.created_date == "2020-12-15T07:55:23.911095Z" assert updated.updated_date == "2020-12-15T10:50:22.35787Z" assert updated.company_id == ID(74333) assert updated.device_type == "device-type3" assert updated.site == "site3" assert updated.mac_count == 0
def test_get_all_device_labels_success(client, connector) -> None: # given get_response_payload = """ [ { "id": 41, "name": "device_labels_1", "color": "#5289D9", "user_id": "136885", "company_id": "74333", "devices": [], "created_date": "2020-11-20T12:54:49.575Z", "updated_date": "2020-11-20T12:54:49.575Z" }, { "id": 42, "name": "device_labels_2", "color": "#3F4EA0", "user_id": "136885", "company_id": "74333", "devices": [ { "id": "1", "device_name": "device1", "device_type": "type1", "device_subtype": "subtype1" }, { "id": "2", "device_name": "device2", "device_type": "type2", "device_subtype": "subtype2" } ], "created_date": "2020-11-20T13:45:27.430Z", "updated_date": "2020-11-20T13:45:27.430Z" } ]""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK # when labels = client.device_labels.get_all() # then request properly formed assert connector.last_url_path == "/deviceLabels" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # then response properly parsed assert len(labels) == 2 assert labels[1].id == ID(42) assert labels[1].name == "device_labels_2" assert labels[1].color == "#3F4EA0" assert labels[1].user_id == ID(136885) assert labels[1].company_id == ID(74333) assert labels[1].created_date == "2020-11-20T13:45:27.430Z" assert labels[1].updated_date == "2020-11-20T13:45:27.430Z" assert len(labels[1].devices) == 2 assert labels[1].devices[1].id == ID(2) assert labels[1].devices[1].device_name == "device2" assert labels[1].devices[1].device_subtype == "subtype2" assert labels[1].devices[1].device_type == "type2"
def test_get_custom_dimension_success() -> None: # given get_response_payload = """ { "customDimension": { "id": 42, "name": "c_testapi_dimension_1", "display_name": "dimension_display_name", "type": "string", "company_id": "74333", "populators": [ { "id": 1510871096, "dimension_id": 24001, "value": "testapi-dimension-value-1", "direction": "DST", "device_name": "128.0.0.100,device1", "interface_name": "interface1,interface2", "addr": "128.0.0.1/32,128.0.0.2/32", "addr_count": 2, "port": "1001,1002", "tcp_flags": "160", "protocol": "6,17", "asn": "101,102", "nexthop_asn": "201,202", "nexthop": "128.0.200.1/32,128.0.200.2/32", "bgp_aspath": "3001,3002", "bgp_community": "401:499,501:599", "user": "******", "created_date": "2020-12-15T08:32:19.503788Z", "updated_date": "2020-12-15T08:32:19.503788Z", "company_id": "74333", "device_type": "device-type1", "site": "site1,site2,site3", "lasthop_as_name": "asn101,asn102", "nexthop_as_name": "asn201,asn202", "mac": "FF:FF:FF:FF:FF:FA,FF:FF:FF:FF:FF:FF", "mac_count": 2, "country": "NL,SE", "vlans": "2001,2002" }, { "id": 1510862280, "dimension_id": 24001, "value": "testapi-dimension-value-3", "direction": "SRC", "addr_count": 0, "user": "******", "created_date": "2020-12-15T07:55:23.911095Z", "updated_date": "2020-12-15T11:11:30.300681Z", "company_id": "74333", "site": "site3", "mac_count": 0 } ] } }""" connector = StubAPIConnector(get_response_payload, HTTPStatus.OK) custom_dimensions_api = CustomDimensionsAPI(connector) # when dimension_id = ID(42) dimension = custom_dimensions_api.get(dimension_id) # then request properly formed assert connector.last_url_path == f"/customdimension/{dimension_id}" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # and response properly parsed assert dimension.id == ID(42) assert dimension.name == "c_testapi_dimension_1" assert dimension.display_name == "dimension_display_name" assert dimension.type == "string" assert dimension.company_id == ID(74333) assert dimension.populators is not None assert len(dimension.populators) == 2 assert dimension.populators[1].id == ID(1510862280) assert dimension.populators[1].dimension_id == ID(24001) assert dimension.populators[1].value == "testapi-dimension-value-3" assert dimension.populators[1].direction == Populator.Direction.SRC assert dimension.populators[1].addr_count == 0 assert dimension.populators[1].user == "144319" assert dimension.populators[ 1].created_date == "2020-12-15T07:55:23.911095Z" assert dimension.populators[ 1].updated_date == "2020-12-15T11:11:30.300681Z" assert dimension.populators[1].company_id == ID(74333) assert dimension.populators[1].site == "site3" assert dimension.populators[1].mac_count == 0
def test_get_tag_success() -> None: # given get_response_payload = """ { "tag": { "id": 42, "flow_tag": "APITEST-TAG-1", "device_name": "192.168.5.100,device1", "interface_name": "interface1,interface2", "addr": "192.168.0.1/32,192.168.0.2/32", "addr_count": 2, "port": "9000,9001", "tcp_flags": "7", "protocol": "6,17", "asn": "101,102,103", "nexthop": "192.168.7.1/32,192.168.7.2/32", "nexthop_asn": "51,52,53", "bgp_aspath": "201,202,203", "bgp_community": "301,302,303", "user": "******", "created_date": "2020-12-10T11:53:48.752418Z", "updated_date": "2020-12-10T11:53:48.752418Z", "company_id": "74333", "device_type": "router,switch", "site": "site1,site2", "lasthop_as_name": "as1,as2,as3", "nexthop_as_name": "as51,as52,as53", "mac": "FF:FF:FF:FF:FF:FE,FF:FF:FF:FF:FF:FF", "mac_count": 2, "country": "ES,IT", "edited_by": "*****@*****.**", "vlans": "4001,4002,4003" } }""" connector = StubAPIConnector(get_response_payload, HTTPStatus.OK) tags_api = TagsAPI(connector) # when tag_id = ID(42) tag = tags_api.get(tag_id) # then request properly formed assert connector.last_url_path == f"/tag/{tag_id}" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # and response properly parsed assert tag.flow_tag == "APITEST-TAG-1" assert tag.device_name == "192.168.5.100,device1" assert tag.interface_name == "interface1,interface2" assert tag.addr == "192.168.0.1/32,192.168.0.2/32" assert tag.port == "9000,9001" assert tag.tcp_flags == "7" assert tag.protocol == "6,17" assert tag.asn == "101,102,103" assert tag.nexthop == "192.168.7.1/32,192.168.7.2/32" assert tag.nexthop_asn == "51,52,53" assert tag.bgp_aspath == "201,202,203" assert tag.bgp_community == "301,302,303" assert tag.device_type == "router,switch" assert tag.site == "site1,site2" assert tag.lasthop_as_name == "as1,as2,as3" assert tag.nexthop_as_name == "as51,as52,as53" assert tag.mac == "FF:FF:FF:FF:FF:FE,FF:FF:FF:FF:FF:FF" assert tag.country == "ES,IT" assert tag.vlans == "4001,4002,4003" assert tag.id == ID(42) assert tag.company_id == ID(74333) assert tag.addr_count == 2 assert tag.user_id == ID(144319) assert tag.mac_count == 2 assert tag.edited_by == "*****@*****.**" assert tag.created_date == "2020-12-10T11:53:48.752418Z" assert tag.updated_date == "2020-12-10T11:53:48.752418Z"
def test_create_tag_success() -> None: # given create_response_payload = """ { "tag": { "id": 42, "flow_tag": "APITEST-TAG-1", "device_name": "192.168.5.100,device1", "interface_name": "interface1,interface2", "addr": "192.168.0.1/32,192.168.0.2/32", "addr_count": 2, "port": "9000,9001", "tcp_flags": "7", "protocol": "6,17", "asn": "101,102,103", "nexthop": "192.168.7.1/32,192.168.7.2/32", "nexthop_asn": "51,52,53", "bgp_aspath": "201,202,203", "bgp_community": "301,302,303", "user": "******", "created_date": "2020-12-10T11:53:48.752418Z", "updated_date": "2020-12-10T11:53:48.752418Z", "company_id": "74333", "device_type": "router,switch", "site": "site1,site2", "lasthop_as_name": "as1,as2,as3", "nexthop_as_name": "as51,as52,as53", "mac": "FF:FF:FF:FF:FF:FE,FF:FF:FF:FF:FF:FF", "mac_count": 2, "country": "ES,IT", "edited_by": "*****@*****.**", "vlans": "4001,4002,4003" } }""" connector = StubAPIConnector(create_response_payload, HTTPStatus.CREATED) tags_api = TagsAPI(connector) # when tag = Tag( flow_tag="APITEST-TAG-1", device_name="device1,192.168.5.100", device_type="router,switch", site="site1,site2", interface_name="interface1,interface2", addr="192.168.0.1,192.168.0.2", port="9000,9001", tcp_flags="7", protocol="6,17", asn="101,102,103", lasthop_as_name="as1,as2,as3", nexthop_asn="51,52,53", nexthop_as_name="as51,as52,as53", nexthop="192.168.7.1,192.168.7.2", bgp_aspath="201,202,203", bgp_community="301,302,303", mac="FF:FF:FF:FF:FF:FE,FF:FF:FF:FF:FF:FF", country="ES,IT", vlans="4001,4002,4003", ) created = tags_api.create(tag) # then request properly formed assert connector.last_url_path == "/tag" assert connector.last_method == APICallMethods.POST assert connector.last_payload is not None assert "tag" in connector.last_payload assert connector.last_payload["tag"]["flow_tag"] == "APITEST-TAG-1" assert connector.last_payload["tag"][ "device_name"] == "device1,192.168.5.100" assert connector.last_payload["tag"]["device_type"] == "router,switch" assert connector.last_payload["tag"]["site"] == "site1,site2" assert connector.last_payload["tag"][ "interface_name"] == "interface1,interface2" assert connector.last_payload["tag"]["addr"] == "192.168.0.1,192.168.0.2" assert connector.last_payload["tag"]["port"] == "9000,9001" assert connector.last_payload["tag"]["tcp_flags"] == "7" assert connector.last_payload["tag"]["protocol"] == "6,17" assert connector.last_payload["tag"]["asn"] == "101,102,103" assert connector.last_payload["tag"]["lasthop_as_name"] == "as1,as2,as3" assert connector.last_payload["tag"]["nexthop_asn"] == "51,52,53" assert connector.last_payload["tag"]["nexthop_as_name"] == "as51,as52,as53" assert connector.last_payload["tag"][ "nexthop"] == "192.168.7.1,192.168.7.2" assert connector.last_payload["tag"]["bgp_aspath"] == "201,202,203" assert connector.last_payload["tag"]["bgp_community"] == "301,302,303" assert connector.last_payload["tag"][ "mac"] == "FF:FF:FF:FF:FF:FE,FF:FF:FF:FF:FF:FF" assert connector.last_payload["tag"]["country"] == "ES,IT" assert connector.last_payload["tag"]["vlans"] == "4001,4002,4003" # and response properly parsed assert created.flow_tag == "APITEST-TAG-1" assert created.device_name == "192.168.5.100,device1" assert created.interface_name == "interface1,interface2" assert created.addr == "192.168.0.1/32,192.168.0.2/32" assert created.port == "9000,9001" assert created.tcp_flags == "7" assert created.protocol == "6,17" assert created.asn == "101,102,103" assert created.nexthop == "192.168.7.1/32,192.168.7.2/32" assert created.nexthop_asn == "51,52,53" assert created.bgp_aspath == "201,202,203" assert created.bgp_community == "301,302,303" assert created.device_type == "router,switch" assert created.site == "site1,site2" assert created.lasthop_as_name == "as1,as2,as3" assert created.nexthop_as_name == "as51,as52,as53" assert created.mac == "FF:FF:FF:FF:FF:FE,FF:FF:FF:FF:FF:FF" assert created.country == "ES,IT" assert created.vlans == "4001,4002,4003" assert created.id == ID(42) assert created.company_id == ID(74333) assert created.addr_count == 2 assert created.user_id == ID(144319) assert created.mac_count == 2 assert created.edited_by == "*****@*****.**" assert created.created_date == "2020-12-10T11:53:48.752418Z" assert created.updated_date == "2020-12-10T11:53:48.752418Z"
def test_get_all_plans_success(client, connector) -> None: # given get_response_payload = """ { "plans":[ { "active":true, "bgp_enabled":true, "cdate":"2020-09-03T08:41:57.489Z", "company_id":74333, "description":"Your Free Trial includes 6 devices at a maximum of 1000 fps each. Please contact...", "deviceTypes":[ { "device_type":"router" }, { "device_type":"host-nprobe-dns-www" } ], "devices":[ { "id":"77714", "device_name":"testapi_router_minimal_1", "device_type":"router" }, { "id":"77720", "device_name":"testapi_dns_minimal_1", "device_type":"host-nprobe-dns-www" }, { "id":"77724", "device_name":"testapi_router_minimal_postman", "device_type":"router" }, { "id":"77715", "device_name":"testapi_router_full_1", "device_type":"router" } ], "edate":"2020-09-03T08:41:57.489Z", "fast_retention":30, "full_retention":30, "id":11466, "max_bigdata_fps":30, "max_devices":6, "max_fps":1000, "name":"Free Trial Plan", "metadata":{ } }] }""" connector.response_text = get_response_payload connector.response_code = HTTPStatus.OK # when plans = client.plans.get_all() # then request properly formed assert connector.last_url_path == f"/plans" assert connector.last_method == APICallMethods.GET assert connector.last_payload is None # then response properly parsed assert len(plans) == 1 assert plans[0].active is True assert plans[0].company_id == ID(74333) assert len(plans[0].device_types) == 2 assert plans[0].device_types[0].device_type == "router" assert len(plans[0].devices) == 4 assert plans[0].devices[0].id == ID(77714)