diff --git a/tests/unit/forklift/test_legacy.py b/tests/unit/forklift/test_legacy.py index a4de40e3813d..8d2e8e4a6883 100644 --- a/tests/unit/forklift/test_legacy.py +++ b/tests/unit/forklift/test_legacy.py @@ -2746,16 +2746,24 @@ def test_upload_requires_verified_email(self, pyramid_config, db_request, resp = legacy.file_upload(db_request) assert resp.status_code == 200 else: + db_request.route_url = pretend.call_recorder( + lambda route, **kw: "/the/help/url/" + ) + with pytest.raises(HTTPBadRequest) as excinfo: legacy.file_upload(db_request) + resp = excinfo.value + + assert db_request.route_url.calls == [ + pretend.call('help', _anchor='verified-email') + ] assert resp.status_code == 400 assert resp.status == ( ("400 User {!r} has no verified email " "addresses, please verify at least one " "address before registering a new project " - "on PyPI. See " - "https://pypi.org/help/#verified-email " + "on PyPI. See /the/help/url/ " "for more information.").format(user.username) ) diff --git a/warehouse/forklift/legacy.py b/warehouse/forklift/legacy.py index 1f048dddf1cb..e99685daa1bf 100644 --- a/warehouse/forklift/legacy.py +++ b/warehouse/forklift/legacy.py @@ -823,11 +823,14 @@ def file_upload(request): if not any(email.verified for email in request.user.emails): raise _exc_with_message( HTTPBadRequest, - ("User {!r} has no verified email addresses, please verify " - "at least one address before registering a new project on " - "PyPI. See https://pypi.org/help/#verified-email " - "for more information.") - .format(request.user.username), + ("User {!r} has no verified email addresses, " + "please verify at least one address before registering " + "a new project on PyPI. See {projecthelp} " + "for more information.").format( + request.user.username, + projecthelp=request.route_url( + 'help', _anchor='verified-email' + )), ) from None # Before we create the project, we're going to check our blacklist to