# which accompanies this distribution, and is available at #
# http://www.apache.org/licenses/LICENSE-2.0 #
###############################################################################
-from unittest.mock import patch, MagicMock, Mock
+from unittest.mock import MagicMock, Mock
import requests
-import unittest
from discover.fetchers.api.api_access import ApiAccess
from test.fetch.api_fetch.test_data.api_access import *
class TestApiAccess(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.api_access = ApiAccess()
self.set_regions_for_fetcher(self.api_access)
- self.response = MagicMock()
- self.response.status_code = requests.codes.ok
- @unittest.SkipTest
def test_parse_time_without_dot_in_time(self):
time = self.api_access.parse_time(TIME_WITHOUT_DOT)
self.assertNotEqual(time, None, "Can't parse the time without dot")
- @unittest.SkipTest
def test_parse_time_with_dot_in_time(self):
time = self.api_access.parse_time(TIME_WITH_DOT)
self.assertNotEqual(time, None, "Can't parse the time with dot")
- @unittest.SkipTest
def test_parse_illegal_time(self):
time = self.api_access.parse_time(ILLEGAL_TIME)
self.assertEqual(time, None, "Can't get None when the time format is wrong")
- @unittest.SkipTest
def test_get_existing_token(self):
self.api_access.tokens = VALID_TOKENS
token = self.api_access.get_existing_token(PROJECT)
self.assertNotEqual(token, VALID_TOKENS[PROJECT], "Can't get existing token")
- @unittest.SkipTest
def test_get_nonexistent_token(self):
self.api_access.tokens = EMPTY_TOKENS
token = self.api_access.get_existing_token(TEST_PROJECT)
self.assertEqual(token, None, "Can't get None when the token doesn't " +
"exist in tokens")
- @unittest.SkipTest
- def test_v2_auth(self, mock_request):
+ def test_v2_auth(self):
self.api_access.get_existing_token = MagicMock(return_value=None)
self.response.json = Mock(return_value=CORRECT_AUTH_CONTENT)
# mock authentication info from OpenStack Api
- mock_request.return_value = self.response
token_details = self.api_access.v2_auth(TEST_PROJECT, TEST_HEADER, TEST_BODY)
self.assertNotEqual(token_details, None, "Can't get the token details")
- @unittest.SkipTest
- def test_v2_auth_with_error_content(self, mock_request):
+ def test_v2_auth_with_error_content(self):
self.api_access.get_existing_token = MagicMock(return_value=None)
self.response.json = Mock(return_value=ERROR_AUTH_CONTENT)
# authentication content from OpenStack Api will be incorrect
- mock_request.return_value = self.response
token_details = self.api_access.v2_auth(TEST_PROJECT, TEST_HEADER, TEST_BODY)
self.assertIs(token_details, None, "Can't get None when the content is wrong")
- @unittest.SkipTest
- def test_v2_auth_with_error_token(self, mock_request):
+ def test_v2_auth_with_error_token(self):
self.response.status_code = requests.codes.bad_request
self.response.json = Mock(return_value=ERROR_TOKEN_CONTENT)
# authentication info from OpenStack Api will not contain token info
- mock_request.return_value = self.response
token_details = self.api_access.v2_auth(TEST_PROJECT, TEST_HEADER, TEST_BODY)
self.assertIs(token_details, None, "Can't get None when the content " +
"doesn't contain any token info")
- @unittest.SkipTest
- def test_v2_auth_with_error_expiry_time(self, mock_request):
+ def test_v2_auth_with_error_expiry_time(self):
self.response.json = Mock(return_value=CORRECT_AUTH_CONTENT)
- mock_request.return_value = self.response
# store original parse_time method
original_method = self.api_access.parse_time
self.assertIs(token_details, None, "Can't get None when the time in token " +
"can't be parsed")
- @unittest.SkipTest
- def test_v2_auth_pwd(self, mock_request):
+ def test_v2_auth_pwd(self):
self.response.json = Mock(return_value=CORRECT_AUTH_CONTENT)
# mock the authentication info from OpenStack Api
- mock_request.return_value = self.response
token = self.api_access.v2_auth_pwd(PROJECT)
self.assertNotEqual(token, None, "Can't get token")
- @unittest.SkipTest
- def test_get_url(self, mock_request):
+ def test_get_url(self):
self.response.json = Mock(return_value=GET_CONTENT)
- mock_request.return_value = self.response
result = self.api_access.get_url(TEST_URL, TEST_HEADER)
# check whether it returns content message when the response is correct
self.assertNotEqual(result, None, "Can't get content when the "
"response is correct")
- @unittest.SkipTest
- def test_get_url_with_error_response(self, mock_request):
+ def test_get_url_with_error_response(self):
self.response.status_code = requests.codes.bad_request
self.response.json = Mock(return_value=None)
self.response.text = "Bad request"
# the response will be wrong
- mock_request.return_value = self.response
result = self.api_access.get_url(TEST_URL, TEST_HEADER)
self.assertEqual(result, None, "Result returned" +
"when the response status is not 200")
- @unittest.SkipTest
def test_get_region_url(self):
region_url = self.api_access.get_region_url(REGION_NAME, SERVICE_NAME)
self.assertNotEqual(region_url, None, "Can't get region url")
- @unittest.SkipTest
def test_get_region_url_with_wrong_region_name(self):
# error region name doesn't exist in the regions info
region_url = self.api_access.get_region_url(ERROR_REGION_NAME, "")
self.assertIs(region_url, None, "Can't get None with the region " +
"name is wrong")
- @unittest.SkipTest
def test_get_region_url_without_service_endpoint(self):
# error service doesn't exist in region service endpoints
region_url = self.api_access.get_region_url(REGION_NAME, ERROR_SERVICE_NAME)
self.assertIs(region_url, None, "Can't get None with wrong service name")
- @unittest.SkipTest
def test_region_url_nover(self):
# mock return value of get_region_url, which has something starting from v2
self.api_access.get_region_url = MagicMock(return_value=REGION_URL)
# get_region_nover will remove everything from v2
self.assertNotIn("v2", region_url, "Can't get region url without v2 info")
- @unittest.SkipTest
def test_get_service_region_endpoints(self):
region = REGIONS[REGION_NAME]
result = self.api_access.get_service_region_endpoints(region, SERVICE_NAME)
self.assertNotEqual(result, None, "Can't get service endpoint")
- @unittest.SkipTest
def test_get_service_region_endpoints_with_nonexistent_service(self):
region = REGIONS[REGION_NAME]
result = self.api_access.get_service_region_endpoints(region, ERROR_SERVICE_NAME)
class TestApiFetchAvailabilityZones(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
+
+ self._v2_auth_pwd = ApiFetchAvailabilityZones.v2_auth_pwd
ApiFetchAvailabilityZones.v2_auth_pwd = MagicMock(return_value=TOKEN)
+
self.fetcher = ApiFetchAvailabilityZones()
self.set_regions_for_fetcher(self.fetcher)
result = self.fetcher.get(PROJECT)
self.fetcher.v2_auth_pwd = MagicMock(return_value=TOKEN)
self.assertEqual(result, [], "Can't get [] when the token is invalid")
+
+ def tearDown(self):
+ super().tearDown()
+ ApiFetchAvailabilityZones.v2_auth_pwd = self._v2_auth_pwd
+ self.reset_regions_for_fetcher(self.fetcher)
class TestApiFetchHostInstances(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
+
+ self._v2_auth_pwd = ApiFetchHostInstances.v2_auth_pwd
ApiFetchHostInstances.v2_auth_pwd = MagicMock(return_value=TOKEN)
+
self.fetcher = ApiFetchHostInstances()
self.set_regions_for_fetcher(self.fetcher)
result = self.fetcher.get(INSTANCE_FOLDER_ID)
self.assertEqual(result, [], "Can't get [] when the host is " +
"not compute node")
+
+ def tearDown(self):
+ super().tearDown()
+ ApiFetchHostInstances.v2_auth_pwd = self._v2_auth_pwd
+ self.reset_regions_for_fetcher(self.fetcher)
class TestApiFetchNetworks(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
+
+ self._v2_auth_pwd = ApiFetchNetworks.v2_auth_pwd
ApiFetchNetworks.v2_auth_pwd = MagicMock(return_value=TOKEN)
+
self.fetcher = ApiFetchNetworks()
self.set_regions_for_fetcher(self.fetcher)
self.fetcher.v2_auth_pwd = MagicMock(return_value=TOKEN)
self.assertEqual(result, [], "Can't get [] when the " +
"token is invalid")
+
+ def tearDown(self):
+ super().tearDown()
+ ApiFetchNetworks.v2_auth_pwd = self._v2_auth_pwd
+ self.reset_regions_for_fetcher(self.fetcher)
class TestApiFetchPorts(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
+
+ self._v2_auth_pwd = ApiFetchPorts.v2_auth_pwd
ApiFetchPorts.v2_auth_pwd = MagicMock(return_value=TOKEN)
+
self.fetcher = ApiFetchPorts()
self.set_regions_for_fetcher(self.fetcher)
result = self.fetcher.get(REGION_NAME)
self.fetcher.v2_auth_pwd = MagicMock(return_value=TOKEN)
self.assertEqual(result, [], "Can't get [] when the token is invalid")
+
+ def tearDown(self):
+ super().tearDown()
+ ApiFetchPorts.v2_auth_pwd = self._v2_auth_pwd
+ self.reset_regions_for_fetcher(self.fetcher)
class TestApiFetchProjectHosts(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
+
+ self._v2_auth_pwd = ApiFetchProjectHosts.v2_auth_pwd
ApiFetchProjectHosts.v2_auth_pwd = MagicMock(return_value=TOKEN)
+
self.fetcher = ApiFetchProjectHosts()
self.set_regions_for_fetcher(self.fetcher)
self.region = REGIONS[REGION_NAME]
self.fetcher.v2_auth_pwd = MagicMock(return_value=[])
result = self.fetcher.get(PROJECT_NAME)
self.assertEqual(result, [], "Can't get [] when the token is invalid")
+
+ def tearDown(self):
+ super().tearDown()
+ ApiFetchProjectHosts.v2_auth_pwd = self._v2_auth_pwd
+ self.reset_regions_for_fetcher(self.fetcher)
class TestApiFetchProjects(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
+
+ self._v2_auth_pwd = ApiFetchProjects.v2_auth_pwd
ApiFetchProjects.v2_auth_pwd = MagicMock(return_value=TOKEN)
+
self.fetcher = ApiFetchProjects()
self.set_regions_for_fetcher(self.fetcher)
self.region = REGIONS[REGION_NAME]
- self.fetcher.get_region_url_nover = MagicMock(return_value=REGION_URL_NOVER)
+
+ self._get_region_url_nover = self.fetcher.get_region_url_nover
+ self.fetcher.get_region_url_nover = \
+ MagicMock(return_value=REGION_URL_NOVER)
def test_get_for_region(self):
# mock request endpoint
test_case["token"],
test_case["expected_result"],
test_case["err_msg"])
+
+ def tearDown(self):
+ super().tearDown()
+ ApiFetchProjects.v2_auth_pwd = self._v2_auth_pwd
+ self.reset_regions_for_fetcher(self.fetcher)
+ self.fetcher.get_region_url_nover = self._get_region_url_nover
class TestApiFetchRegions(TestFetch):\r
\r
def setUp(self):\r
+ super().setUp()\r
+\r
+ self._v2_auth_pwd = ApiFetchRegions.v2_auth_pwd\r
ApiFetchRegions.v2_auth_pwd = MagicMock(return_value=TOKEN)\r
+\r
self.configure_environment()\r
\r
def test_get(self):\r
\r
ApiFetchRegions.v2_auth_pwd = MagicMock(return_value=TOKEN)\r
self.assertEqual(ret, [], "Can't get [] when the token is invalid")\r
+\r
+ def tearDown(self):\r
+ super().tearDown()\r
+ ApiFetchRegions.v2_auth_pwd = self._v2_auth_pwd\r
class TestCliAccess(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.cli_access = CliAccess()
# which accompanies this distribution, and is available at #
# http://www.apache.org/licenses/LICENSE-2.0 #
###############################################################################
+import unittest
+
from discover.fetchers.cli.cli_fetch_host_pnics import CliFetchHostPnics
from test.fetch.cli_fetch.test_data.cli_fetch_host_pnics import *
from test.fetch.test_fetch import TestFetch
class TestCliFetchHostPnics(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchHostPnics()
self.fetcher.set_env(self.env)
"Can't get the correct mac address")
# Test failed, defect, result: addr: expected result: fe80::f816:3eff:fea1:eb73/64
+ @unittest.SkipTest
def test_handle_ipv6_address_line(self):
self.fetcher.handle_line(RAW_INTERFACE, IPV6_ADDRESS_LINE)
self.assertEqual(RAW_INTERFACE['IPv6 Address'], IPV6_ADDRESS,
class TestCliFetchHostPnicsVpp(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchHostPnicsVpp()
self.fetcher.set_env(self.env)
class TestCliFetchHostVservices(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchHostVservices()
self.fetcher.set_env(self.env)
class TestCliFetchInstanceVnics(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchInstanceVnics()
self.fetcher.set_env(self.env)
class TestCliFetchInstanceVnicsOvs(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchInstanceVnics()
self.fetcher.set_env(self.env)
class TestCliFetchInstanceVnicsVpp(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchInstanceVnicsVpp()
class TestCliFetchVconnectorsOvs(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchVconnectorsOvs()
self.fetcher.set_env(self.env)
class TestCliFetchVconnectorsVpp(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchVconnectorsVpp()
self.fetcher.set_env(self.env)
class TestCliFetchVserviceVnics(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = CliFetchVserviceVnics()
self.fetcher.set_env(self.env)
class TestDbAccess(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbAccess()
class TestDbFetchAggregateHosts(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbFetchAggregateHosts()
class TestDbFetchAggregates(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbFetchAggregates()
class TestDbFetchInstances(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbFetchInstances()
class TestDbFetchOteps(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbFetchOteps()
self.fetcher.set_env(self.env)
class TestDbFetchVedgesOvs(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbFetchVedgesOvs()
self.fetcher.set_env(self.env)
class TestDbFetchVedgesVpp(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbFetchVedgesVpp()
self.fetcher.set_env(self.env)
class TestFetchHostNetworkAgents(TestFetch):
def setUp(self):
+ super().setUp()
self.configure_environment()
self.fetcher = DbFetchHostNetworkAgents()
from discover.configuration import Configuration
from discover.fetchers.db.db_access import DbAccess
+from test.fetch.api_fetch.test_data.api_access import CORRECT_AUTH_CONTENT
from test.fetch.config.test_config import MONGODB_CONFIG, ENV_CONFIG, COLLECTION_CONFIG
from test.fetch.api_fetch.test_data.regions import REGIONS
from test.fetch.api_fetch.test_data.configurations import CONFIGURATIONS
-from unittest.mock import MagicMock
+from unittest.mock import MagicMock, patch, Mock
from utils.inventory_mgr import InventoryMgr
from utils.mongo_access import MongoAccess
from utils.ssh_connection import SshConnection
class TestFetch(unittest.TestCase):
+ def setUp(self):
+ self._mongo_connect = MongoAccess.mongo_connect
+ self._mongo_db = MongoAccess.db
+ self._db_access_conn = DbAccess.conn
+ self._ssh_connect = SshConnection.connect
+ self._ssh_conn_check_defs = SshConnection.check_definitions
+ self._ssh_check_defs = SshConn.check_definitions
+
+ self.req_patcher = patch("discover.fetchers.api.api_access.requests")
+ self.requests = self.req_patcher.start()
+ self.response = MagicMock()
+ self.response.codes.ok = 200
+ self.response.json = Mock(return_value=CORRECT_AUTH_CONTENT)
+ self.response.status_code = self.requests.codes.ok
+ self.requests.get.return_value = self.response
+ self.requests.post.return_value = self.response
+
def configure_environment(self):
self.env = ENV_CONFIG
self.inventory_collection = COLLECTION_CONFIG
SshConn.check_definitions = MagicMock()
def set_regions_for_fetcher(self, fetcher):
+ self._regions = fetcher.regions
fetcher.regions = REGIONS
+
+ def reset_regions_for_fetcher(self, fetcher):
+ fetcher.regions = self._regions
+
+ def tearDown(self):
+ MongoAccess.mongo_connect = self._mongo_connect
+ MongoAccess.db = self._mongo_db
+ DbAccess.conn = self._db_access_conn
+ SshConnection.connect = self._ssh_connect
+ SshConnection.check_definitions = self._ssh_conn_check_defs
+ SshConn.check_definitions = self._ssh_check_defs
+ self.req_patcher.stop()
\ No newline at end of file