From 45fbfdad1b80c50276a9da3841d6e4089b109e35 Mon Sep 17 00:00:00 2001 From: Joel Diaz Date: Fri, 10 Feb 2017 19:30:37 +0000 Subject: add oc_user ansible module module to manipulate OpenShift users, and assign group membership to users --- roles/lib_openshift/src/test/unit/oc_user.py | 117 +++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100755 roles/lib_openshift/src/test/unit/oc_user.py (limited to 'roles/lib_openshift/src/test/unit') diff --git a/roles/lib_openshift/src/test/unit/oc_user.py b/roles/lib_openshift/src/test/unit/oc_user.py new file mode 100755 index 000000000..920b06d0e --- /dev/null +++ b/roles/lib_openshift/src/test/unit/oc_user.py @@ -0,0 +1,117 @@ +#!/usr/bin/env python2 +''' + Unit tests for oc user +''' +# To run +# ./oc_user.py +# +# .. +# ---------------------------------------------------------------------- +# Ran 2 tests in 0.003s +# +# 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 +# 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_user import OCUser # noqa: E402 + + +class OCUserTest(unittest.TestCase): + ''' + Test class for OCUser + ''' + + def setUp(self): + ''' setup method will create a file and set to known configuration ''' + pass + + @mock.patch('oc_user.OCUser._run') + def test_state_list(self, mock_cmd): + ''' Testing a user list ''' + params = {'username': 'testuser@email.com', + 'state': 'list', + 'kubeconfig': '/etc/origin/master/admin.kubeconfig', + 'full_name': None, + 'groups': [], + 'debug': False} + + user = '''{ + "kind": "User", + "apiVersion": "v1", + "metadata": { + "name": "testuser@email.com", + "selfLink": "/oapi/v1/users/testuser@email.com", + "uid": "02fee6c9-f20d-11e6-b83b-12e1a7285e80", + "resourceVersion": "38566887", + "creationTimestamp": "2017-02-13T16:53:58Z" + }, + "fullName": "Test User", + "identities": null, + "groups": null + }''' + + mock_cmd.side_effect = [ + (0, user, ''), + ] + + results = OCUser.run_ansible(params, False) + + self.assertFalse(results['changed']) + self.assertTrue(results['results'][0]['metadata']['name'] == "testuser@email.com") + + @mock.patch('oc_user.OCUser._run') + def test_state_present(self, mock_cmd): + ''' Testing a user list ''' + params = {'username': 'testuser@email.com', + 'state': 'present', + 'kubeconfig': '/etc/origin/master/admin.kubeconfig', + 'full_name': 'Test User', + 'groups': [], + 'debug': False} + + created_user = '''{ + "kind": "User", + "apiVersion": "v1", + "metadata": { + "name": "testuser@email.com", + "selfLink": "/oapi/v1/users/testuser@email.com", + "uid": "8d508039-f224-11e6-b83b-12e1a7285e80", + "resourceVersion": "38646241", + "creationTimestamp": "2017-02-13T19:42:28Z" + }, + "fullName": "Test User", + "identities": null, + "groups": null + }''' + + mock_cmd.side_effect = [ + (1, '', 'Error from server: users "testuser@email.com" not found'), # get + (1, '', 'Error from server: users "testuser@email.com" not found'), # get + (0, 'user "testuser@email.com" created', ''), # create + (0, created_user, ''), # get + ] + + results = OCUser.run_ansible(params, False) + + self.assertTrue(results['changed']) + self.assertTrue(results['results']['results'][0]['metadata']['name'] == + "testuser@email.com") + + def tearDown(self): + '''TearDown method''' + pass + + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3 From a11970d30c88d188392ec217c055b6b8169b3769 Mon Sep 17 00:00:00 2001 From: Joel Diaz Date: Tue, 28 Feb 2017 16:22:08 +0000 Subject: clean up and clarify docs/comments update unit tests --- roles/lib_openshift/src/test/unit/oc_user.py | 117 -------------------- roles/lib_openshift/src/test/unit/test_oc_user.py | 127 ++++++++++++++++++++++ 2 files changed, 127 insertions(+), 117 deletions(-) delete mode 100755 roles/lib_openshift/src/test/unit/oc_user.py create mode 100755 roles/lib_openshift/src/test/unit/test_oc_user.py (limited to 'roles/lib_openshift/src/test/unit') diff --git a/roles/lib_openshift/src/test/unit/oc_user.py b/roles/lib_openshift/src/test/unit/oc_user.py deleted file mode 100755 index 920b06d0e..000000000 --- a/roles/lib_openshift/src/test/unit/oc_user.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python2 -''' - Unit tests for oc user -''' -# To run -# ./oc_user.py -# -# .. -# ---------------------------------------------------------------------- -# Ran 2 tests in 0.003s -# -# 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 -# 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_user import OCUser # noqa: E402 - - -class OCUserTest(unittest.TestCase): - ''' - Test class for OCUser - ''' - - def setUp(self): - ''' setup method will create a file and set to known configuration ''' - pass - - @mock.patch('oc_user.OCUser._run') - def test_state_list(self, mock_cmd): - ''' Testing a user list ''' - params = {'username': 'testuser@email.com', - 'state': 'list', - 'kubeconfig': '/etc/origin/master/admin.kubeconfig', - 'full_name': None, - 'groups': [], - 'debug': False} - - user = '''{ - "kind": "User", - "apiVersion": "v1", - "metadata": { - "name": "testuser@email.com", - "selfLink": "/oapi/v1/users/testuser@email.com", - "uid": "02fee6c9-f20d-11e6-b83b-12e1a7285e80", - "resourceVersion": "38566887", - "creationTimestamp": "2017-02-13T16:53:58Z" - }, - "fullName": "Test User", - "identities": null, - "groups": null - }''' - - mock_cmd.side_effect = [ - (0, user, ''), - ] - - results = OCUser.run_ansible(params, False) - - self.assertFalse(results['changed']) - self.assertTrue(results['results'][0]['metadata']['name'] == "testuser@email.com") - - @mock.patch('oc_user.OCUser._run') - def test_state_present(self, mock_cmd): - ''' Testing a user list ''' - params = {'username': 'testuser@email.com', - 'state': 'present', - 'kubeconfig': '/etc/origin/master/admin.kubeconfig', - 'full_name': 'Test User', - 'groups': [], - 'debug': False} - - created_user = '''{ - "kind": "User", - "apiVersion": "v1", - "metadata": { - "name": "testuser@email.com", - "selfLink": "/oapi/v1/users/testuser@email.com", - "uid": "8d508039-f224-11e6-b83b-12e1a7285e80", - "resourceVersion": "38646241", - "creationTimestamp": "2017-02-13T19:42:28Z" - }, - "fullName": "Test User", - "identities": null, - "groups": null - }''' - - mock_cmd.side_effect = [ - (1, '', 'Error from server: users "testuser@email.com" not found'), # get - (1, '', 'Error from server: users "testuser@email.com" not found'), # get - (0, 'user "testuser@email.com" created', ''), # create - (0, created_user, ''), # get - ] - - results = OCUser.run_ansible(params, False) - - self.assertTrue(results['changed']) - self.assertTrue(results['results']['results'][0]['metadata']['name'] == - "testuser@email.com") - - def tearDown(self): - '''TearDown method''' - pass - - -if __name__ == "__main__": - unittest.main() diff --git a/roles/lib_openshift/src/test/unit/test_oc_user.py b/roles/lib_openshift/src/test/unit/test_oc_user.py new file mode 100755 index 000000000..933e96ae2 --- /dev/null +++ b/roles/lib_openshift/src/test/unit/test_oc_user.py @@ -0,0 +1,127 @@ +#!/usr/bin/env python2 +''' + Unit tests for oc user +''' +# To run +# ./oc_user.py +# +# .. +# ---------------------------------------------------------------------- +# Ran 2 tests in 0.003s +# +# 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 +# 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_user import OCUser, locate_oc_binary # noqa: E402 + + +class OCUserTest(unittest.TestCase): + ''' + Test class for OCUser + ''' + + def setUp(self): + ''' setup method will create a file and set to known configuration ''' + pass + + @mock.patch('oc_user.Utils.create_tmpfile_copy') + @mock.patch('oc_user.OCUser._run') + def test_state_list(self, mock_cmd, mock_tmpfile_copy): + ''' Testing a user list ''' + params = {'username': 'testuser@email.com', + 'state': 'list', + 'kubeconfig': '/etc/origin/master/admin.kubeconfig', + 'full_name': None, + 'groups': [], + 'debug': False} + + user = '''{ + "kind": "User", + "apiVersion": "v1", + "metadata": { + "name": "testuser@email.com", + "selfLink": "/oapi/v1/users/testuser@email.com", + "uid": "02fee6c9-f20d-11e6-b83b-12e1a7285e80", + "resourceVersion": "38566887", + "creationTimestamp": "2017-02-13T16:53:58Z" + }, + "fullName": "Test User", + "identities": null, + "groups": null + }''' + + mock_cmd.side_effect = [ + (0, user, ''), + ] + + mock_tmpfile_copy.side_effect = [ + '/tmp/mocked_kubeconfig', + ] + + results = OCUser.run_ansible(params, False) + + self.assertFalse(results['changed']) + self.assertTrue(results['results'][0]['metadata']['name'] == "testuser@email.com") + + @mock.patch('oc_user.Utils.create_tmpfile_copy') + @mock.patch('oc_user.OCUser._run') + def test_state_present(self, mock_cmd, mock_tmpfile_copy): + ''' Testing a user list ''' + params = {'username': 'testuser@email.com', + 'state': 'present', + 'kubeconfig': '/etc/origin/master/admin.kubeconfig', + 'full_name': 'Test User', + 'groups': [], + 'debug': False} + + created_user = '''{ + "kind": "User", + "apiVersion": "v1", + "metadata": { + "name": "testuser@email.com", + "selfLink": "/oapi/v1/users/testuser@email.com", + "uid": "8d508039-f224-11e6-b83b-12e1a7285e80", + "resourceVersion": "38646241", + "creationTimestamp": "2017-02-13T19:42:28Z" + }, + "fullName": "Test User", + "identities": null, + "groups": null + }''' + + mock_cmd.side_effect = [ + (1, '', 'Error from server: users "testuser@email.com" not found'), # get + (1, '', 'Error from server: users "testuser@email.com" not found'), # get + (0, 'user "testuser@email.com" created', ''), # create + (0, created_user, ''), # get + ] + + mock_tmpfile_copy.side_effect = [ + '/tmp/mocked_kubeconfig', + ] + + results = OCUser.run_ansible(params, False) + + self.assertTrue(results['changed']) + self.assertTrue(results['results']['results'][0]['metadata']['name'] == + "testuser@email.com") + + def tearDown(self): + '''TearDown method''' + pass + + +if __name__ == "__main__": + unittest.main() -- cgit v1.2.3 From 2b4a4251a2e6470ca1580a37399182c68e5c2566 Mon Sep 17 00:00:00 2001 From: Joel Diaz Date: Wed, 1 Mar 2017 10:37:52 -0500 Subject: fix up things flagged by flake8 --- roles/lib_openshift/src/test/unit/test_oc_user.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'roles/lib_openshift/src/test/unit') diff --git a/roles/lib_openshift/src/test/unit/test_oc_user.py b/roles/lib_openshift/src/test/unit/test_oc_user.py index 933e96ae2..f7a17cc2c 100755 --- a/roles/lib_openshift/src/test/unit/test_oc_user.py +++ b/roles/lib_openshift/src/test/unit/test_oc_user.py @@ -24,7 +24,7 @@ import mock # 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_user import OCUser, locate_oc_binary # noqa: E402 +from oc_user import OCUser # noqa: E402 class OCUserTest(unittest.TestCase): -- cgit v1.2.3