def test_index(self, path, mock_vnf_list): req = fake_request.HTTPRequest.blank(path) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) expected_result = fakes.index_response(remove_attrs=[ 'softwareImages', 'checksum', 'userDefinedData']) self.assertEqual(expected_result, res_dict)
def test_package_and_get_package_vnfd_err(self, mock_nfvo_download_vnf_packages, mock_from_db_vnf_package, mock_save_vnf_package, mock_vnf_package, mock_get_by_id, mock_glance_store): # glance_store mock Settings mock_glance_store.return_value = 'location', 0, 'checksum',\ 'multihash', 'loc_meta' # vnf_package_vnfd mock Settings mock_get_by_id.side_effect = Exception # SyncVnfPackage.create_package vnf_package_info = vnfpkgm_fakes.index_response()[0] self.assertRaises(exc.HTTPInternalServerError, sync.SyncVnfPackage.create_package, self.context, vnf_package_info) # Check if a mock is called even once mock_nfvo_download_vnf_packages.assert_called() mock_from_db_vnf_package.assert_called() mock_save_vnf_package.assert_called() mock_vnf_package.assert_called() mock_get_by_id.assert_called() mock_glance_store.assert_called()
def test_package_and_package_vnfd_creation_successful( self, mock_upload_vnf_package_content, mock_nfvo_download_vnf_packages, mock_from_db_vnf_package, mock_save_vnf_package, mock_vnf_package, mock_get_by_id, mock_glance_store): # glance_store mock Settings mock_glance_store.return_value = 'location', 0, 'checksum',\ 'multihash', 'loc_meta' updates = { 'additionalArtifacts': [{ 'artifactPath': 'sample1_file.yaml', 'checksum': { 'hash': '53b504e608eef3d19a\ 22413bf6ee72f42091fbb5213e6a876a3a22f6c3c94fe1', 'algorithm': 'SHA-256' } }, { 'artifactPath': 'sample2_file.yaml', 'checksum': { 'hash': '43b504e608eef3d19a\ 22413bf6ee72f42091fbb5213e6a876a3a22f6c3c94fe1', 'algorithm': 'SHA-256' } }] } vnf_package_info = vnfpkgm_fakes.index_response( remove_attrs=['userDefinedData'], vnf_package_updates=updates)[0] exp_vnf_package_vnfd = \ vnflcm_fakes.fake_vnf_package_vnfd_model_dict(**updates) mock_get_by_id.return_value = exp_vnf_package_vnfd vnf_package_vnfd = sync.SyncVnfPackage.create_package( self.context, vnf_package_info) # Expected value setting self.assertEqual(exp_vnf_package_vnfd.get('package_uuid'), vnf_package_vnfd.get('package_uuid')) self.assertEqual(exp_vnf_package_vnfd.get('vnfd_id'), vnf_package_vnfd.get('vnfd_id')) self.assertEqual(exp_vnf_package_vnfd.get('vnf_provider'), vnf_package_vnfd.get('vnf_provider')) self.assertEqual(exp_vnf_package_vnfd.get('vnf_product_name'), vnf_package_vnfd.get('vnf_product_name')) self.assertEqual(exp_vnf_package_vnfd.get('vnf_software_version'), vnf_package_vnfd.get('vnf_software_version')) self.assertEqual(exp_vnf_package_vnfd.get('vnfd_version'), vnf_package_vnfd.get('vnfd_version')) # Check if a mock is called even once mock_upload_vnf_package_content.assert_called() mock_nfvo_download_vnf_packages.assert_called() mock_from_db_vnf_package.assert_called() mock_save_vnf_package.assert_called() mock_vnf_package.assert_called() mock_get_by_id.assert_called() mock_glance_store.assert_called()
def test_index_attribute_selector_all_fields(self, mock_vnf_list): params = {'all_fields': ''} query = urllib.parse.urlencode(params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) expected_result = fakes.index_response() self.assertEqual(expected_result, res_dict)
def test_index_filter_attributes(self, filter_params, mock_vnf_list): """Test various attributes supported for filter parameter """ query = urllib.parse.urlencode(filter_params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) expected_result = fakes.index_response(remove_attrs=[ 'softwareImages', 'checksum', 'userDefinedData']) self.assertEqual(expected_result, res_dict)
def test_index_attribute_selector_user_defined_data(self, mock_vnf_list): params = {'fields': 'userDefinedData/key1,userDefinedData/key2'} query = urllib.parse.urlencode(params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) expected_result = fakes.index_response(remove_attrs=[ 'checksum', 'softwareImages']) self.assertEqual(expected_result, res_dict)
def test_index_attribute_selector_exclude_fields(self, params, mock_vnf_list): query = urllib.parse.urlencode(params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) remove_attrs = [params['exclude_fields']] expected_result = fakes.index_response(remove_attrs=remove_attrs) self.assertEqual(expected_result, res_dict)
def test_index_filter_combination(self, mock_vnf_list): """Test multiple filter parameters separated by semicolon """ params = {'filter': '(eq,vnfdId,dummy_vnfd_id);(eq,id,dummy_id)'} query = urllib.parse.urlencode(params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) expected_result = fakes.index_response(remove_attrs=[ 'softwareImages', 'checksum', 'userDefinedData']) self.assertEqual(expected_result, res_dict)
def test_package_and_package_vnfd_creation_package_create_err( self, mock_vnf_package): # vnf_package mock Settings mock_vnf_package.side_effect = Exception # SyncVnfPackage.create_package vnf_package_info = vnfpkgm_fakes.index_response()[0] self.assertRaises(exc.HTTPInternalServerError, sync.SyncVnfPackage.create_package, self.context, vnf_package_info) # Check if a mock is called even once mock_vnf_package.assert_called()
def test_index_attribute_selector_fields(self, params, mock_vnf_list): """Test valid attribute names with fields parameter We can specify complex attributes in fields. Hence the data only contains such attributes. """ complex_attrs = ['softwareImages', 'checksum', 'userDefinedData'] query = urllib.parse.urlencode(params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) remove_attrs = [x for x in complex_attrs if x != params['fields']] expected_result = fakes.index_response(remove_attrs=remove_attrs) self.assertEqual(expected_result, res_dict)
def test_package_and_package_vnfd_creation_exception( self, mock_nfvo_download_vnf_packages, mock_from_db_vnf_package, mock_vnf_package): # VnfPackageRequest.download_vnf_packages mock Settings mock_nfvo_download_vnf_packages.side_effect = Exception # SyncVnfPackage.create_package vnf_package_info = vnfpkgm_fakes.index_response()[0] self.assertRaises(exc.HTTPInternalServerError, sync.SyncVnfPackage.create_package, self.context, vnf_package_info) # Check if a mock is called even once mock_vnf_package.assert_called() mock_from_db_vnf_package.assert_called() mock_nfvo_download_vnf_packages.assert_called()
def test_index_filter_valid_string_values(self, filter_params, mock_vnf_list): """Tests all the supported string values. For example: - values which are not enclosed in single quotes - values which are enclosed in single quotes - values having single quotes within them - values having round brackets in them """ query = urllib.parse.urlencode(filter_params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) expected_result = fakes.index_response(remove_attrs=[ 'softwareImages', 'checksum', 'userDefinedData']) self.assertEqual(expected_result, res_dict)
def test_package_and_package_vnfd_creation_undefinedexcep( self, mock_nfvo_download_vnf_packages, mock_from_db_vnf_package, mock_vnf_package): # VnfPackageRequest.download_vnf_packages mock Settings mock_nfvo_download_vnf_packages.side_effect = \ nfvo_client.UndefinedExternalSettingException( "Vnf package the external setting to 'base_url' undefined.") # SyncVnfPackage.create_package vnf_package_info = vnfpkgm_fakes.index_response()[0] self.assertRaises(exc.HTTPNotFound, sync.SyncVnfPackage.create_package, self.context, vnf_package_info) # Check if a mock is called even once mock_vnf_package.assert_called() mock_from_db_vnf_package.assert_called() mock_nfvo_download_vnf_packages.assert_called()
def test_index_attribute_selector_nested_complex_attribute(self, mock_vnf_list): params = {'fields': 'softwareImages/checksum/algorithm,' 'softwareImages/minRam'} query = urllib.parse.urlencode(params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) vnf_package_updates = { 'softwareImages': [{ 'minRam': 0, 'checksum': {'algorithm': 'fake-algorithm'} }] } expected_result = fakes.index_response(remove_attrs=[ 'checksum', 'userDefinedData'], vnf_package_updates=vnf_package_updates) self.assertEqual(expected_result, res_dict)
def test_package_and_package_vnfd_creation_falieddownloadexcep( self, mock_nfvo_download_vnf_packages, mock_from_db_vnf_package, mock_vnf_package): # VnfPackageRequest.download_vnf_packages mock Settings vnf_package_zip = '' mock_nfvo_download_vnf_packages.side_effect = \ nfvo_client.FaliedDownloadContentException( "Failed response content, vnf_package_zip={}".format( vnf_package_zip)) # SyncVnfPackage.create_package vnf_package_info = vnfpkgm_fakes.index_response()[0] self.assertRaises(exc.HTTPInternalServerError, sync.SyncVnfPackage.create_package, self.context, vnf_package_info) # Check if a mock is called even once mock_vnf_package.assert_called() mock_from_db_vnf_package.assert_called() mock_nfvo_download_vnf_packages.assert_called()
def test_index_attribute_selector_user_defined_data_combination(self, mock_vnf_list): """Query user defined data with fields parameter This test queries combination of user defined data. i.e. fields of different complex attributes. """ params = { 'fields': 'userDefinedData/key1,softwareImages/userMetadata/key3', } query = urllib.parse.urlencode(params) req = fake_request.HTTPRequest.blank('/vnfpkgm/v1/vnf_packages?' + query) mock_vnf_list.return_value = fakes.return_vnf_package_list() res_dict = self.controller.index(req) vnf_package_updates = { 'userDefinedData': {'key1': 'value1'}, 'softwareImages': [{'userMetadata': {'key3': 'value3'}}] } expected_result = fakes.index_response(remove_attrs=[ 'checksum'], vnf_package_updates=vnf_package_updates) self.assertEqual(expected_result, res_dict)