Skip to content

Commit ef8cc62

Browse files
facutuescadiwoodruffw
authored
Warn users when GitHub/GitLab environments are not checked during Trusted Publishing (#17281)
* Add magic link to constrain environment existing Trusted Publisher Signed-off-by: Facundo Tuesca <[email protected]> * Warn when Trusted Publisher without environment is used with one Signed-off-by: Facundo Tuesca <[email protected]> * Remove translation markers from email Signed-off-by: Facundo Tuesca <[email protected]> * Use a modal confirm dialog to constrain the environment Signed-off-by: Facundo Tuesca <[email protected]> * Update warehouse/templates/manage/project/publishing.html Co-authored-by: Dustin Ingram <[email protected]> * Update warehouse/templates/manage/project/publishing.html Co-authored-by: Dustin Ingram <[email protected]> * add callout about multiple envs Signed-off-by: William Woodruff <[email protected]> * language tweaks Signed-off-by: William Woodruff <[email protected]> --------- Signed-off-by: Facundo Tuesca <[email protected]> Signed-off-by: William Woodruff <[email protected]> Co-authored-by: Dustin Ingram <[email protected]> Co-authored-by: William Woodruff <[email protected]> Co-authored-by: William Woodruff <[email protected]>
1 parent d583427 commit ef8cc62

File tree

12 files changed

+1151
-57
lines changed

12 files changed

+1151
-57
lines changed

tests/unit/email/test_init.py

+96
Original file line numberDiff line numberDiff line change
@@ -6218,3 +6218,99 @@ def test_pep625_emails(
62186218
},
62196219
)
62206220
]
6221+
6222+
def test_environment_ignored_in_trusted_publisher_emails(
6223+
self, pyramid_request, pyramid_config, monkeypatch
6224+
):
6225+
template_name = "environment-ignored-in-trusted-publisher"
6226+
stub_user_owner = pretend.stub(
6227+
id="id_owner",
6228+
username="username_owner",
6229+
name="",
6230+
6231+
primary_email=pretend.stub(email="[email protected]", verified=True),
6232+
)
6233+
subject_renderer = pyramid_config.testing_add_renderer(
6234+
f"email/{template_name}/subject.txt"
6235+
)
6236+
subject_renderer.string_response = "Email Subject"
6237+
body_renderer = pyramid_config.testing_add_renderer(
6238+
f"email/{template_name}/body.txt"
6239+
)
6240+
body_renderer.string_response = "Email Body"
6241+
html_renderer = pyramid_config.testing_add_renderer(
6242+
f"email/{template_name}/body.html"
6243+
)
6244+
html_renderer.string_response = "Email HTML Body"
6245+
6246+
send_email = pretend.stub(
6247+
delay=pretend.call_recorder(lambda *args, **kwargs: None)
6248+
)
6249+
pyramid_request.task = pretend.call_recorder(lambda *args, **kwargs: send_email)
6250+
monkeypatch.setattr(email, "send_email", send_email)
6251+
6252+
pyramid_request.db = pretend.stub(
6253+
query=lambda a: pretend.stub(
6254+
filter=lambda *a: pretend.stub(
6255+
one=lambda: pretend.stub(user_id=stub_user_owner.id)
6256+
)
6257+
),
6258+
)
6259+
fakepublisher = pretend.stub(
6260+
publisher_name="fakepublisher",
6261+
repository_owner="fakeowner",
6262+
repository_name="fakerepository",
6263+
environment="",
6264+
)
6265+
fakeenvironment = "fakeenvironment"
6266+
pyramid_request.user = stub_user_owner
6267+
pyramid_request.registry.settings = {"mail.sender": "[email protected]"}
6268+
6269+
project_name = "test_project"
6270+
result = email.send_environment_ignored_in_trusted_publisher_email(
6271+
pyramid_request,
6272+
[stub_user_owner],
6273+
project_name=project_name,
6274+
publisher=fakepublisher,
6275+
environment_name=fakeenvironment,
6276+
)
6277+
6278+
assert result == {
6279+
"project_name": project_name,
6280+
"publisher": fakepublisher,
6281+
"environment_name": fakeenvironment,
6282+
}
6283+
subject_renderer.assert_()
6284+
body_renderer.assert_()
6285+
html_renderer.assert_(
6286+
project_name=project_name,
6287+
publisher=fakepublisher,
6288+
environment_name=fakeenvironment,
6289+
)
6290+
assert pyramid_request.task.calls == [
6291+
pretend.call(send_email),
6292+
]
6293+
assert send_email.delay.calls == [
6294+
pretend.call(
6295+
f"{stub_user_owner.username} <{stub_user_owner.email}>",
6296+
{
6297+
"sender": None,
6298+
"subject": "Email Subject",
6299+
"body_text": "Email Body",
6300+
"body_html": (
6301+
"<html>\n<head></head>\n"
6302+
"<body><p>Email HTML Body</p></body>\n</html>\n"
6303+
),
6304+
},
6305+
{
6306+
"tag": "account:email:sent",
6307+
"user_id": stub_user_owner.id,
6308+
"additional": {
6309+
"from_": "[email protected]",
6310+
"to": stub_user_owner.email,
6311+
"subject": "Email Subject",
6312+
"redact_ip": False,
6313+
},
6314+
},
6315+
),
6316+
]

0 commit comments

Comments
 (0)