Skip to content

Commit 4a535a2

Browse files
Fixed documentation errors, syntax mistakes, updated author email, and tested
1 parent eafe80c commit 4a535a2

File tree

3 files changed

+23
-55
lines changed

3 files changed

+23
-55
lines changed

plugins/modules/github_gpg_key.py

+9-41
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/python
22
# -*- coding: utf-8 -*-
33

4-
# Copyright 2024, Austin Lucas Lake <[email protected].com>
4+
# Copyright (c) 2024-2025, Austin Lucas Lake <git@austinlucaslake.com>
55
# Based on community.general.github_key module by Ansible Project
66
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
77
# SPDX-License-Identifier: GPL-3.0-or-later
@@ -14,7 +14,7 @@
1414
module: github_gpg_key
1515
author: Austin Lucas Lake (@austinlucaslake)
1616
short_description: Manage GitHub GPG keys
17-
version_added: 9.0.0
17+
version_added: 10.5.0
1818
description:
1919
- Creates or removes GitHub GPG keys for an authenticated user.
2020
extends_documentation_fragment:
@@ -48,7 +48,7 @@
4848
force:
4949
description:
5050
- The default is V(true), which will replace the existing remote key
51-
if it is different than O(pubkey). If V(false), the key will only be
51+
if it is different than O(armored_public_key). If V(false), the key will only be
5252
set if no key with the given O(name) exists.
5353
type: bool
5454
default: true
@@ -62,7 +62,7 @@
6262
returned: When O(state=absent)
6363
sample: [{
6464
'id': 3,
65-
'name': 'Octocat's GPG Key',
65+
'name': "Octocat's GPG Key",
6666
'primary_key_id': 2,
6767
'key_id': '3262EFF25BA0D270',
6868
'public_key': 'xsBNBFayYZ...',
@@ -100,7 +100,7 @@
100100
returned: When O(state=present)
101101
sample: [{
102102
'id': 3,
103-
'name': 'Octocat's GPG Key',
103+
'name': "Octocat's GPG Key",
104104
'primary_key_id': 2,
105105
'key_id': '3262EFF25BA0D270',
106106
'public_key': 'xsBNBFayYZ...',
@@ -137,7 +137,7 @@
137137
returned: When O(state=present)
138138
sample: {
139139
'id': 3,
140-
'name': 'Octocat's GPG Key',
140+
'name': "Octocat's GPG Key",
141141
'primary_key_id': 2,
142142
'key_id': '3262EFF25BA0D270',
143143
'public_key': 'xsBNBFayYZ...',
@@ -239,39 +239,7 @@ def get_all_keys(session):
239239
def create_key(session, name, armored_public_key, check_mode):
240240
if check_mode:
241241
now_t = now()
242-
return {
243-
'id': 3,
244-
'name': name,
245-
'primary_key_id': 2,
246-
'key_id': '3262EFF25BA0D270',
247-
'public_key': 'xsBNBFayYZ...',
248-
'emails': [{
249-
'email': '[email protected]',
250-
'verified': True
251-
}],
252-
'subkeys': [{
253-
'id': 4,
254-
'primary_key_id': 3,
255-
'key_id': '4A595D4C72EE49C7',
256-
'public_key': 'zsBNBFayYZ...',
257-
'emails': [],
258-
'can_sign': False,
259-
'can_encrypt_comms': True,
260-
'can_encrypt_storage': True,
261-
'can_certify': False,
262-
'created_at': now_t.strftime('%Y-%m-%dT%H:%M:%SZ'),
263-
'expires_at': None,
264-
'revoked': False
265-
}],
266-
'can_sign': True,
267-
'can_encrypt_comms': False,
268-
'can_encrypt_storage': False,
269-
'can_certify': True,
270-
'created_at': now_t.strftime('%Y-%m-%dT%H:%M:%SZ'),
271-
'expires_at': None,
272-
'revoked': False,
273-
'raw_key': armored_public_key
274-
}
242+
return {}
275243
else:
276244
return session.request(
277245
'POST',
@@ -342,7 +310,7 @@ def run_module(module, params, check_mode):
342310
def main():
343311
module = AnsibleModule(
344312
argument_spec=dict(
345-
state=dict(type='str', default='present', choice=['present', 'absent']),
313+
state=dict(type='str', default='present', choices=['present', 'absent']),
346314
token=dict(type='str', required=True, no_log=True),
347315
name=dict(type='str', required=True),
348316
armored_public_key=dict(type='str', no_log=True),
@@ -362,7 +330,7 @@ def main():
362330
)
363331
module.exit_json(**result)
364332
except Exception as e:
365-
module.fail_json(str(e))
333+
module.fail_json(msg=str(e))
366334

367335

368336
if __name__ == '__main__':

tests/integration/targets/github_gpg_key/tasks/main.yml

+6-6
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,22 @@
55

66
# Test code for the github_issue module.
77
#
8-
# Copyright (c) 2024, Austin Lucas Lake <akasurde@redhat.com>
8+
# Copyright (c) 2024-2025, Austin Lucas Lake <git@austinlucaslake.com>
99
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
1010
# SPDX-License-Identifier: GPL-3.0-or-later
1111

1212
- name: Create GPG key
1313
github_gpg_key:
14-
token: {{ token }}
15-
name: {{ name }}
16-
armored_gpg_key: {{ armored_gpg_key }}
14+
token: "{{ token }}"
15+
name: "{{ name }}"
16+
armored_gpg_key: "{{ armored_gpg_key }}"
1717
register: created_gpg_key
1818

1919
- name: Delete GPG key
2020
github_gpg_key:
2121
state: absent
22-
token: {{ token }}
23-
name: {{ name }}
22+
token: "{{ token }}"
23+
name: "{{ name }}"
2424
register: deleted_gpg_key
2525

2626
- assert:

tests/unit/plugins/modules/test_github_gpg_key.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1-
# Copyright (c) 2024 Austin Lucas Lake
1+
# Copyright (c) 2024-2025, Austin Lucas Lake, <[email protected]>
22
# Based on tests/unit/plugins/modules/test_github_repo.py by Ansible Project
33
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
44
# SPDX-License-Identifier: GPL-3.0-or-later
55

66
from __future__ import (absolute_import, division, print_function)
77
__metaclass__ = type
88

9-
import re
109
import json
11-
import sys
10+
import datetime
1211
from httmock import with_httmock, urlmatch, response
12+
from ansible.module_utils.basic import AnsibleModule
1313
from ansible_collections.community.general.tests.unit.compat import unittest
1414
from ansible_collections.community.general.plugins.modules import github_gpg_key
1515

@@ -99,7 +99,7 @@ def create_gpg_key_mock(url, request):
9999
"can_encrypt_comms": False,
100100
"can_encrypt_storage": False,
101101
"can_certify": True,
102-
"created_at": now_T.strftime("%Y-%m-%dT%H:%M:%SZ"),
102+
"created_at": now_t.strftime("%Y-%m-%dT%H:%M:%SZ"),
103103
"expires_at": None,
104104
"revoked": False,
105105
"raw_key": gpg_key.get("armored_public_key")
@@ -109,7 +109,7 @@ def create_gpg_key_mock(url, request):
109109

110110

111111
@urlmatch(netloc=r'api\.github\.com(:[0-9]+)?$', path=r'/user/gpg_keys/.*', method="delete")
112-
def delete_repo_mock(url, request):
112+
def delete_gpg_key_mock(url, request):
113113
# https://docs.github.com/en/rest/users/gpg-keys#delete-a-gpg-key-for-the-authenticated-user
114114
return response(204, None, None, None, 5, request)
115115

@@ -156,7 +156,7 @@ def test_create_gpg_key_repo(self):
156156
@with_httmock(delete_gpg_key_mock)
157157
def test_delete_user_repo(self):
158158
result = github_gpg_key.run_module(
159-
module=self.module
159+
module=self.module,
160160
params=dict(
161161
token="github_access_token",
162162
name="GPG public key",
@@ -168,10 +168,10 @@ def test_delete_user_repo(self):
168168
self.assertEqual(result['changed'], True)
169169

170170
@with_httmock(list_gpg_keys_mock)
171-
@with_httmock(delete_gpg_notfound_mock)
171+
@with_httmock(delete_gpg_key_notfound_mock)
172172
def test_delete_gpg_key_notfound(self):
173173
result = github_gpg_key.run_module(
174-
module=self.module
174+
module=self.module,
175175
params=dict(
176176
token="github_access_token",
177177
name="GPG public key",

0 commit comments

Comments
 (0)