Fix gpg.receive_keys returns success on failed import

This commit is contained in:
jeanluc 2022-11-30 22:07:25 +01:00 committed by Pedro Algarvio
parent 9a031b1dee
commit 94ae9f4fc9
3 changed files with 28 additions and 14 deletions

1
changelog/63144.fixed Normal file
View file

@ -0,0 +1 @@
Fixed gpg.receive_keys returns success on failed import

View file

@ -909,7 +909,7 @@ def receive_keys(keyserver=None, keys=None, user=None, gnupghome=None):
salt '*' gpg.receive_keys keys=3FAD9F1E user=username
"""
ret = {"res": True, "changes": {}, "message": []}
ret = {"res": True, "message": []}
gpg = _create_gpg(user, gnupghome)
@ -920,18 +920,31 @@ def receive_keys(keyserver=None, keys=None, user=None, gnupghome=None):
keys = keys.split(",")
recv_data = gpg.recv_keys(keyserver, *keys)
for result in recv_data.results:
if "ok" in result:
if result["ok"] == "1":
ret["message"].append(
"Key {} added to keychain".format(result["fingerprint"])
)
elif result["ok"] == "0":
ret["message"].append(
"Key {} already exists in keychain".format(result["fingerprint"])
)
elif "problem" in result:
ret["message"].append("Unable to add key to keychain")
try:
if recv_data.results:
for result in recv_data.results:
if "ok" in result:
if result["ok"] == "1":
ret["message"].append(
"Key {} added to keychain".format(result["fingerprint"])
)
elif result["ok"] == "0":
ret["message"].append(
"Key {} already exists in keychain".format(
result["fingerprint"]
)
)
elif "problem" in result:
ret["message"].append("Unable to add key to keychain")
elif not bool(recv_data):
ret["res"] = False
ret["message"] = [
f"Something went wrong during gpg call: {recv_data.stderr}"
]
except AttributeError:
ret["res"] = False
ret["message"] = ["Invalid return from python-gpg"]
return ret

View file

@ -1072,4 +1072,4 @@ def test_gpg_receive_keys_no_user_id():
create.return_value.recv_keys.return_value = import_result
res = gpg.receive_keys(keys="abc", user="abc")
assert res["res"] is False
assert "no user ID" in res["message"]
assert "no user ID" in res["message"][0]