Add ETag check ok ut case 52/85952/1
authorfujinhua <fu.jinhua@zte.com.cn>
Mon, 22 Apr 2019 09:00:59 +0000 (17:00 +0800)
committerfujinhua <fu.jinhua@zte.com.cn>
Mon, 22 Apr 2019 09:00:59 +0000 (17:00 +0800)
Change-Id: I59245060770801e19537567c0819a979fd91db9b
Issue-ID: VFC-1306
Signed-off-by: fujinhua <fu.jinhua@zte.com.cn>
lcm/lcm/nf/biz/update_vnf.py
lcm/lcm/nf/tests/test_update_vnf.py

index 311c24a..bc9ee0f 100644 (file)
@@ -29,6 +29,7 @@ logger = logging.getLogger(__name__)
 
 class UpdateVnf(Thread):
     def __init__(self, data, instanceid, job_id):
+        super(UpdateVnf, self).__init__()
         self.data = data
         self.nf_inst_id = instanceid
         self.job_id = job_id
index ce1cd6f..3c12260 100644 (file)
@@ -27,6 +27,7 @@ from lcm.nf.biz.update_vnf import UpdateVnf
 class TestNFUpdate(TestCase):
     def setUp(self):
         self.client = APIClient()
+        self.rc = RequestsClient()
         self.upd_data = {
             "vnfInstanceName": "vnf new name",
             "vnfInstanceDescription": "new description"
@@ -53,17 +54,41 @@ class TestNFUpdate(TestCase):
                     version="V1",
                     package_id="2",
                     status='INSTANTIATED').save()
-        rc = RequestsClient()
-        response = rc.patch("http://localhost:8801/api/vnflcm/v1/vnf_instances/19",
-                            json=self.upd_data,
-                            headers={
-                                "Accept": "application/json",
-                                "Content-Type": "application/json",
-                                "If-Match": "test_etag"
-                            })
+        response = self.rc.patch("http://localhost:8801/api/vnflcm/v1/vnf_instances/19",
+                                 json=self.upd_data,
+                                 headers={
+                                     "Accept": "application/json",
+                                     "Content-Type": "application/json",
+                                     "If-Match": "test_etag"
+                                 })
         NfInstModel.objects.filter(nfinstid=instanceid).delete()
         self.failUnlessEqual(status.HTTP_412_PRECONDITION_FAILED, response.status_code)
 
+    @mock.patch.object(UpdateVnf, 'run')
+    def test_update_vnf_etag_match(self, mock_run):
+        instanceid = "18"
+        NfInstModel(nfinstid=instanceid,
+                    nf_name='VNF1',
+                    nf_desc="VNF DESC",
+                    vnfdid="1",
+                    netype="XGW",
+                    vendor="ZTE",
+                    vnfSoftwareVersion="V1",
+                    version="V1",
+                    package_id="2",
+                    status='INSTANTIATED').save()
+        resp = self.client.get("/api/vnflcm/v1/vnf_instances/18", format='json')
+        etag = resp["ETag"]
+        response = self.rc.patch("http://localhost:8801/api/vnflcm/v1/vnf_instances/18",
+                                 json=self.upd_data,
+                                 headers={
+                                     "Accept": "application/json",
+                                     "Content-Type": "application/json",
+                                     "If-Match": etag
+                                 })
+        NfInstModel.objects.filter(nfinstid=instanceid).delete()
+        self.failUnlessEqual(status.HTTP_202_ACCEPTED, response.status_code)
+
     @mock.patch.object(restcall, 'call_req')
     def test_update_vnf_success(self, mock_call_req):
         instanceid = "12"