Skip to content

Commit 7c93a28

Browse files
authored
Stop sending emails/warnings on PGP signature uploads (#15896)
1 parent 44d8dda commit 7c93a28

File tree

8 files changed

+13
-198
lines changed

8 files changed

+13
-198
lines changed

tests/unit/email/test_init.py

Lines changed: 0 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,77 +1384,6 @@ def test_password_compromised_email(
13841384
]
13851385

13861386

1387-
class TestGPGSignatureUploadedEmail:
1388-
def test_gpg_signature_uploaded_email(
1389-
self, pyramid_request, pyramid_config, monkeypatch
1390-
):
1391-
stub_user = pretend.stub(
1392-
id="id",
1393-
username="username",
1394-
name="",
1395-
1396-
primary_email=pretend.stub(email="[email protected]", verified=True),
1397-
)
1398-
subject_renderer = pyramid_config.testing_add_renderer(
1399-
"email/gpg-signature-uploaded/subject.txt"
1400-
)
1401-
subject_renderer.string_response = "Email Subject"
1402-
body_renderer = pyramid_config.testing_add_renderer(
1403-
"email/gpg-signature-uploaded/body.txt"
1404-
)
1405-
body_renderer.string_response = "Email Body"
1406-
html_renderer = pyramid_config.testing_add_renderer(
1407-
"email/gpg-signature-uploaded/body.html"
1408-
)
1409-
html_renderer.string_response = "Email HTML Body"
1410-
1411-
send_email = pretend.stub(
1412-
delay=pretend.call_recorder(lambda *args, **kwargs: None)
1413-
)
1414-
pyramid_request.task = pretend.call_recorder(lambda *args, **kwargs: send_email)
1415-
monkeypatch.setattr(email, "send_email", send_email)
1416-
1417-
pyramid_request.db = pretend.stub(
1418-
query=lambda a: pretend.stub(
1419-
filter=lambda *a: pretend.stub(
1420-
one=lambda: pretend.stub(user_id=stub_user.id)
1421-
)
1422-
),
1423-
)
1424-
pyramid_request.user = stub_user
1425-
pyramid_request.registry.settings = {"mail.sender": "[email protected]"}
1426-
project_name = "exampleproject"
1427-
result = email.send_gpg_signature_uploaded_email(
1428-
pyramid_request, stub_user, project_name=project_name
1429-
)
1430-
1431-
assert result == {"project_name": project_name}
1432-
assert pyramid_request.task.calls == [pretend.call(send_email)]
1433-
assert send_email.delay.calls == [
1434-
pretend.call(
1435-
f"{stub_user.username} <{stub_user.email}>",
1436-
{
1437-
"subject": "Email Subject",
1438-
"body_text": "Email Body",
1439-
"body_html": (
1440-
"<html>\n<head></head>\n"
1441-
"<body><p>Email HTML Body</p></body>\n</html>\n"
1442-
),
1443-
},
1444-
{
1445-
"tag": "account:email:sent",
1446-
"user_id": stub_user.id,
1447-
"additional": {
1448-
"from_": "[email protected]",
1449-
"to": stub_user.email,
1450-
"subject": "Email Subject",
1451-
"redact_ip": False,
1452-
},
1453-
},
1454-
)
1455-
]
1456-
1457-
14581387
class Test2FAonUploadEmail:
14591388
def test_send_two_factor_not_yet_enabled_email(
14601389
self, pyramid_request, pyramid_config, monkeypatch

tests/unit/forklift/test_legacy.py

Lines changed: 1 addition & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3695,7 +3695,7 @@ def test_upload_succeeds_creates_project(
36953695
("example", "1.0", "add source file example-1.0.tar.gz", user),
36963696
]
36973697

3698-
def test_upload_succeeds_with_signature(
3698+
def test_upload_succeeds_with_gpg_signature_field(
36993699
self, pyramid_config, db_request, metrics, project_service, monkeypatch
37003700
):
37013701
user = UserFactory.create()
@@ -3729,20 +3729,9 @@ def test_upload_succeeds_with_signature(
37293729
}.get(svc)
37303730
db_request.user_agent = "warehouse-tests/6.6.6"
37313731

3732-
send_email = pretend.call_recorder(lambda *a, **kw: None)
3733-
monkeypatch.setattr(legacy, "send_gpg_signature_uploaded_email", send_email)
3734-
37353732
resp = legacy.file_upload(db_request)
37363733

37373734
assert resp.status_code == 200
3738-
assert resp.body == (
3739-
b"GPG signature support has been removed from PyPI and the provided "
3740-
b"signature has been discarded."
3741-
)
3742-
3743-
assert send_email.calls == [
3744-
pretend.call(db_request, user, project_name="example"),
3745-
]
37463735

37473736
def test_upload_succeeds_without_two_factor(
37483737
self, pyramid_config, db_request, metrics, project_service, monkeypatch

warehouse/email/__init__.py

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -344,11 +344,6 @@ def send_two_factor_not_yet_enabled_email(request, user):
344344
return {"username": user.username}
345345

346346

347-
@_email("gpg-signature-uploaded", repeat_window=datetime.timedelta(days=1))
348-
def send_gpg_signature_uploaded_email(request, user, *, project_name):
349-
return {"project_name": project_name}
350-
351-
352347
@_email("account-deleted")
353348
def send_account_deletion_email(request, user):
354349
return {"username": user.username}

warehouse/forklift/legacy.py

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,6 @@
4747
from warehouse.classifiers.models import Classifier
4848
from warehouse.email import (
4949
send_api_token_used_in_trusted_publisher_project_email,
50-
send_gpg_signature_uploaded_email,
5150
send_two_factor_not_yet_enabled_email,
5251
)
5352
from warehouse.events.tags import EventTag
@@ -452,7 +451,8 @@ def file_upload(request):
452451
raise _exc_with_message(HTTPBadRequest, "Unknown protocol version.")
453452

454453
# Check if any fields were supplied as a tuple and have become a
455-
# FieldStorage. The 'content' field _should_ be a FieldStorage, however.
454+
# FieldStorage. The 'content' field _should_ be a FieldStorage, however,
455+
# and we don't care about the legacy gpg_signature field.
456456
# ref: https://github.com/pypi/warehouse/issues/2185
457457
# ref: https://github.com/pypi/warehouse/issues/2491
458458
for field in set(request.POST) - {"content", "gpg_signature"}:
@@ -769,17 +769,6 @@ def file_upload(request):
769769
)
770770
request.db.add(release)
771771

772-
if "gpg_signature" in request.POST:
773-
warnings.append(
774-
"GPG signature support has been removed from PyPI and the "
775-
"provided signature has been discarded."
776-
)
777-
send_gpg_signature_uploaded_email(
778-
request,
779-
request.user if request.user else project.users,
780-
project_name=project.name,
781-
)
782-
783772
# TODO: This should be handled by some sort of database trigger or
784773
# a SQLAlchemy hook or the like instead of doing it inline in
785774
# this view.

warehouse/locale/messages.pot

Lines changed: 10 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1958,34 +1958,6 @@ msgid ""
19581958
"organization"
19591959
msgstr ""
19601960

1961-
#: warehouse/templates/email/gpg-signature-uploaded/body.html:17
1962-
#: warehouse/templates/email/password-compromised-hibp/body.html:18
1963-
#: warehouse/templates/email/password-compromised/body.html:18
1964-
msgid "What?"
1965-
msgstr ""
1966-
1967-
#: warehouse/templates/email/gpg-signature-uploaded/body.html:19
1968-
#, python-format
1969-
msgid ""
1970-
"During your recent upload of %(project_name)s to %(site)s, we noticed you"
1971-
" uploaded a GPG signature. However, support for GPG signatures has been "
1972-
"removed from %(site)s."
1973-
msgstr ""
1974-
1975-
#: warehouse/templates/email/gpg-signature-uploaded/body.html:22
1976-
#: warehouse/templates/email/password-compromised-hibp/body.html:32
1977-
#: warehouse/templates/email/password-compromised/body.html:31
1978-
msgid "What should I do?"
1979-
msgstr ""
1980-
1981-
#: warehouse/templates/email/gpg-signature-uploaded/body.html:24
1982-
#, python-format
1983-
msgid ""
1984-
"While uploads will continue to work, any signatures uploaded to %(site)s "
1985-
"will be discarded. It is recommended to no longer upload signatures to "
1986-
"%(site)s."
1987-
msgstr ""
1988-
19891961
#: warehouse/templates/email/new-email-added/body.html:17
19901962
#, python-format
19911963
msgid ""
@@ -2217,6 +2189,11 @@ msgid ""
22172189
"<strong>%(username)s</strong>."
22182190
msgstr ""
22192191

2192+
#: warehouse/templates/email/password-compromised-hibp/body.html:18
2193+
#: warehouse/templates/email/password-compromised/body.html:18
2194+
msgid "What?"
2195+
msgstr ""
2196+
22202197
#: warehouse/templates/email/password-compromised/body.html:20
22212198
msgid ""
22222199
"PyPI administrators have determined that your password is compromised. To"
@@ -2231,6 +2208,11 @@ msgid ""
22312208
"reduce the risk for PyPI and its users."
22322209
msgstr ""
22332210

2211+
#: warehouse/templates/email/password-compromised-hibp/body.html:32
2212+
#: warehouse/templates/email/password-compromised/body.html:31
2213+
msgid "What should I do?"
2214+
msgstr ""
2215+
22342216
#: warehouse/templates/email/password-compromised/body.html:33
22352217
#, python-format
22362218
msgid ""

warehouse/templates/email/gpg-signature-uploaded/body.html

Lines changed: 0 additions & 26 deletions
This file was deleted.

warehouse/templates/email/gpg-signature-uploaded/body.txt

Lines changed: 0 additions & 26 deletions
This file was deleted.

warehouse/templates/email/gpg-signature-uploaded/subject.txt

Lines changed: 0 additions & 17 deletions
This file was deleted.

0 commit comments

Comments
 (0)