def test_service_unknown(): """Integration tests for Service.""" response = requests.post("{}/reset".format(SDC.base_front_url)) response.raise_for_status() vendor = Vendor(name="test") vendor.onboard() vsp = Vsp(name="test", package=open( "{}/ubuntu16.zip".format( os.path.dirname(os.path.abspath(__file__))), 'rb')) vsp.vendor = vendor vsp.onboard() vf = Vf(name='test', vsp=vsp) vf.onboard() svc = Service(name='test') assert svc.identifier is None assert svc.status is None svc.create() assert svc.identifier is not None assert svc.status == const.DRAFT svc.add_resource(vf) svc.checkin() assert svc.status == const.CHECKED_IN svc.certify() assert svc.status == const.CERTIFIED svc.distribute() assert svc.status == const.DISTRIBUTED assert svc.distributed
def test_get_all_some_vsps(mock_send, mock_load_status): """Returns a list of vsp.""" mock_send.return_value = { 'results': [{ 'name': 'one', 'id': '1234', 'vendorName': 'vspOne' }, { 'name': 'two', 'id': '1235', 'vendorName': 'vspOne' }] } assert len(Vsp.get_all()) == 2 vsp_1 = Vsp.get_all()[0] assert vsp_1.name == "one" assert vsp_1.identifier == "1234" assert vsp_1.created() vsp_2 = Vsp.get_all()[1] assert vsp_2.name == "two" assert vsp_2.identifier == "1235" assert vsp_2.vendor == vsp_1.vendor assert vsp_2.created() mock_send.assert_called_with( "GET", 'get Vsps', 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/onboarding-api/v1.0/vendor-software-products' )
def test__get_item_details_created(mock_send): vsp = Vsp() vsp.identifier = "1234" mock_send.return_value = {'return': 'value'} assert vsp._get_item_details() == {'return': 'value'} mock_send.assert_called_once_with( 'GET', 'get item', "{}/items/1234/versions".format(vsp._base_url()))
def test_vendor_created_but_already_vendor(mock_created, mock_details): mock_created.return_value = True vsp = Vsp() vendor = Vendor() vsp.vendor = vendor assert vsp.vendor == vendor mock_details.assert_not_called()
def test_service_properties(): """Integration test to check properties assignment for Service.""" response = requests.post("{}/reset".format(SDC.base_front_url)) response.raise_for_status() vendor = Vendor(name="test") vendor.onboard() vsp = Vsp(name="test", package=open( "{}/ubuntu16.zip".format( os.path.dirname(os.path.abspath(__file__))), 'rb')) vsp.vendor = vendor vsp.onboard() vf = Vf(name='test', vsp=vsp) vf.onboard() properties = [ Property(name="test1", property_type="string", value="123"), Property(name="test2", property_type="integer") ] svc = Service(name='test', resources=[vf], properties=properties, inputs=[properties[1]]) svc.onboard() service_properties = list(svc.properties) service_inputs = list(svc.inputs) assert len(service_properties) == 2 assert len(service_inputs) == 1
def execute(self): """Onboard Vsps from YAML template. Use settings values: - VENDOR_NAME. """ super().execute() vendor: Vendor = Vendor(name=settings.VENDOR_NAME) if "vnfs" in self.yaml_template: for vnf in self.yaml_template["vnfs"]: with open(sys.path[-1] + "/" + vnf["heat_files_to_upload"], "rb") as package: vsp: Vsp = Vsp(name=f"{vnf['vnf_name']}_VSP", vendor=vendor, package=package) vsp.onboard() elif "pnfs" in self.yaml_template: for pnf in self.yaml_template["pnfs"]: if "heat_files_to_upload" in pnf: with open(sys.path[-1] + "/" + pnf["heat_files_to_upload"], "rb") as package: vsp: Vsp = Vsp(name=f"{pnf['pnf_name']}_VSP", vendor=vendor, package=package) vsp.onboard()
def test_create_csar_not_Certified(mock_send, mock_status, status): """Do nothing if not created.""" vsp = Vsp() vsp._status = status vsp.create_csar() mock_send.assert_not_called() assert vsp.csar_uuid == None
def test_service_upload_tca_artifact(): """Integration tests for Service.""" response = requests.post("{}/reset".format(SDC.base_front_url)) response.raise_for_status() vendor = Vendor(name="test") vendor.onboard() vsp = Vsp(name="test", package=open( "{}/ubuntu16.zip".format( os.path.dirname(os.path.abspath(__file__))), 'rb')) vsp.vendor = vendor vsp.onboard() vf = Vf(name='test', vsp=vsp) vf.onboard() svc = Service(name='test') svc.create() svc.add_resource(vf) assert svc.status == const.DRAFT payload_file = open( "{}/tca_clampnode.yaml".format( os.path.dirname(os.path.abspath(__file__))), 'rb') data = payload_file.read() svc.add_artifact_to_vf(vnf_name="test", artifact_type="DCAE_INVENTORY_BLUEPRINT", artifact_name="tca_clampnode.yaml", artifact=data) payload_file.close()
def test_status_version_is_not_dirty(mock_vsp_items, mock_vsp_items_version, mock_vsp_details): vsp = Vsp() vsp.identifier = "1234" mock_vsp_items.return_value = {'results': [{'status': const.DRAFT}]} mock_vsp_items_version.return_value = {"state": {'dirty': False}} mock_vsp_details.return_value = {'validationData': "true"} assert vsp.status == const.COMMITED
def test_status_version_is_dirty_no_validation_data_but_state( mock_vsp_items, mock_vsp_items_version, mock_vsp_details): vsp = Vsp() vsp.identifier = "1234" mock_vsp_items.return_value = {'results': [{'status': const.DRAFT}]} mock_vsp_items_version.return_value = {"state": {'dirty': True}} mock_vsp_details.return_value = {'no_validationData': {'some': 'thing'}} assert vsp.status == const.DRAFT
def test_create_already_exists(mock_send, mock_exists): """Do nothing if already created in SDC.""" vsp = Vsp() vendor = Vendor() vendor._identifier = "1232" vsp.vendor = vendor mock_exists.return_value = True vsp.create() mock_send.assert_not_called()
def test_create_already_exists(mock_category, mock_send, mock_exists): """Do nothing if already created in SDC.""" pnf = Pnf() vsp = Vsp() vsp._identifier = "1232" pnf.vsp = vsp mock_exists.return_value = True pnf.create() mock_send.assert_not_called()
def test_create_already_exists(mock_category, mock_send, mock_exists): """Do nothing if already created in SDC.""" vf = Vf(vendor=MagicMock()) vsp = Vsp() vsp._identifier = "1232" vf.vsp = vsp mock_exists.return_value = True vf.create() mock_send.assert_not_called()
def test_init_no_name(mock_created): """Check init with no names.""" mock_created.return_value = False vsp = Vsp() assert isinstance(vsp, SdcElement) assert vsp._identifier == None assert vsp._version == None assert vsp.name == "ONAP-test-VSP" assert vsp.headers["USER_ID"] == "cs0008" assert vsp.vendor == None assert isinstance(vsp._base_url(), str) assert "sdc1/feProxy/onboarding-api/v1.0" in vsp._base_url()
def test_vsp_onboard_unknown(): """Integration tests for Vsp.""" response = requests.post("{}/reset".format(Vendor.base_front_url)) response.raise_for_status() vendor = Vendor(name="test") vendor.onboard() vsp = Vsp(name="test", package=open("{}/ubuntu16.zip".format( os.path.dirname(os.path.abspath(__file__))), 'rb')) vsp.vendor = vendor vsp.onboard() assert vsp.status == const.CERTIFIED assert vsp.csar_uuid is not None
def test_init_with_name(mock_exists): """Check init with no names.""" vsp = Vsp(name="YOLO") mock_exists.return_value = False assert vsp._identifier == None assert vsp._version == None assert vsp.name == "YOLO" assert vsp.created() == False assert vsp.headers["USER_ID"] == "cs0008" assert vsp.vendor == None assert isinstance(vsp._base_url(), str) assert "sdc1/feProxy/onboarding-api/v1.0" in vsp._base_url()
def test_status_version_is_dirty_no_validation_data_but_networkPackageName( mock_vsp_items, mock_vsp_items_version, mock_vsp_details): vsp = Vsp() vsp.identifier = "1234" mock_vsp_items.return_value = {'status': const.DRAFT} mock_vsp_items_version.return_value = {"state": {'dirty': True}} mock_vsp_details.return_value = { 'no_validationData': { 'some': 'thing' }, 'networkPackageName': 'ubuntu16' } assert vsp.status == const.UPLOADED
def test_create_OK(mock_category, mock_send, mock_exists): """Create and update object.""" vf = Vf() vsp = Vsp() vendor = Vendor() vsp._identifier = "1232" vf.vsp = vsp vsp.vendor = vendor vsp._csar_uuid = "1234" expected_data = '{\n "artifacts": {},\n "attributes": [],\n "capabilities": {},\n "categories": [\n {\n "normalizedName": "generic",\n "name": "Generic",\n "uniqueId": "resourceNewCategory.generic",\n "subcategories": [{"empty": false, "groupings": null, "icons": ["objectStorage", "compute"], "name": "Abstract", "normalizedName": "abstract", "ownerId": null, "type": null, "uniqueId": "resourceNewCategory.generic.abstract", "version": null}],\n "version": null,\n "ownerId": null,\n "empty": false,\n "type": null,\n "icons": null\n }\n ],\n "componentInstances": [],\n "componentInstancesAttributes": {},\n "componentInstancesProperties": {},\n "componentType": "RESOURCE",\n "contactId": "cs0008",\n \n "csarUUID": "1234",\n "csarVersion": "1.0",\n \n "deploymentArtifacts": {},\n "description": "VF",\n "icon": "defaulticon",\n "name": "ONAP-test-VF",\n "properties": [],\n "groups": [],\n "requirements": {},\n "resourceType": "VF",\n "tags": ["ONAP-test-VF"],\n "toscaArtifacts": {},\n "vendorName": "Generic-Vendor",\n "vendorRelease": "1.0"\n}' mock_exists.return_value = False mock_send.return_value = { 'resourceType': 'VF', 'name': 'one', 'uuid': '1234', 'invariantUUID': '5678', 'version': '1.0', 'uniqueId': '91011', 'lifecycleState': 'NOT_CERTIFIED_CHECKOUT' } rc = ResourceCategory(name="Generic") rc.normalized_name = "generic" rc.unique_id = "resourceNewCategory.generic" rc.subcategories = [{ "empty": False, "groupings": None, "icons": ["objectStorage", "compute"], "name": "Abstract", "normalizedName": "abstract", "ownerId": None, "type": None, "uniqueId": "resourceNewCategory.generic.abstract", "version": None }] rc.version = None rc.owner_id = None rc.empty = False rc.type = None rc.icons = None mock_category.return_value = rc vf.create() mock_send.assert_called_once_with( "POST", "create Vf", 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/rest/v1/catalog/resources', data=expected_data) assert vf.created() assert vf._status == const.DRAFT assert vf.identifier == "1234" assert vf.unique_uuid == "5678" assert vf.version == "1.0"
def test__get_item_details_created(mock_send): vsp = Vsp() vsp.identifier = "1234" mock_send.return_value = { 'results': [{ "creationTime": "2" }, { "creationTime": "3" }], "listCount": 2 } assert vsp._get_item_details() == {"creationTime": "3"} mock_send.assert_called_once_with( 'GET', 'get item', "{}/items/1234/versions".format(vsp._base_url()))
def test_load_not_created(mock_send, mock_get_all): mock_send.return_value = { 'results': [{ 'status': 'state_one', 'id': "5678", 'vendorName': 'vspOne' }] } vsp = Vsp(name="one") vsp.load() mock_get_all.return_value = [] mock_send.assert_not_called() assert vsp._status == None assert vsp.version == None assert vsp.identifier == None
def test_onboard_new_vsp_create_csar(mock_create, mock_upload_package, mock_validate, mock_commit, mock_submit, mock_create_csar): getter_mock = mock.Mock(wraps=Vsp.status.fget) mock_status = Vsp.status.getter(getter_mock) with mock.patch.object(Vsp, 'status', mock_status): getter_mock.side_effect = [const.CERTIFIED, const.APPROVED, None] vsp = Vsp() vsp.onboard() mock_create.assert_not_called() mock_upload_package.assert_not_called() mock_validate.assert_not_called() mock_commit.assert_not_called() mock_submit.assert_not_called() mock_create_csar.assert_called_once()
def test_service_onboard_unknown(): """Integration tests for Service.""" response = requests.post("{}/reset".format(SDC.base_front_url)) response.raise_for_status() vendor = Vendor(name="test") vendor.onboard() vsp = Vsp(name="test", package=open( "{}/ubuntu16.zip".format( os.path.dirname(os.path.abspath(__file__))), 'rb')) vsp.vendor = vendor vsp.onboard() vf = Vf(name='test', vsp=vsp) vf.onboard() svc = Service(name='test', resources=[vf]) svc.onboard() assert svc.distributed
def test_get_all_no_vsp(mock_send): """Returns empty array if no vsps.""" mock_send.return_value = {} assert Vsp.get_all() == [] mock_send.assert_called_once_with( "GET", 'get Vsps', 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/onboarding-api/v1.0/vendor-software-products' )
def test_load_created(mock_send, mock_get_all): mock_send.return_value = { 'results': [{ 'status': 'state_one', 'id': "5678", 'vendorName': 'vspOne' }] } vsp = Vsp(name="one") vsp.identifier = "1234" vsp.load() mock_get_all.assert_not_called() mock_send.assert_called_once_with( 'GET', 'get item', 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/onboarding-api/v1.0/items/1234/versions' ) assert vsp._status == None assert vsp.version == "5678"
def test_exists_exists(mock_get_all): """Return True if vsp exists in SDC.""" vsp_1 = Vsp(name="one") vsp_1.identifier = "1234" vsp_1.version = "1.1" mock_get_all.return_value = [vsp_1] vsp = Vsp(name="one") assert vsp.exists()
def test_onboard_vsp_upload_no_files(mock_create, mock_upload_package, mock_validate, mock_commit, mock_submit, mock_create_csar): getter_mock = mock.Mock(wraps=Vsp.status.fget) mock_status = Vsp.status.getter(getter_mock) with mock.patch.object(Vsp, 'status', mock_status): getter_mock.side_effect = [ const.DRAFT, const.DRAFT, const.APPROVED, const.APPROVED, const.APPROVED, const.APPROVED, const.APPROVED, None ] vsp = Vsp() with pytest.raises(ValueError): vsp.onboard() mock_create.assert_not_called() mock_upload_package.assert_not_called() mock_validate.assert_not_called() mock_commit.assert_not_called() mock_submit.assert_not_called() mock_create_csar.assert_not_called()
def test_onboard_whole_vsp(mock_load, mock_created, mock_create, mock_upload_package, mock_validate, mock_commit, mock_submit, mock_create_csar): getter_mock = mock.Mock(wraps=Vsp.status.fget) mock_status = Vsp.status.getter(getter_mock) with mock.patch.object(Vsp, 'status', mock_status): getter_mock.side_effect = [ None, const.DRAFT, const.UPLOADED, const.VALIDATED, const.COMMITED, const.CERTIFIED, None ] vendor = Vendor() vsp = Vsp(vendor=vendor, package="yes") vsp.onboard() mock_create.assert_called_once() mock_upload_package.assert_called_once() mock_validate.assert_called_once() mock_commit.assert_called_once() mock_submit.assert_called_once() mock_create_csar.assert_called_once()
def test_onboard_new_vsp(mock_created, mock_create, mock_upload_package, mock_validate, mock_commit, mock_submit, mock_create_csar): mock_created.return_value = False getter_mock = mock.Mock(wraps=Vsp.status.fget) mock_status = Vsp.status.getter(getter_mock) with mock.patch.object(Vsp, 'status', mock_status): getter_mock.side_effect = [ None, const.APPROVED, const.APPROVED, const.APPROVED, const.APPROVED, const.APPROVED, None ] vendor = Vendor() vsp = Vsp(vendor=vendor) vsp.onboard() mock_create.assert_called_once() mock_upload_package.assert_not_called() mock_validate.assert_not_called() mock_commit.assert_not_called() mock_submit.assert_not_called() mock_create_csar.assert_not_called()
def test_create_issue_in_creation(mock_category, mock_send, mock_exists): # def test_create_issue_in_creation(mock_send, mock_exists): """Do nothing if not created but issue during creation.""" pnf = Pnf() vsp = Vsp() vendor = Vendor() vsp._identifier = "1232" vsp.create_csar = MagicMock(return_value=True) vsp.vendor = vendor pnf.vsp = vsp expected_data = '{\n "artifacts": {},\n "attributes": [],\n "capabilities": {},\n "categories": [\n {\n "normalizedName": "generic",\n "name": "Generic",\n "uniqueId": "resourceNewCategory.generic",\n "subcategories": [{"empty": false, "groupings": null, "icons": ["objectStorage", "compute"], "name": "Abstract", "normalizedName": "abstract", "ownerId": null, "type": null, "uniqueId": "resourceNewCategory.generic.abstract", "version": null}],\n "version": null,\n "ownerId": null,\n "empty": false,\n "type": null,\n "icons": null\n }\n ],\n "componentInstances": [],\n "componentInstancesAttributes": {},\n "componentInstancesProperties": {},\n "componentType": "RESOURCE",\n "contactId": "cs0008",\n \n "csarUUID": "None",\n "csarVersion": "1.0",\n "vendorName": "Generic-Vendor",\n \n "deploymentArtifacts": {},\n "description": "PNF",\n "icon": "defaulticon",\n "name": "ONAP-test-PNF",\n "properties": [],\n "groups": [],\n "requirements": {},\n "resourceType": "PNF",\n "tags": ["ONAP-test-PNF"],\n "toscaArtifacts": {},\n "vendorRelease": "1.0"\n}' mock_exists.return_value = False mock_send.side_effect = RequestError rc = ResourceCategory(name="Generic") rc.normalized_name = "generic" rc.unique_id = "resourceNewCategory.generic" rc.subcategories = [{ "empty": False, "groupings": None, "icons": ["objectStorage", "compute"], "name": "Abstract", "normalizedName": "abstract", "ownerId": None, "type": None, "uniqueId": "resourceNewCategory.generic.abstract", "version": None }] rc.version = None rc.owner_id = None rc.empty = False rc.type = None rc.icons = None mock_category.return_value = rc with pytest.raises(RequestError) as exc: pnf.create() mock_send.assert_called_once_with( "POST", "create Pnf", 'https://sdc.api.fe.simpledemo.onap.org:30207/sdc1/feProxy/rest/v1/catalog/resources', data=expected_data) assert not pnf.created()
def test_equality_not_equals(): """Check two vsps are not equals if name is not the same.""" vsp_1 = Vsp(name="equal") vsp_1.identifier = "1234" vsp_2 = Vsp(name="not_equal") vsp_2.identifier = "1234" assert vsp_1 != vsp_2