1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
###############################################################################
# Copyright (c) 2017 Koren Lev (Cisco Systems), Yaron Yogev (Cisco Systems) #
# and others #
# #
# All rights reserved. This program and the accompanying materials #
# are made available under the terms of the Apache License, Version 2.0 #
# which accompanies this distribution, and is available at #
# http://www.apache.org/licenses/LICENSE-2.0 #
###############################################################################
from discover.fetchers.cli.cli_fetch_host_vservices import CliFetchHostVservices
from test.fetch.test_fetch import TestFetch
from test.fetch.cli_fetch.test_data.cli_fetch_host_verservices import *
from unittest.mock import MagicMock
class TestCliFetchHostVservices(TestFetch):
def setUp(self):
self.configure_environment()
self.fetcher = CliFetchHostVservices()
self.fetcher.set_env(self.env)
def test_get(self):
# store original get_single method
original_get_single = self.fetcher.inv.get_single
# mock the host data
self.fetcher.inv.get_single = MagicMock(return_value=NETWORK_HOST)
# store original run_fetch_lines method
original_run_fetch_lines = self.fetcher.run_fetch_lines
# mock command line results
self.fetcher.run_fetch_lines = MagicMock(return_value=NAMESPACES)
# only test the logic on get method, mock the set_details method
original_set_details = self.fetcher.set_details
self.fetcher.set_details = MagicMock()
result = self.fetcher.get(NETWORK_HOST['id'])
# reset methods
self.fetcher.run_fetch_lines = original_run_fetch_lines
self.fetcher.set_details = original_set_details
self.fetcher.inv.get_single = original_get_single
self.assertNotEqual(result, [], "Can't get verservices")
def test_get_with_wrong_host_type(self):
# store original get_single method
original_get_single = self.fetcher.inv.get_single
# mock the host data
self.fetcher.inv.get_single = MagicMock(return_value=COMPUTE_HOST)
result = self.fetcher.get(COMPUTE_HOST['id'])
self.fetcher.inv.get_single = original_get_single
self.assertEqual(result, [], "Can't get empty array when the host_type doesn't contain Network")
def test_set_details(self):
# store orginal methods
original_get_router_name = self.fetcher.get_router_name
original_get_network_name = self.fetcher.get_network_name
original_get_type = self.fetcher.agents_list.get_type
# mock methods
self.fetcher.get_network_name = MagicMock(return_value=ROUTER[0]['name'])
self.fetcher.get_router_name = MagicMock(return_value=ROUTER[0]['name'])
self.fetcher.agents_list.get_type = MagicMock(return_value=AGENT)
self.fetcher.set_details(NETWORK_HOST['id'], LOCAL_SERVICES_IDS[0])
# reset methods
self.fetcher.get_network_name = original_get_network_name
self.fetcher.get_router_name = original_get_router_name
self.fetcher.agents_list.get_type = original_get_type
self.assertIn("name", LOCAL_SERVICES_IDS[0], "Can't add name")
self.assertIn("parent_id", LOCAL_SERVICES_IDS[0], "Can't add parent id")
def test_get_network_name(self):
# store original method
original_get_objects_list_for_id = self.fetcher.get_objects_list_for_id
# mock the result
self.fetcher.get_objects_list_for_id = MagicMock(return_value=ROUTER)
name = self.fetcher.get_network_name(ID_CLEAN)
self.fetcher.get_objects_list_for_id = original_get_objects_list_for_id
self.assertEqual(name, ROUTER[0]['name'], "Can't get network name")
def test_get_network_without_router(self):
# store original method
original_get_objects_list_for_id = self.fetcher.get_objects_list_for_id
# mock the result
self.fetcher.get_objects_list_for_id = MagicMock(return_value=[])
name = self.fetcher.get_network_name(ID_CLEAN)
self.fetcher.get_objects_list_for_id = original_get_objects_list_for_id
self.assertEqual(name, ID_CLEAN, "Can't use the id as the name when network info from database is empty")
def test_get_router_name(self):
# store original method
original_get_objects_list_for_id = self.fetcher.get_objects_list_for_id
# mock the result
self.fetcher.get_objects_list_for_id = MagicMock(return_value=ROUTER)
name = self.fetcher.get_router_name(LOCAL_SERVICES_IDS[0], ID_CLEAN)
self.fetcher.get_objects_list_for_id = original_get_objects_list_for_id
self.assertIn("name", LOCAL_SERVICES_IDS[0], "Can't get network name")
self.assertEqual(name, ROUTER[0]['name'], "Can't get router name")
def test_set_agent_type(self):
# store original get_type method
original_get_type = self.fetcher.agents_list.get_type
self.fetcher.agents_list.get_type = MagicMock(return_value=AGENT)
self.fetcher.set_agent_type(VSERVICE)
# reset method
self.fetcher.set_agent_type = original_get_type
self.assertIn("parent_id", VSERVICE, "Can't add parent id to vservice document")
def test_set_agent_type_without_agent(self):
# store original get_type method
original_get_type = self.fetcher.agents_list.get_type
self.fetcher.agents_list.get_type = MagicMock(return_value={})
self.fetcher.set_agent_type(VSERVICE)
# reset method
self.fetcher.set_agent_type = original_get_type
self.assertIn("parent_id", VSERVICE, "Can't add parent id to vservice document")
self.assertEqual(VSERVICE['parent_type'], "vservice_miscellenaous_folder",
"Can't add document to miscellenaous folder when it doesn't have agent")
|