vfclcm upgrade from python2 to python3
[vfc/gvnfm/vnflcm.git] / lcm / lcm / nf / tests / test_update_vnf.py
index 484885a..91f451b 100644 (file)
@@ -15,6 +15,7 @@
 import mock
 from django.test import TestCase
 from rest_framework.test import APIClient
+from rest_framework.test import RequestsClient
 from rest_framework import status
 
 from lcm.pub.utils import restcall
@@ -26,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"
@@ -38,7 +40,54 @@ class TestNFUpdate(TestCase):
         response = self.client.patch("/api/vnflcm/v1/vnf_instances/1111",
                                      data=self.upd_data,
                                      format='json')
-        self.failUnlessEqual(status.HTTP_404_NOT_FOUND, response.status_code)
+        self.assertEqual(status.HTTP_404_NOT_FOUND, response.status_code)
+
+    def test_update_vnf_etag_not_match(self):
+        instanceid = "19"
+        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()
+        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.assertEqual(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.assertEqual(status.HTTP_202_ACCEPTED, response.status_code)
 
     @mock.patch.object(restcall, 'call_req')
     def test_update_vnf_success(self, mock_call_req):
@@ -57,4 +106,5 @@ class TestNFUpdate(TestCase):
         job_id = JobUtil.create_job('NF', 'UPDATETEST', instanceid)
         UpdateVnf(self.upd_data, instanceid, job_id).run()
         name = NfInstModel.objects.filter(nfinstid=instanceid).get().nf_name
-        self.failUnlessEqual("vnf new name", name)
+        NfInstModel.objects.filter(nfinstid=instanceid).delete()
+        self.assertEqual("vnf new name", name)