瀏覽代碼

Adding tests to increase TC.

Kenny Woodson 8 年之前
父節點
當前提交
f8fd0cb885
共有 1 個文件被更改,包括 163 次插入0 次删除
  1. 163 0
      roles/lib_openshift/src/test/unit/test_oc_pvc.py

+ 163 - 0
roles/lib_openshift/src/test/unit/test_oc_pvc.py

@@ -94,6 +94,169 @@ class OCPVCTest(unittest.TestCase):
         self.assertTrue(results['changed'])
         self.assertEqual(results['results']['results'][0]['metadata']['name'], 'mypvc')
 
+    @mock.patch('oc_pvc.Utils.create_tmpfile_copy')
+    @mock.patch('oc_pvc.OCPVC._run')
+    def test_update_pvc(self, mock_run, mock_tmpfile_copy):
+        ''' Testing a pvc create '''
+        params = copy.deepcopy(OCPVCTest.params)
+        params['access_modes'] = 'ReadWriteMany'
+
+        pvc = '''{"kind": "PersistentVolumeClaim",
+               "apiVersion": "v1",
+               "metadata": {
+                   "name": "mypvc",
+                   "namespace": "test",
+                   "selfLink": "/api/v1/namespaces/test/persistentvolumeclaims/mypvc",
+                   "uid": "77597898-d8d8-11e6-aea5-0e3c0c633889",
+                   "resourceVersion": "126510787",
+                   "creationTimestamp": "2017-01-12T15:04:50Z",
+                   "labels": {
+                       "mypvc": "database"
+                   },
+                   "annotations": {
+                       "pv.kubernetes.io/bind-completed": "yes",
+                       "pv.kubernetes.io/bound-by-controller": "yes",
+                       "v1.2-volume.experimental.kubernetes.io/provisioning-required": "volume.experimental.kubernetes.io/provisioning-completed"
+                   }
+               },
+               "spec": {
+                   "accessModes": [
+                       "ReadWriteOnce"
+                   ],
+                   "resources": {
+                       "requests": {
+                           "storage": "1Gi"
+                       }
+                   },
+                   "volumeName": "pv-aws-ow5vl"
+               },
+               "status": {
+                  "phase": "Bound",
+                   "accessModes": [
+                       "ReadWriteOnce"
+                   ],
+                    "capacity": {
+                      "storage": "1Gi"
+                    }
+               }
+              }'''
+
+        mod_pvc = '''{"kind": "PersistentVolumeClaim",
+               "apiVersion": "v1",
+               "metadata": {
+                   "name": "mypvc",
+                   "namespace": "test",
+                   "selfLink": "/api/v1/namespaces/test/persistentvolumeclaims/mypvc",
+                   "uid": "77597898-d8d8-11e6-aea5-0e3c0c633889",
+                   "resourceVersion": "126510787",
+                   "creationTimestamp": "2017-01-12T15:04:50Z",
+                   "labels": {
+                       "mypvc": "database"
+                   },
+                   "annotations": {
+                       "pv.kubernetes.io/bind-completed": "yes",
+                       "pv.kubernetes.io/bound-by-controller": "yes",
+                       "v1.2-volume.experimental.kubernetes.io/provisioning-required": "volume.experimental.kubernetes.io/provisioning-completed"
+                   }
+               },
+               "spec": {
+                   "accessModes": [
+                       "ReadWriteMany"
+                   ],
+                   "resources": {
+                       "requests": {
+                           "storage": "1Gi"
+                       }
+                   },
+                   "volumeName": "pv-aws-ow5vl"
+               },
+               "status": {
+                  "phase": "Bound",
+                   "accessModes": [
+                       "ReadWriteOnce"
+                   ],
+                    "capacity": {
+                      "storage": "1Gi"
+                    }
+               }
+              }'''
+
+        mock_run.side_effect = [
+            (0, pvc, ''),
+            (0, pvc, ''),
+            (0, '', ''),
+            (0, mod_pvc, ''),
+        ]
+
+        mock_tmpfile_copy.side_effect = [
+            '/tmp/mocked_kubeconfig',
+        ]
+
+        results = OCPVC.run_ansible(params, False)
+
+        self.assertFalse(results['changed'])
+        self.assertEqual(results['results']['msg'], '##### - This volume is currently bound.  Will not update - ####')
+
+    @mock.patch('oc_pvc.Utils.create_tmpfile_copy')
+    @mock.patch('oc_pvc.OCPVC._run')
+    def test_delete_pvc(self, mock_run, mock_tmpfile_copy):
+        ''' Testing a pvc create '''
+        params = copy.deepcopy(OCPVCTest.params)
+        params['state'] = 'absent'
+
+        pvc = '''{"kind": "PersistentVolumeClaim",
+               "apiVersion": "v1",
+               "metadata": {
+                   "name": "mypvc",
+                   "namespace": "test",
+                   "selfLink": "/api/v1/namespaces/test/persistentvolumeclaims/mypvc",
+                   "uid": "77597898-d8d8-11e6-aea5-0e3c0c633889",
+                   "resourceVersion": "126510787",
+                   "creationTimestamp": "2017-01-12T15:04:50Z",
+                   "labels": {
+                       "mypvc": "database"
+                   },
+                   "annotations": {
+                       "pv.kubernetes.io/bind-completed": "yes",
+                       "pv.kubernetes.io/bound-by-controller": "yes",
+                       "v1.2-volume.experimental.kubernetes.io/provisioning-required": "volume.experimental.kubernetes.io/provisioning-completed"
+                   }
+               },
+               "spec": {
+                   "accessModes": [
+                       "ReadWriteOnce"
+                   ],
+                   "resources": {
+                       "requests": {
+                           "storage": "1Gi"
+                       }
+                   },
+                   "volumeName": "pv-aws-ow5vl"
+               },
+               "status": {
+                  "phase": "Bound",
+                   "accessModes": [
+                       "ReadWriteOnce"
+                   ],
+                    "capacity": {
+                      "storage": "1Gi"
+                    }
+               }
+              }'''
+
+        mock_run.side_effect = [
+            (0, pvc, ''),
+            (0, '', ''),
+        ]
+
+        mock_tmpfile_copy.side_effect = [
+            '/tmp/mocked_kubeconfig',
+        ]
+
+        results = OCPVC.run_ansible(params, False)
+
+        self.assertTrue(results['changed'])
+
     @unittest.skipIf(six.PY3, 'py2 test only')
     @mock.patch('os.path.exists')
     @mock.patch('os.environ.get')