Add ETag check ok ut case
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / tests / test_update_vnf.py
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"