X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=lcm%2Flcm%2Fnf%2Ftests%2Ftest_create_vnf.py;h=1272d381036d4adcdc28b1b72383ae7b59e01600;hb=19c8f17c4191e47cf15dce4d5ed48716a1c78c59;hp=afeedb31ff19f1a860d64876cdc05fc1dea786ac;hpb=3b4ff2329a2056e8d85353b037e64049fddbf260;p=vfc%2Fgvnfm%2Fvnflcm.git diff --git a/lcm/lcm/nf/tests/test_create_vnf.py b/lcm/lcm/nf/tests/test_create_vnf.py index afeedb31..1272d381 100644 --- a/lcm/lcm/nf/tests/test_create_vnf.py +++ b/lcm/lcm/nf/tests/test_create_vnf.py @@ -13,21 +13,26 @@ # limitations under the License. import json - +import uuid import mock + from django.test import TestCase from rest_framework import status from rest_framework.test import APIClient -from lcm.nf.const import vnfpackage_info -from lcm.pub.database.models import NfInstModel, JobStatusModel + +from .const import vnfpackage_info +from lcm.pub.database.models import NfInstModel +from lcm.pub.database.models import JobStatusModel from lcm.pub.utils import restcall from lcm.pub.utils.timeutil import now_time -import uuid +from lcm.pub.exceptions import NFLCMException +from lcm.nf.biz.create_vnf import CreateVnf class TestNFInstantiate(TestCase): def setUp(self): self.client = APIClient() + self.grant_result = { "vimid": 'vimid_1', "tenant": 'tenantname_1' @@ -37,37 +42,55 @@ class TestNFInstantiate(TestCase): pass def assert_job_result(self, job_id, job_progress, job_detail): - jobs = JobStatusModel.objects.filter(jobid=job_id, - progress=job_progress, - descp=job_detail) + jobs = JobStatusModel.objects.filter( + jobid=job_id, + progress=job_progress, + descp=job_detail + ) self.assertEqual(1, len(jobs)) def test_create_vnf_identifier_when_vnf_is_exist(self): - NfInstModel.objects.create(nfinstid='1111', - nf_name='vFW_01', - package_id='222', - version='', - vendor='', - netype='', - vnfd_model='', - status='NOT_INSTANTIATED', - nf_desc='vFW in Nanjing TIC Edge', - vnfdid='111', - create_time=now_time()) + NfInstModel.objects.create( + nfinstid='1111', + nf_name='vFW_01', + package_id='222', + version='', + vendor='', + netype='', + vnfd_model='', + status='NOT_INSTANTIATED', + nf_desc='vFW in Nanjing TIC Edge', + vnfdid='111', + create_time=now_time() + ) data = { "vnfdId": "111", "vnfInstanceName": "vFW_01", "vnfInstanceDescription": "vFW in Nanjing TIC Edge" } - response = self.client.post("/api/vnflcm/v1/vnf_instances", data=data, format='json') - self.failUnlessEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code) + response = self.client.post( + "/api/vnflcm/v1/vnf_instances", + data=data, + format='json' + ) + self.assertEqual( + status.HTTP_500_INTERNAL_SERVER_ERROR, + response.status_code + ) context = json.loads(response.content) - self.assertEqual({'error': 'VNF is already exist.'}, context) + self.assertEqual({ + 'detail': 'VNF is already exist.', + 'status': 500 + }, context) @mock.patch.object(restcall, 'call_req') @mock.patch.object(uuid, 'uuid4') def test_create_vnf_identifier(self, mock_uuid4, mock_call_req): - r2_get_vnfpackage_from_catalog = [0, json.JSONEncoder().encode(vnfpackage_info), '200'] + r2_get_vnfpackage_from_catalog = [ + 0, + json.JSONEncoder().encode(vnfpackage_info), + '200' + ] mock_call_req.return_value = r2_get_vnfpackage_from_catalog mock_uuid4.return_value = "1" data = { @@ -75,6 +98,71 @@ class TestNFInstantiate(TestCase): "vnfInstanceName": "vFW_01", "vnfInstanceDescription": "vFW in Nanjing TIC Edge" } - response = self.client.post("/api/vnflcm/v1/vnf_instances", data=data, format='json') - expect_data = {"id": "1", "vnfProvider": "huawei", "vnfdVersion": "1.0", "vnfPkgId": "111"} + response = self.client.post( + "/api/vnflcm/v1/vnf_instances", + data=data, + format='json' + ) + expect_data = { + "id": "1", + "vnfProvider": "huawei", + 'vnfInstanceDescription': 'vFW in Nanjing TIC Edge', + 'vnfInstanceName': 'vFW_01', + "vnfdVersion": "1.0", + "vnfPkgId": "111", + "instantiationState": "NOT_INSTANTIATED", + 'vnfSoftwareVersion': '1.0', + 'vnfdId': '111' + } + self.assertEqual(status.HTTP_201_CREATED, response.status_code) self.assertEqual(expect_data, response.data) + + @mock.patch.object(restcall, 'call_req') + @mock.patch.object(uuid, 'uuid4') + def test_create_vnf_inner_error(self, mock_uuid4, mock_call_req): + mock_call_req.side_effect = NFLCMException('Boom!') + mock_uuid4.return_value = "1" + data = { + "vnfdId": "111", + "vnfInstanceName": "vFW_01", + "vnfInstanceDescription": "vFW in Nanjing TIC Edge" + } + response = self.client.post( + "/api/vnflcm/v1/vnf_instances", + data=data, + format='json' + ) + self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code) + + def test_create_vnf_bad_req(self): + data = { + "vnfInstanceName": "vFW_01", + "vnfInstanceDescription": "vFW in Nanjing TIC Edge" + } + response = self.client.post( + "/api/vnflcm/v1/vnf_instances", + data=data, + format='json' + ) + self.assertEqual(status.HTTP_400_BAD_REQUEST, response.status_code) + + @mock.patch.object(CreateVnf, 'do_biz') + def test_create_vnf_bad_response(self, moc_CreateVnf_do_biz): + moc_CreateVnf_do_biz.return_value = { + # "id": "1", + "vnfProvider": "huawei", + "vnfdVersion": "1.0", + "vnfPkgId": "111", + "instantiationState": "NOT_INSTANTIATED" + } + data = { + "vnfdId": "111", + "vnfInstanceName": "vFW_01", + "vnfInstanceDescription": "vFW in Nanjing TIC Edge" + } + response = self.client.post( + "/api/vnflcm/v1/vnf_instances", + data=data, + format='json' + ) + self.assertEqual(status.HTTP_500_INTERNAL_SERVER_ERROR, response.status_code)