summaryrefslogtreecommitdiff
path: root/test/units/modules/source_control
diff options
context:
space:
mode:
authorYury V. Zaytsev <yury@shurup.com>2019-03-29 14:12:17 +0100
committerDag Wieers <dag@wieers.com>2019-03-29 14:12:17 +0100
commitc914df354baa40049fe8ee7c7254b8a581931500 (patch)
treecef9b67d02d0462df8596ec8e333b4fc57740486 /test/units/modules/source_control
parent655d35cd06f4b974c2f180566af57b23363240bf (diff)
downloadansible-c914df354baa40049fe8ee7c7254b8a581931500.tar.gz
Add Bitbucket access key module (#54592)
* Add Bitbucket access key module * Add Bitbucket access key tests * Remove superseded `bitbucket_deploy_key` module * Apply suggestions from code review
Diffstat (limited to 'test/units/modules/source_control')
-rw-r--r--test/units/modules/source_control/test_bitbucket_access_key.py337
1 files changed, 337 insertions, 0 deletions
diff --git a/test/units/modules/source_control/test_bitbucket_access_key.py b/test/units/modules/source_control/test_bitbucket_access_key.py
new file mode 100644
index 0000000000..f1cb4fe71b
--- /dev/null
+++ b/test/units/modules/source_control/test_bitbucket_access_key.py
@@ -0,0 +1,337 @@
+from ansible.module_utils.source_control.bitbucket import BitbucketHelper
+from ansible.modules.source_control.bitbucket import bitbucket_access_key
+from units.compat import unittest
+from units.compat.mock import patch
+from units.modules.utils import AnsibleFailJson, AnsibleExitJson, ModuleTestCase, set_module_args
+
+
+class TestBucketAccessKeyModule(ModuleTestCase):
+ def setUp(self):
+ super(TestBucketAccessKeyModule, self).setUp()
+ self.module = bitbucket_access_key
+
+ def test_missing_key_with_present_state(self):
+ with self.assertRaises(AnsibleFailJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'label': 'key name',
+ 'state': 'present',
+ })
+ self.module.main()
+
+ self.assertEqual(exec_info.exception.args[0]['msg'], self.module.error_messages['required_key'])
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None)
+ def test_create_deploy_key(self, *args):
+ with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'key': 'public_key',
+ 'label': 'key name',
+ 'state': 'present',
+ })
+ self.module.main()
+
+ self.assertEqual(create_deploy_key_mock.call_count, 1)
+ self.assertEqual(exec_info.exception.args[0]['changed'], True)
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None)
+ def test_create_deploy_key_check_mode(self, *args):
+ with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'key': 'public_key',
+ 'label': 'key name',
+ 'state': 'present',
+ '_ansible_check_mode': True,
+ })
+ self.module.main()
+
+ self.assertEqual(create_deploy_key_mock.call_count, 0)
+ self.assertEqual(exec_info.exception.args[0]['changed'], True)
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
+ "id": 123,
+ "label": "mykey",
+ "created_on": "2019-03-23T10:15:21.517377+00:00",
+ "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
+ "type": "deploy_key",
+ "comment": "",
+ "last_used": None,
+ "repository": {
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
+ },
+ "html": {
+ "href": "https://bitbucket.org/mleu/test"
+ },
+ "avatar": {
+ "href": "..."
+ }
+ },
+ "type": "repository",
+ "name": "test",
+ "full_name": "mleu/test",
+ "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
+ },
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
+ }
+ },
+ })
+ def test_update_deploy_key(self, *args):
+ with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
+ with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'key': 'new public key',
+ 'label': 'mykey',
+ 'state': 'present',
+ })
+ self.module.main()
+
+ self.assertEqual(delete_deploy_key_mock.call_count, 1)
+ self.assertEqual(create_deploy_key_mock.call_count, 1)
+ self.assertEqual(exec_info.exception.args[0]['changed'], True)
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
+ "id": 123,
+ "label": "mykey",
+ "created_on": "2019-03-23T10:15:21.517377+00:00",
+ "key": "new public key",
+ "type": "deploy_key",
+ "comment": "",
+ "last_used": None,
+ "repository": {
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
+ },
+ "html": {
+ "href": "https://bitbucket.org/mleu/test"
+ },
+ "avatar": {
+ "href": "..."
+ }
+ },
+ "type": "repository",
+ "name": "test",
+ "full_name": "mleu/test",
+ "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
+ },
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
+ }
+ },
+ })
+ def test_dont_update_same_value(self, *args):
+ with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
+ with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'key': 'new public key',
+ 'label': 'mykey',
+ 'state': 'present',
+ })
+ self.module.main()
+
+ self.assertEqual(delete_deploy_key_mock.call_count, 0)
+ self.assertEqual(create_deploy_key_mock.call_count, 0)
+ self.assertEqual(exec_info.exception.args[0]['changed'], False)
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
+ "id": 123,
+ "label": "mykey",
+ "created_on": "2019-03-23T10:15:21.517377+00:00",
+ "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
+ "type": "deploy_key",
+ "comment": "",
+ "last_used": None,
+ "repository": {
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
+ },
+ "html": {
+ "href": "https://bitbucket.org/mleu/test"
+ },
+ "avatar": {
+ "href": "..."
+ }
+ },
+ "type": "repository",
+ "name": "test",
+ "full_name": "mleu/test",
+ "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
+ },
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
+ }
+ },
+ })
+ def test_update_deploy_key_check_mode(self, *args):
+ with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
+ with patch.object(self.module, 'create_deploy_key') as create_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'key': 'new public key',
+ 'label': 'mykey',
+ 'state': 'present',
+ '_ansible_check_mode': True,
+ })
+ self.module.main()
+
+ self.assertEqual(delete_deploy_key_mock.call_count, 0)
+ self.assertEqual(create_deploy_key_mock.call_count, 0)
+ self.assertEqual(exec_info.exception.args[0]['changed'], True)
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
+ "id": 123,
+ "label": "mykey",
+ "created_on": "2019-03-23T10:15:21.517377+00:00",
+ "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
+ "type": "deploy_key",
+ "comment": "",
+ "last_used": None,
+ "repository": {
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
+ },
+ "html": {
+ "href": "https://bitbucket.org/mleu/test"
+ },
+ "avatar": {
+ "href": "..."
+ }
+ },
+ "type": "repository",
+ "name": "test",
+ "full_name": "mleu/test",
+ "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
+ },
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
+ }
+ },
+ })
+ def test_delete_deploy_key(self, *args):
+ with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'label': 'mykey',
+ 'state': 'absent',
+ })
+ self.module.main()
+
+ self.assertEqual(delete_deploy_key_mock.call_count, 1)
+ self.assertEqual(exec_info.exception.args[0]['changed'], True)
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value=None)
+ def test_delete_absent_deploy_key(self, *args):
+ with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'label': 'mykey',
+ 'state': 'absent',
+ })
+ self.module.main()
+
+ self.assertEqual(delete_deploy_key_mock.call_count, 0)
+ self.assertEqual(exec_info.exception.args[0]['changed'], False)
+
+ @patch.object(BitbucketHelper, 'fetch_access_token', return_value='token')
+ @patch.object(bitbucket_access_key, 'get_existing_deploy_key', return_value={
+ "id": 123,
+ "label": "mykey",
+ "created_on": "2019-03-23T10:15:21.517377+00:00",
+ "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADA...AdkTg7HGqL3rlaDrEcWfL7Lu6TnhBdq5",
+ "type": "deploy_key",
+ "comment": "",
+ "last_used": None,
+ "repository": {
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test"
+ },
+ "html": {
+ "href": "https://bitbucket.org/mleu/test"
+ },
+ "avatar": {
+ "href": "..."
+ }
+ },
+ "type": "repository",
+ "name": "test",
+ "full_name": "mleu/test",
+ "uuid": "{85d08b4e-571d-44e9-a507-fa476535aa98}"
+ },
+ "links": {
+ "self": {
+ "href": "https://api.bitbucket.org/2.0/repositories/mleu/test/deploy-keys/123"
+ }
+ },
+ })
+ def test_delete_deploy_key_check_mode(self, *args):
+ with patch.object(self.module, 'delete_deploy_key') as delete_deploy_key_mock:
+ with self.assertRaises(AnsibleExitJson) as exec_info:
+ set_module_args({
+ 'client_id': 'ABC',
+ 'client_secret': 'XXX',
+ 'username': 'name',
+ 'repository': 'repo',
+ 'label': 'mykey',
+ 'state': 'absent',
+ '_ansible_check_mode': True,
+ })
+ self.module.main()
+
+ self.assertEqual(delete_deploy_key_mock.call_count, 0)
+ self.assertEqual(exec_info.exception.args[0]['changed'], True)
+
+
+if __name__ == '__main__':
+ unittest.main()