diff options
author | Rodolfo Carvalho <rhcarvalho@gmail.com> | 2017-02-19 22:05:59 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-19 22:05:59 +0100 |
commit | 3ba41f17f7ea7d05a291a59f4d22b31ba159579b (patch) | |
tree | bc73cffbf701af3f8a2695bc26fc634f7f669018 /roles/lib_openshift/src/test/unit/test_oc_secret.py | |
parent | 4653f96dd2612c9d4d580637a7f99d41fad8b46e (diff) | |
parent | fd7c9750cc344ae48abfc48c13f1b1d84ef077b8 (diff) | |
download | openshift-3ba41f17f7ea7d05a291a59f4d22b31ba159579b.tar.gz openshift-3ba41f17f7ea7d05a291a59f4d22b31ba159579b.tar.bz2 openshift-3ba41f17f7ea7d05a291a59f4d22b31ba159579b.tar.xz openshift-3ba41f17f7ea7d05a291a59f4d22b31ba159579b.zip |
Merge pull request #3414 from rhcarvalho/fix-missing-unit-tests-ci
Fix missing unit tests in CI
Diffstat (limited to 'roles/lib_openshift/src/test/unit/test_oc_secret.py')
-rw-r--r-- | roles/lib_openshift/src/test/unit/test_oc_secret.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/roles/lib_openshift/src/test/unit/test_oc_secret.py b/roles/lib_openshift/src/test/unit/test_oc_secret.py new file mode 100644 index 000000000..645aac82b --- /dev/null +++ b/roles/lib_openshift/src/test/unit/test_oc_secret.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python2 +''' + Unit tests for oc secret +''' +# To run: +# ./oc_secret.py +# +# . +# Ran 1 test in 0.002s +# +# OK + +import os +import sys +import unittest +import mock + +# Removing invalid variable names for tests so that I can +# keep them brief +# pylint: disable=invalid-name,no-name-in-module +# Disable import-error b/c our libraries aren't loaded in jenkins +# pylint: disable=import-error,wrong-import-position +# place class in our python path +module_path = os.path.join('/'.join(os.path.realpath(__file__).split('/')[:-4]), 'library') # noqa: E501 +sys.path.insert(0, module_path) +from oc_secret import OCSecret # noqa: E402 + + +class OCSecretTest(unittest.TestCase): + ''' + Test class for OCSecret + ''' + + def setUp(self): + ''' setup method will create a file and set to known configuration ''' + pass + + @mock.patch('oc_secret.Utils.create_tmpfile_copy') + @mock.patch('oc_secret.Utils._write') + @mock.patch('oc_secret.OCSecret._run') + def test_adding_a_secret(self, mock_cmd, mock_write, mock_tmpfile_copy): + ''' Testing adding a secret ''' + + # Arrange + + # run_ansible input parameters + params = { + 'state': 'present', + 'namespace': 'default', + 'name': 'testsecretname', + 'contents': [{ + 'path': "/tmp/somesecret.json", + 'data': "{'one': 1, 'two': 2, 'three': 3}", + }], + 'decode': False, + 'kubeconfig': '/etc/origin/master/admin.kubeconfig', + 'debug': False, + 'files': None, + 'delete_after': True, + } + + # Return values of our mocked function call. These get returned once per call. + mock_cmd.side_effect = [ + (1, '', 'Error from server: secrets "testsecretname" not found'), + (0, 'secret/testsecretname', ''), + ] + + mock_tmpfile_copy.side_effect = [ + '/tmp/mocked_kubeconfig', + ] + + # Act + results = OCSecret.run_ansible(params, False) + + # Assert + self.assertTrue(results['changed']) + self.assertEqual(results['results']['returncode'], 0) + self.assertEqual(results['state'], 'present') + + # Making sure our mock was called as we expected + mock_cmd.assert_has_calls([ + mock.call(['oc', '-n', 'default', 'get', 'secrets', 'testsecretname', '-o', 'json'], None), + mock.call(['oc', '-n', 'default', 'secrets', 'new', 'testsecretname', mock.ANY], None), + ]) + + mock_write.assert_has_calls([ + mock.call(mock.ANY, "{'one': 1, 'two': 2, 'three': 3}"), + ]) + + def tearDown(self): + '''TearDown method''' + pass + + +if __name__ == "__main__": + unittest.main() |