Skip to content
Snippets Groups Projects
Commit cff5b3b4 authored by Robert Latta's avatar Robert Latta
Browse files

added tests for IMS class

parent 911427e2
No related branches found
No related tags found
No related merge requests found
......@@ -5,6 +5,152 @@ from inventory_provider.db.ims import InventoryStatus
from inventory_provider.db.ims_data import lookup_lg_routers, lookup_pop_info
class MockResponse:
def __init__(self, json_data, status_code):
self.json_data = json_data
self.status_code = status_code
def json(self):
return self.json_data
def raise_for_status(self):
pass
def test_ims_class_login(mocker):
mock_post = mocker.patch('inventory_provider.db.ims.requests.post')
mock_get = mocker.patch('inventory_provider.db.ims.requests.get')
mock_post.return_value = MockResponse("my_bearer_token", 200)
ds = inventory_provider.db.ims.IMS(
'dummy_base', 'dummy_username', 'dummy_password')
ds.get_entity_by_id('Node', 1234)
mock_post.assert_called_once_with(
'dummy_base/login', auth=('dummy_username', 'dummy_password'))
mock_get.assert_called_once_with(
'dummy_base/ims/Node/1234',
headers={'Authorization': 'my_bearer_token'},
params=None)
def test_ims_class_entity_by_id(mocker):
mock_get = mocker.patch('inventory_provider.db.ims.requests.get')
ds = inventory_provider.db.ims.IMS(
'dummy_base', 'dummy_username', 'dummy_password', 'dummy_bt')
ds.get_entity_by_id('Node', 1234)
mock_get.assert_called_once_with(
'dummy_base/ims/Node/1234',
headers={'Authorization': 'dummy_bt'},
params=None)
def test_ims_class_entity_by_name(mocker):
mock_get = mocker.patch('inventory_provider.db.ims.requests.get')
ds = inventory_provider.db.ims.IMS(
'dummy_base', 'dummy_username', 'dummy_password', 'dummy_bt')
ds.get_entity_by_name('Node', 'dummy_name')
mock_get.assert_called_once_with(
'dummy_base/ims/Node/byname/dummy_name',
headers={'Authorization': 'dummy_bt'},
params=None)
def test_ims_class_filtered_entities(mocker):
mock_get = mocker.patch('inventory_provider.db.ims.requests.get')
ds = inventory_provider.db.ims.IMS(
'dummy_base', 'dummy_username', 'dummy_password', 'dummy_bt')
list(ds.get_filtered_entities('Node', 'dummy_param=dummy value'))
mock_get.assert_called_once_with(
'dummy_base/ims/Node/filtered/dummy_param=dummy value',
headers={'Authorization': 'dummy_bt'},
params={
'paginatorStartElement': 0,
'paginatorNumberOfElements':
inventory_provider.db.ims.IMS.NO_OF_ELEMENTS_PER_ITERATION
})
inventory_provider.db.ims.IMS.NO_OF_ELEMENTS_PER_ITERATION = 2
def side_effect(*args, **kargs):
if kargs['params']['paginatorStartElement'] == 0:
return MockResponse([1, 2], 200)
return MockResponse([3], 200)
mock_multi_get = mocker.patch(
'inventory_provider.db.ims.requests.get', side_effect=side_effect)
res = list(ds.get_filtered_entities('Node', 'dummy_param=dummy value'))
mock_multi_get.assert_any_call(
'dummy_base/ims/Node/filtered/dummy_param=dummy value',
headers={'Authorization': 'dummy_bt'},
params={
'paginatorStartElement': 0,
'paginatorNumberOfElements': 2
})
mock_multi_get.assert_any_call(
'dummy_base/ims/Node/filtered/dummy_param=dummy value',
headers={'Authorization': 'dummy_bt'},
params={
'paginatorStartElement': 2,
'paginatorNumberOfElements': 2
})
assert mock_multi_get.call_count == 2
assert res == [1, 2, 3]
def test_ims_class_get_all_entities(mocker):
mock_get = mocker.patch('inventory_provider.db.ims.requests.get')
ds = inventory_provider.db.ims.IMS(
'dummy_base', 'dummy_username', 'dummy_password', 'dummy_bt')
list(ds.get_all_entities('Node'))
mock_get.assert_called_once_with(
'dummy_base/ims/Node/filtered/Id <> 0',
headers={'Authorization': 'dummy_bt'},
params={
'paginatorStartElement': 0,
'paginatorNumberOfElements':
inventory_provider.db.ims.IMS.NO_OF_ELEMENTS_PER_ITERATION
})
def test_ims_class_navigation_properties(mocker):
mock_get = mocker.patch('inventory_provider.db.ims.requests.get')
ds = inventory_provider.db.ims.IMS(
'dummy_base', 'dummy_username', 'dummy_password', 'dummy_bt')
ds.get_entity_by_id('Node', 1234, navigation_properties=[1, 2, 3])
mock_get.assert_called_with(
'dummy_base/ims/Node/1234',
headers={'Authorization': 'dummy_bt'},
params={'navigationproperty': 6})
def test_ims_class_cache(mocker):
mock_get = mocker.patch('inventory_provider.db.ims.requests.get')
ds = inventory_provider.db.ims.IMS(
'dummy_base', 'dummy_username', 'dummy_password', 'dummy_bt')
ds.get_entity_by_id(
'Node', 4567, navigation_properties=[1, 2, 3, 4], use_cache=True)
assert mock_get.call_count == 1
ds.get_entity_by_id(
'Node', 4567, navigation_properties=[1, 2, 3, 4], use_cache=True)
assert mock_get.call_count == 1
ds.get_entity_by_id(
'Node', 4567, navigation_properties=[1, 2, 3, 4], use_cache=False)
assert mock_get.call_count == 2
ds.get_entity_by_id(
'Node', 4567, navigation_properties=[1, 2, 3, 4])
assert mock_get.call_count == 3
ds.get_entity_by_id(
'Node', 4567, navigation_properties=[1, 2, 3, 4, 5], use_cache=True)
assert mock_get.call_count == 4
def test_lookup_lg_routers(mocker):
ims = mocker.patch('inventory_provider.db.ims.IMS')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment