chore: refactor attachment importing out of hooks.py
This commit is contained in:
parent
51432ac897
commit
94ec3af9e3
27
src/keyserver_bot/attachment.py
Normal file
27
src/keyserver_bot/attachment.py
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
import pgpy
|
||||
from email_validator import validate_email
|
||||
|
||||
|
||||
def import_key_from_attachment(file_path: str) -> (str, str, str):
|
||||
"""Import a PGP public key from an attachment.
|
||||
|
||||
:param file_path: the path to the attachment
|
||||
:return: a tuple with the public key, the email address, and a displayname
|
||||
"""
|
||||
try:
|
||||
key = pgpy.PGPKey.from_file(file_path)[0]
|
||||
except ValueError:
|
||||
return "", "", ""
|
||||
except AttributeError:
|
||||
return "", "", ""
|
||||
except pgpy.errors.PGPError:
|
||||
return "", "", ""
|
||||
ascii_key = str(key)
|
||||
keyparts = []
|
||||
for line in ascii_key.splitlines():
|
||||
if line != "" and not ": " in line and not line.startswith("=") and not line.startswith("-----"):
|
||||
keyparts.append(line)
|
||||
uid = key.get_uid("").userid
|
||||
email = validate_email(uid, allow_display_name=True).ascii_email
|
||||
display_name = validate_email(uid, allow_display_name=True).display_name
|
||||
return "".join(keyparts), email, display_name
|
||||
|
|
@ -1,10 +1,9 @@
|
|||
#!/usr/bin/env python3
|
||||
import pgpy
|
||||
from deltachat_rpc_client import events, run_bot_cli, EventType, Message
|
||||
from email_validator import validate_email, EmailNotValidError
|
||||
|
||||
from keyserver_bot.wkd import request_from_wkd
|
||||
from keyserver_bot.koo import request_from_koo
|
||||
from keyserver_bot.attachment import import_key_from_attachment
|
||||
from keyserver_bot.vcard import construct_vcard, save_vcard
|
||||
|
||||
hooks = events.HookCollection()
|
||||
|
|
@ -52,29 +51,6 @@ def command(event):
|
|||
return snapshot.chat.send_file(vcard_path)
|
||||
|
||||
|
||||
def import_key_from_attachment(file_path: str) -> (str, str, str):
|
||||
"""Import a PGP public key from an attachment.
|
||||
|
||||
:param file_path: the path to the attachment
|
||||
:return: a tuple with the public key, the email address, and a displayname
|
||||
"""
|
||||
try:
|
||||
key = pgpy.PGPKey.from_file(file_path)[0]
|
||||
except AttributeError:
|
||||
return "", ""
|
||||
except pgpy.errors.PGPError:
|
||||
return "", ""
|
||||
ascii_key = str(key)
|
||||
keyparts = []
|
||||
for line in ascii_key.splitlines():
|
||||
if line != "" and not ": " in line and not line.startswith("=") and not line.startswith("-----"):
|
||||
keyparts.append(line)
|
||||
uid = key.get_uid("").userid
|
||||
email = validate_email(uid, allow_display_name=True).ascii_email
|
||||
display_name = validate_email(uid, allow_display_name=True).display_name
|
||||
return "".join(keyparts), email, display_name
|
||||
|
||||
|
||||
def request_key_by_email(email) -> str:
|
||||
domain = email.split("@")[1]
|
||||
public_key = request_from_wkd(email, domain)
|
||||
|
|
|
|||
38
tests/test_attachment.py
Normal file
38
tests/test_attachment.py
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
import pytest
|
||||
from keyserver_bot.attachment import import_key_from_attachment
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("file_path", "result"),
|
||||
[
|
||||
(
|
||||
"tests/assets/missytake-pub.asc",
|
||||
(
|
||||
"mDMEXcLIEBYJKwYBBAHaRw8BAQdAmlYU7TEgGL3eq2WXC95tQtZYHjpJOCjb7qq3vJd1lG60Fm1pc3N5dGFrZUBzeXN0ZW1saS5vcmeIlgQTFggAPhYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJdwsgQAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEATMZlgyBRjfXhwA/0kfgkVlieZJuKX3lOPGPPPupygP0+noJmr/TSGU48PXAQCBJOsiJ7MWY/9jrfQFvL6/nMrohvRbWTrlr2zYeKGFCYiQBBMWCAA4AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5FkACgkQBMxmWDIFGN/eWQEA915dJBj2g87jAe/6lgTl3r7iKPymUDq1JF5qqGd44q0BAImC4KepwfwD0opn3ufWAgEWcnvGF01M8s+gBtgTUEAHiJAEExYIADgCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRF/+pCPaQsOzGFVFkEzGZYMgUY3wUCZw7kywAKCRAEzGZYMgUY37s7AP4uOSeC9cwDKnPnov7L6Sp0axUNncX+n5sjepkPpwgVIQD/Zt85kzYrodvsx4QdolweWDFrH9DFxTsTSw2GWIIE6Q20Im1pc3N5dGFrZSA8bWlzc3l0YWtlQHN5c3RlbWxpLm9yZz6IkAQTFggAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuRZAAoJEATMZlgyBRjftBAA/j1QCzLUeDwweGmsaSeS9aephpqtZW/MKmbXQMhyvfuxAP4z1Ndv3t+vAejh5J2NWMxsUMcjxE3C/IVEtuglOsJ1BIiQBBMWCAA4AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5MsACgkQBMxmWDIFGN95RQD/Q/QT+q4vvV2flmNzh7CyfKRPUY4NrMaaT7GmtLAC8TIA/AnL64mAnPmlIV2aLaUZGs4RGYpS7wB1D8zt1KbqS3cAuDgEXcLIEBIKKwYBBAGXVQEFAQEHQGTy3kLa+rSeHhK35fDN/k46zZFh+LDZQ0a2552FuPJ6AwEIB4h4BBgWCAAgAhsMFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5P8ACgkQBMxmWDIFGN/jJgEA5+ESV8PtiUcwxml7GpTGwbIv8GoDA1YlPcUeku/S20QA/iVvzlf8Oj5Wvhet8VMzU37wWsFJ2n6aAyM2WmOrPVoPuDMEXcLKyhYJKwYBBAHaRw8BAQdAtUIjrOUmkTbVVkwIXeAkC/s3Z1wrW2/+KIgkQbbi38WIeAQYFggAIAIbIBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuULAAoJEATMZlgyBRjf19ABALR4jIhWK/5e87V3+xuX9R0MAyBDztZjb8nfXJ3HWK65AQC6S7JybxebS+jHSavTIF0nuaaqBXZx3me1edqwVVBADw==",
|
||||
"missytake@systemli.org",
|
||||
"missytake",
|
||||
),
|
||||
),
|
||||
("tests/test_hooks.py", ("", "", "")),
|
||||
(
|
||||
"tests/assets/iCloud Debug_iclouddbg@nine.testrun.org-0x29E2254EF6BE9F1A-pub.asc",
|
||||
(
|
||||
"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",
|
||||
"iclouddbg@nine.testrun.org",
|
||||
"iCloud Debug",
|
||||
),
|
||||
),
|
||||
(
|
||||
"tests/assets/n21bbif8b@nine.testrun.org-(0xE689A2471F853914)-public.asc",
|
||||
(
|
||||
"xjMEZ/iePRYJKwYBBAHaRw8BAQdA5aVYHFoa20U6SWubzIUi24xgBeFEf+QqhGuxuShyFULNHDxuMjFiYmlmOGJAbmluZS50ZXN0cnVuLm9yZz7CjQQQFggANQIZAQUCZ/iePQIbAwQLCQgHBhUICQoLAgMWAgEBJxYhBDThD8TfA/wGMPw8AeaJokcfhTkUAAoJEOaJokcfhTkUWhUBANZqS1OH7PlwXON6cmvoUvY938IrWRcdOQNvoeAHQkksAP9oK/uUnG6nyzYYX7heaV8CnY8U7Z/LkgS6VpYvClD8Dc44BGf4nj0SCisGAQQBl1UBBQEBB0BgBB0O+YD0RgGvE0KqBtJtxPrYcwUUwwtbGWrMHc11VwMBCAfCeAQYFggAIAUCZ/iePQIbDBYhBDThD8TfA/wGMPw8AeaJokcfhTkUAAoJEOaJokcfhTkU9eIBAP9DXFU4b3bJ1ml8rt45s6FixaGUyIK22KIe+JmH1Mn/AP0fdYczGhtX017RWHM1DfI2Tjx6C3ANKhQqPqDHpbXmBw==",
|
||||
"n21bbif8b@nine.testrun.org",
|
||||
"",
|
||||
),
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_import_key_from_attachment(file_path, result):
|
||||
imported = import_key_from_attachment(file_path)
|
||||
assert result[0] == imported[0]
|
||||
assert result[1] == imported[1]
|
||||
|
|
@ -1,29 +1,9 @@
|
|||
import os
|
||||
from email_validator import validate_email, EmailNotValidError
|
||||
|
||||
import pytest
|
||||
from keyserver_bot.hooks import request_key_by_email, delete_data, import_key_from_attachment
|
||||
from keyserver_bot.hooks import request_key_by_email, delete_data
|
||||
from deltachat_rpc_client.pytestplugin import acfactory
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("email", "public_key"),
|
||||
[
|
||||
(
|
||||
"missytake@systemli.org",
|
||||
"xjMEXcLIEBYJKwYBBAHaRw8BAQdAmlYU7TEgGL3eq2WXC95tQtZYHjpJOCjb7qq3vJd1lG7NIm1pc3N5dGFrZSA8bWlzc3l0YWtlQHN5c3RlbWxpLm9yZz7CkAQTFggAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuTLAAoJEATMZlgyBRjfeUUA/0P0E/quL71dn5Zjc4ewsnykT1GODazGmk+xprSwAvEyAPwJy+uJgJz5pSFdmi2lGRrOERmKUu8AdQ/M7dSm6kt3AMKQBBMWCAA4AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5FkACgkQBMxmWDIFGN+0EAD+PVALMtR4PDB4aaxpJ5L1p6mGmq1lb8wqZtdAyHK9+7EA/jPU12/e368B6OHknY1YzGxQxyPETcL8hUS26CU6wnUEzRZtaXNzeXRha2VAc3lzdGVtbGkub3JnwpAEExYIADgCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRF/+pCPaQsOzGFVFkEzGZYMgUY3wUCZw7kywAKCRAEzGZYMgUY37s7AP4uOSeC9cwDKnPnov7L6Sp0axUNncX+n5sjepkPpwgVIQD/Zt85kzYrodvsx4QdolweWDFrH9DFxTsTSw2GWIIE6Q3CkAQTFggAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuRZAAoJEATMZlgyBRjf3lkBAPdeXSQY9oPO4wHv+pYE5d6+4ij8plA6tSReaqhneOKtAQCJguCnqcH8A9KKZ97n1gIBFnJ7xhdNTPLPoAbYE1BAB8KWBBMWCAA+FiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAl3CyBACGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQBMxmWDIFGN9eHAD/SR+CRWWJ5km4pfeU48Y88+6nKA/T6egmav9NIZTjw9cBAIEk6yInsxZj/2Ot9AW8vr+cyuiG9FtZOuWvbNh4oYUJzjMEXcLKyhYJKwYBBAHaRw8BAQdAtUIjrOUmkTbVVkwIXeAkC/s3Z1wrW2/+KIgkQbbi38XCeAQYFggAIAIbIBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuULAAoJEATMZlgyBRjf19ABALR4jIhWK/5e87V3+xuX9R0MAyBDztZjb8nfXJ3HWK65AQC6S7JybxebS+jHSavTIF0nuaaqBXZx3me1edqwVVBAD8J+BBgWCAAmFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAl3CysoCGyAFCQlmAYAACgkQBMxmWDIFGN/IQgEA8WwKDEEtbyIiCr5pLD/eqJ2m1xIsKKP/0sH0ADPMwjEA/jvMjOjbrh5WZuUnf+ddcVB7GStu3SZtenkB/rK1+s0EzjgEXcLIEBIKKwYBBAGXVQEFAQEHQGTy3kLa+rSeHhK35fDN/k46zZFh+LDZQ0a2552FuPJ6AwEIB8J4BBgWCAAgAhsMFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5P8ACgkQBMxmWDIFGN/jJgEA5+ESV8PtiUcwxml7GpTGwbIv8GoDA1YlPcUeku/S20QA/iVvzlf8Oj5Wvhet8VMzU37wWsFJ2n6aAyM2WmOrPVoPwn4EGBYIACYWIQRF/+pCPaQsOzGFVFkEzGZYMgUY3wUCXcLIEAIbDAUJCWYBgAAKCRAEzGZYMgUY3zZnAP9JMp+PI+1H4x3D62Qg4udjL6zypFKTrcrUnyWNcoWzoQD/W3uJ7M2sbOdAdHcj246koYP32BrR/7Wtc0/7yJPfqQk==oePr",
|
||||
),
|
||||
("adsokasd@ingrdsuf.org", ""),
|
||||
(
|
||||
"sdjif2mlij@protonmail.com",
|
||||
"xjMEZ+/HahYJKwYBBAHaRw8BAQdAzRZOcQEkaPGwUYBVHsKTVX+4nP05ZwLQ3wYUod1IQyjNNXNkamlmMm1saWpAcHJvdG9ubWFpbC5jb20gPHNkamlmMm1saWpAcHJvdG9ubWFpbC5jb20+wsARBBMWCgCDBYJn78dqAwsJBwmQ9od3MCAJzKNFFAAAAAAAHAAgc2FsdEBub3RhdGlvbnMub3BlbnBncGpzLm9yZ3e7fGtn2OkXwNFoBOAEgwoRygRlwr41fcO4LsJ/1HcyAxUKCAQWAAIBAhkBApsDAh4BFiEERU5l1enHSVCTOUnc9od3MCAJzKMAAAuPAQCQ0PFlbngJRtJ36yloWfHwTY168TDlMGeL+nAxJ1GUQAEA31H+NukIwEzCwQWh7aoFeY9eJHXVoaeh0swfvJA5yQ/CwB4EEBYIAJAFgmfvx6cFgwDtTgAJENgGwa9ZeOjHNRQAAAAAABwAEHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmfU5CAfgrGEZMQfk/lTyXT2LBxvcGVucGdwLWNhQHByb3Rvbi5tZSA8b3BlbnBncC1jYUBwcm90b24ubWU+FiEECoZS/l1TOGBXiZ/p2AbBr1l46McAAJCrAP4tMWMSLKAykI/JnR+94aE2+E4dCTslkW/svb1o7zGLbwEAg/fo6sOxa3wHr9xnCbUUrxZ0Dnh/21zJ3atL6zMpYQHOOARn78dqEgorBgEEAZdVAQUBAQdATm5zMhEn2/S+UB3qKfeV424+iyvIr2p3FEzxuzUQKQEDAQgHwr4EGBYKAHAFgmfvx2oJkPaHdzAgCcyjRRQAAAAAABwAIHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmf94HNvbCT5aX/ifcaDK2bIjzmS69JdQo1AcOt3X8AwFQKbDBYhBEVOZdXpx0lQkzlJ3PaHdzAgCcyjAACVUgEA8Agw7R9+a72WsKOq691JIYPGDfNYCKNHFllsQAfHHHYA/3x+rG9YQTbdAuuFi1ciGvgo9DAWVv8Bt7ibBqEVAuQN",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_request_by_email(email, public_key):
|
||||
assert public_key == request_key_by_email(email)
|
||||
|
||||
|
||||
def test_delete_data(acfactory):
|
||||
if not os.getenv("CHATMAIL_DOMAIN"):
|
||||
os.environ["CHATMAIL_DOMAIN"] = "nine.testrun.org"
|
||||
|
|
@ -44,55 +24,18 @@ def test_delete_data(acfactory):
|
|||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("email", "valid"),
|
||||
[
|
||||
("test", False),
|
||||
("test@example", False),
|
||||
("@example", False),
|
||||
("@example.org", False),
|
||||
("test+asdf@example.org", True),
|
||||
("test@example.org", True),
|
||||
("ätsch@ツ.life", True),
|
||||
],
|
||||
)
|
||||
def test_validate_email(email, valid):
|
||||
try:
|
||||
validate_email(email, check_deliverability=False)
|
||||
except EmailNotValidError:
|
||||
assert not valid
|
||||
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
("file_path", "result"),
|
||||
("email", "public_key"),
|
||||
[
|
||||
("adsokasd@ingrdsuf.org", ""),
|
||||
(
|
||||
"tests/assets/missytake-pub.asc",
|
||||
(
|
||||
"mDMEXcLIEBYJKwYBBAHaRw8BAQdAmlYU7TEgGL3eq2WXC95tQtZYHjpJOCjb7qq3vJd1lG60Fm1pc3N5dGFrZUBzeXN0ZW1saS5vcmeIlgQTFggAPhYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJdwsgQAhsDBQkJZgGABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEATMZlgyBRjfXhwA/0kfgkVlieZJuKX3lOPGPPPupygP0+noJmr/TSGU48PXAQCBJOsiJ7MWY/9jrfQFvL6/nMrohvRbWTrlr2zYeKGFCYiQBBMWCAA4AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5FkACgkQBMxmWDIFGN/eWQEA915dJBj2g87jAe/6lgTl3r7iKPymUDq1JF5qqGd44q0BAImC4KepwfwD0opn3ufWAgEWcnvGF01M8s+gBtgTUEAHiJAEExYIADgCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRF/+pCPaQsOzGFVFkEzGZYMgUY3wUCZw7kywAKCRAEzGZYMgUY37s7AP4uOSeC9cwDKnPnov7L6Sp0axUNncX+n5sjepkPpwgVIQD/Zt85kzYrodvsx4QdolweWDFrH9DFxTsTSw2GWIIE6Q20Im1pc3N5dGFrZSA8bWlzc3l0YWtlQHN5c3RlbWxpLm9yZz6IkAQTFggAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuRZAAoJEATMZlgyBRjftBAA/j1QCzLUeDwweGmsaSeS9aephpqtZW/MKmbXQMhyvfuxAP4z1Ndv3t+vAejh5J2NWMxsUMcjxE3C/IVEtuglOsJ1BIiQBBMWCAA4AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5MsACgkQBMxmWDIFGN95RQD/Q/QT+q4vvV2flmNzh7CyfKRPUY4NrMaaT7GmtLAC8TIA/AnL64mAnPmlIV2aLaUZGs4RGYpS7wB1D8zt1KbqS3cAuDgEXcLIEBIKKwYBBAGXVQEFAQEHQGTy3kLa+rSeHhK35fDN/k46zZFh+LDZQ0a2552FuPJ6AwEIB4h4BBgWCAAgAhsMFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5P8ACgkQBMxmWDIFGN/jJgEA5+ESV8PtiUcwxml7GpTGwbIv8GoDA1YlPcUeku/S20QA/iVvzlf8Oj5Wvhet8VMzU37wWsFJ2n6aAyM2WmOrPVoPuDMEXcLKyhYJKwYBBAHaRw8BAQdAtUIjrOUmkTbVVkwIXeAkC/s3Z1wrW2/+KIgkQbbi38WIeAQYFggAIAIbIBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuULAAoJEATMZlgyBRjf19ABALR4jIhWK/5e87V3+xuX9R0MAyBDztZjb8nfXJ3HWK65AQC6S7JybxebS+jHSavTIF0nuaaqBXZx3me1edqwVVBADw==",
|
||||
"missytake@systemli.org",
|
||||
"missytake",
|
||||
),
|
||||
),
|
||||
("tests/test_hooks.py", ("", "")),
|
||||
(
|
||||
"tests/assets/iCloud Debug_iclouddbg@nine.testrun.org-0x29E2254EF6BE9F1A-pub.asc",
|
||||
(
|
||||
"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",
|
||||
"iclouddbg@nine.testrun.org",
|
||||
"iCloud Debug",
|
||||
),
|
||||
"missytake@systemli.org",
|
||||
"xjMEXcLIEBYJKwYBBAHaRw8BAQdAmlYU7TEgGL3eq2WXC95tQtZYHjpJOCjb7qq3vJd1lG7NIm1pc3N5dGFrZSA8bWlzc3l0YWtlQHN5c3RlbWxpLm9yZz7CkAQTFggAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuTLAAoJEATMZlgyBRjfeUUA/0P0E/quL71dn5Zjc4ewsnykT1GODazGmk+xprSwAvEyAPwJy+uJgJz5pSFdmi2lGRrOERmKUu8AdQ/M7dSm6kt3AMKQBBMWCAA4AhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5FkACgkQBMxmWDIFGN+0EAD+PVALMtR4PDB4aaxpJ5L1p6mGmq1lb8wqZtdAyHK9+7EA/jPU12/e368B6OHknY1YzGxQxyPETcL8hUS26CU6wnUEzRZtaXNzeXRha2VAc3lzdGVtbGkub3JnwpAEExYIADgCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AWIQRF/+pCPaQsOzGFVFkEzGZYMgUY3wUCZw7kywAKCRAEzGZYMgUY37s7AP4uOSeC9cwDKnPnov7L6Sp0axUNncX+n5sjepkPpwgVIQD/Zt85kzYrodvsx4QdolweWDFrH9DFxTsTSw2GWIIE6Q3CkAQTFggAOAIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuRZAAoJEATMZlgyBRjf3lkBAPdeXSQY9oPO4wHv+pYE5d6+4ij8plA6tSReaqhneOKtAQCJguCnqcH8A9KKZ97n1gIBFnJ7xhdNTPLPoAbYE1BAB8KWBBMWCAA+FiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAl3CyBACGwMFCQlmAYAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQBMxmWDIFGN9eHAD/SR+CRWWJ5km4pfeU48Y88+6nKA/T6egmav9NIZTjw9cBAIEk6yInsxZj/2Ot9AW8vr+cyuiG9FtZOuWvbNh4oYUJzjMEXcLKyhYJKwYBBAHaRw8BAQdAtUIjrOUmkTbVVkwIXeAkC/s3Z1wrW2/+KIgkQbbi38XCeAQYFggAIAIbIBYhBEX/6kI9pCw7MYVUWQTMZlgyBRjfBQJnDuULAAoJEATMZlgyBRjf19ABALR4jIhWK/5e87V3+xuX9R0MAyBDztZjb8nfXJ3HWK65AQC6S7JybxebS+jHSavTIF0nuaaqBXZx3me1edqwVVBAD8J+BBgWCAAmFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAl3CysoCGyAFCQlmAYAACgkQBMxmWDIFGN/IQgEA8WwKDEEtbyIiCr5pLD/eqJ2m1xIsKKP/0sH0ADPMwjEA/jvMjOjbrh5WZuUnf+ddcVB7GStu3SZtenkB/rK1+s0EzjgEXcLIEBIKKwYBBAGXVQEFAQEHQGTy3kLa+rSeHhK35fDN/k46zZFh+LDZQ0a2552FuPJ6AwEIB8J4BBgWCAAgAhsMFiEERf/qQj2kLDsxhVRZBMxmWDIFGN8FAmcO5P8ACgkQBMxmWDIFGN/jJgEA5+ESV8PtiUcwxml7GpTGwbIv8GoDA1YlPcUeku/S20QA/iVvzlf8Oj5Wvhet8VMzU37wWsFJ2n6aAyM2WmOrPVoPwn4EGBYIACYWIQRF/+pCPaQsOzGFVFkEzGZYMgUY3wUCXcLIEAIbDAUJCWYBgAAKCRAEzGZYMgUY3zZnAP9JMp+PI+1H4x3D62Qg4udjL6zypFKTrcrUnyWNcoWzoQD/W3uJ7M2sbOdAdHcj246koYP32BrR/7Wtc0/7yJPfqQk==oePr",
|
||||
),
|
||||
(
|
||||
"tests/assets/n21bbif8b@nine.testrun.org-(0xE689A2471F853914)-public.asc",
|
||||
(
|
||||
"xjMEZ/iePRYJKwYBBAHaRw8BAQdA5aVYHFoa20U6SWubzIUi24xgBeFEf+QqhGuxuShyFULNHDxuMjFiYmlmOGJAbmluZS50ZXN0cnVuLm9yZz7CjQQQFggANQIZAQUCZ/iePQIbAwQLCQgHBhUICQoLAgMWAgEBJxYhBDThD8TfA/wGMPw8AeaJokcfhTkUAAoJEOaJokcfhTkUWhUBANZqS1OH7PlwXON6cmvoUvY938IrWRcdOQNvoeAHQkksAP9oK/uUnG6nyzYYX7heaV8CnY8U7Z/LkgS6VpYvClD8Dc44BGf4nj0SCisGAQQBl1UBBQEBB0BgBB0O+YD0RgGvE0KqBtJtxPrYcwUUwwtbGWrMHc11VwMBCAfCeAQYFggAIAUCZ/iePQIbDBYhBDThD8TfA/wGMPw8AeaJokcfhTkUAAoJEOaJokcfhTkU9eIBAP9DXFU4b3bJ1ml8rt45s6FixaGUyIK22KIe+JmH1Mn/AP0fdYczGhtX017RWHM1DfI2Tjx6C3ANKhQqPqDHpbXmBw==",
|
||||
"n21bbif8b@nine.testrun.org",
|
||||
"",
|
||||
),
|
||||
"sdjif2mlij@protonmail.com",
|
||||
"xjMEZ+/HahYJKwYBBAHaRw8BAQdAzRZOcQEkaPGwUYBVHsKTVX+4nP05ZwLQ3wYUod1IQyjNNXNkamlmMm1saWpAcHJvdG9ubWFpbC5jb20gPHNkamlmMm1saWpAcHJvdG9ubWFpbC5jb20+wsARBBMWCgCDBYJn78dqAwsJBwmQ9od3MCAJzKNFFAAAAAAAHAAgc2FsdEBub3RhdGlvbnMub3BlbnBncGpzLm9yZ3e7fGtn2OkXwNFoBOAEgwoRygRlwr41fcO4LsJ/1HcyAxUKCAQWAAIBAhkBApsDAh4BFiEERU5l1enHSVCTOUnc9od3MCAJzKMAAAuPAQCQ0PFlbngJRtJ36yloWfHwTY168TDlMGeL+nAxJ1GUQAEA31H+NukIwEzCwQWh7aoFeY9eJHXVoaeh0swfvJA5yQ/CwB4EEBYIAJAFgmfvx6cFgwDtTgAJENgGwa9ZeOjHNRQAAAAAABwAEHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmfU5CAfgrGEZMQfk/lTyXT2LBxvcGVucGdwLWNhQHByb3Rvbi5tZSA8b3BlbnBncC1jYUBwcm90b24ubWU+FiEECoZS/l1TOGBXiZ/p2AbBr1l46McAAJCrAP4tMWMSLKAykI/JnR+94aE2+E4dCTslkW/svb1o7zGLbwEAg/fo6sOxa3wHr9xnCbUUrxZ0Dnh/21zJ3atL6zMpYQHOOARn78dqEgorBgEEAZdVAQUBAQdATm5zMhEn2/S+UB3qKfeV424+iyvIr2p3FEzxuzUQKQEDAQgHwr4EGBYKAHAFgmfvx2oJkPaHdzAgCcyjRRQAAAAAABwAIHNhbHRAbm90YXRpb25zLm9wZW5wZ3Bqcy5vcmf94HNvbCT5aX/ifcaDK2bIjzmS69JdQo1AcOt3X8AwFQKbDBYhBEVOZdXpx0lQkzlJ3PaHdzAgCcyjAACVUgEA8Agw7R9+a72WsKOq691JIYPGDfNYCKNHFllsQAfHHHYA/3x+rG9YQTbdAuuFi1ciGvgo9DAWVv8Bt7ibBqEVAuQN",
|
||||
),
|
||||
],
|
||||
)
|
||||
def test_import_key_from_attachment(file_path, result):
|
||||
imported = import_key_from_attachment(file_path)
|
||||
assert result[0] == imported[0]
|
||||
assert result[1] == imported[1]
|
||||
def test_request_by_email(email, public_key):
|
||||
assert public_key == request_key_by_email(email)
|
||||
|
|
|
|||
Loading…
Reference in a new issue