@@ -1490,6 +1490,218 @@ def test_send_removed_project_release_emai_to_owner(
14901490 ]
14911491
14921492
1493+ class TestRemovedReleaseFileEmail :
1494+ def test_send_removed_project_release_file_email_to_owner (
1495+ self , pyramid_request , pyramid_config , monkeypatch
1496+ ):
1497+ stub_user = pretend .stub (
1498+ username = "username" ,
1499+ name = "" ,
1500+ email = "email@example.com" ,
1501+ primary_email = pretend .stub (email = "email@example.com" , verified = True ),
1502+ )
1503+ stub_submitter_user = pretend .stub (
1504+ username = "submitterusername" ,
1505+ name = "" ,
1506+ email = "submiteremail@example.com" ,
1507+ primary_email = pretend .stub (
1508+ email = "submiteremail@example.com" , verified = True
1509+ ),
1510+ )
1511+
1512+ subject_renderer = pyramid_config .testing_add_renderer (
1513+ "email/removed-project-release-file/subject.txt"
1514+ )
1515+ subject_renderer .string_response = "Email Subject"
1516+ body_renderer = pyramid_config .testing_add_renderer (
1517+ "email/removed-project-release-file/body.txt"
1518+ )
1519+ body_renderer .string_response = "Email Body"
1520+ html_renderer = pyramid_config .testing_add_renderer (
1521+ "email/removed-project-release-file/body.html"
1522+ )
1523+ html_renderer .string_response = "Email HTML Body"
1524+
1525+ send_email = pretend .stub (
1526+ delay = pretend .call_recorder (lambda * args , ** kwargs : None )
1527+ )
1528+ pyramid_request .task = pretend .call_recorder (lambda * args , ** kwargs : send_email )
1529+ monkeypatch .setattr (email , "send_email" , send_email )
1530+
1531+ release = pretend .stub (
1532+ version = "0.0.0" ,
1533+ project = pretend .stub (name = "test_project" ),
1534+ created = datetime .datetime (2017 , 2 , 5 , 0 , 0 , 0 , 0 ),
1535+ )
1536+
1537+ result = email .send_removed_project_release_file_email (
1538+ pyramid_request ,
1539+ [stub_user , stub_submitter_user ],
1540+ file = "test-file-0.0.0.tar.gz" ,
1541+ release = release ,
1542+ submitter_name = stub_submitter_user .username ,
1543+ submitter_role = "Owner" ,
1544+ recipient_role = "Owner" ,
1545+ )
1546+
1547+ assert result == {
1548+ "file" : "test-file-0.0.0.tar.gz" ,
1549+ "project_name" : release .project .name ,
1550+ "release_version" : release .version ,
1551+ "submitter_name" : stub_submitter_user .username ,
1552+ "submitter_role" : "owner" ,
1553+ "recipient_role_descr" : "an owner" ,
1554+ }
1555+
1556+ subject_renderer .assert_ (project_name = "test_project" )
1557+ subject_renderer .assert_ (release_version = "0.0.0" )
1558+ body_renderer .assert_ (file = "test-file-0.0.0.tar.gz" )
1559+ body_renderer .assert_ (release_version = "0.0.0" )
1560+ body_renderer .assert_ (project_name = "test_project" )
1561+ body_renderer .assert_ (submitter_name = stub_submitter_user .username )
1562+ body_renderer .assert_ (submitter_role = "owner" )
1563+ body_renderer .assert_ (recipient_role_descr = "an owner" )
1564+
1565+ assert pyramid_request .task .calls == [
1566+ pretend .call (send_email ),
1567+ pretend .call (send_email ),
1568+ ]
1569+
1570+ assert send_email .delay .calls == [
1571+ pretend .call (
1572+ "username <email@example.com>" ,
1573+ attr .asdict (
1574+ EmailMessage (
1575+ subject = "Email Subject" ,
1576+ body_text = "Email Body" ,
1577+ body_html = (
1578+ "<html>\n <head></head>\n "
1579+ "<body><p>Email HTML Body</p></body>\n </html>\n "
1580+ ),
1581+ ),
1582+ ),
1583+ ),
1584+ pretend .call (
1585+ "submitterusername <submiteremail@example.com>" ,
1586+ attr .asdict (
1587+ EmailMessage (
1588+ subject = "Email Subject" ,
1589+ body_text = "Email Body" ,
1590+ body_html = (
1591+ "<html>\n <head></head>\n "
1592+ "<body><p>Email HTML Body</p></body>\n </html>\n "
1593+ ),
1594+ )
1595+ ),
1596+ ),
1597+ ]
1598+
1599+ def test_send_removed_project_release_file_email_to_maintainer (
1600+ self , pyramid_request , pyramid_config , monkeypatch
1601+ ):
1602+ stub_user = pretend .stub (
1603+ username = "username" ,
1604+ name = "" ,
1605+ email = "email@example.com" ,
1606+ primary_email = pretend .stub (email = "email@example.com" , verified = True ),
1607+ )
1608+ stub_submitter_user = pretend .stub (
1609+ username = "submitterusername" ,
1610+ name = "" ,
1611+ email = "submiteremail@example.com" ,
1612+ primary_email = pretend .stub (
1613+ email = "submiteremail@example.com" , verified = True
1614+ ),
1615+ )
1616+
1617+ subject_renderer = pyramid_config .testing_add_renderer (
1618+ "email/removed-project-release-file/subject.txt"
1619+ )
1620+ subject_renderer .string_response = "Email Subject"
1621+ body_renderer = pyramid_config .testing_add_renderer (
1622+ "email/removed-project-release-file/body.txt"
1623+ )
1624+ body_renderer .string_response = "Email Body"
1625+ html_renderer = pyramid_config .testing_add_renderer (
1626+ "email/removed-project-release-file/body.html"
1627+ )
1628+ html_renderer .string_response = "Email HTML Body"
1629+
1630+ send_email = pretend .stub (
1631+ delay = pretend .call_recorder (lambda * args , ** kwargs : None )
1632+ )
1633+ pyramid_request .task = pretend .call_recorder (lambda * args , ** kwargs : send_email )
1634+ monkeypatch .setattr (email , "send_email" , send_email )
1635+
1636+ release = pretend .stub (
1637+ version = "0.0.0" ,
1638+ project = pretend .stub (name = "test_project" ),
1639+ created = datetime .datetime (2017 , 2 , 5 , 0 , 0 , 0 , 0 ),
1640+ )
1641+
1642+ result = email .send_removed_project_release_file_email (
1643+ pyramid_request ,
1644+ [stub_user , stub_submitter_user ],
1645+ file = "test-file-0.0.0.tar.gz" ,
1646+ release = release ,
1647+ submitter_name = stub_submitter_user .username ,
1648+ submitter_role = "Owner" ,
1649+ recipient_role = "Maintainer" ,
1650+ )
1651+
1652+ assert result == {
1653+ "file" : "test-file-0.0.0.tar.gz" ,
1654+ "project_name" : release .project .name ,
1655+ "release_version" : release .version ,
1656+ "submitter_name" : stub_submitter_user .username ,
1657+ "submitter_role" : "owner" ,
1658+ "recipient_role_descr" : "a maintainer" ,
1659+ }
1660+
1661+ subject_renderer .assert_ (project_name = "test_project" )
1662+ subject_renderer .assert_ (release_version = "0.0.0" )
1663+ body_renderer .assert_ (file = "test-file-0.0.0.tar.gz" )
1664+ body_renderer .assert_ (release_version = "0.0.0" )
1665+ body_renderer .assert_ (project_name = "test_project" )
1666+ body_renderer .assert_ (submitter_name = stub_submitter_user .username )
1667+ body_renderer .assert_ (submitter_role = "owner" )
1668+ body_renderer .assert_ (recipient_role_descr = "a maintainer" )
1669+
1670+ assert pyramid_request .task .calls == [
1671+ pretend .call (send_email ),
1672+ pretend .call (send_email ),
1673+ ]
1674+
1675+ assert send_email .delay .calls == [
1676+ pretend .call (
1677+ "username <email@example.com>" ,
1678+ attr .asdict (
1679+ EmailMessage (
1680+ subject = "Email Subject" ,
1681+ body_text = "Email Body" ,
1682+ body_html = (
1683+ "<html>\n <head></head>\n "
1684+ "<body><p>Email HTML Body</p></body>\n </html>\n "
1685+ ),
1686+ ),
1687+ ),
1688+ ),
1689+ pretend .call (
1690+ "submitterusername <submiteremail@example.com>" ,
1691+ attr .asdict (
1692+ EmailMessage (
1693+ subject = "Email Subject" ,
1694+ body_text = "Email Body" ,
1695+ body_html = (
1696+ "<html>\n <head></head>\n "
1697+ "<body><p>Email HTML Body</p></body>\n </html>\n "
1698+ ),
1699+ )
1700+ ),
1701+ ),
1702+ ]
1703+
1704+
14931705class TestTwoFactorEmail :
14941706 @pytest .mark .parametrize (
14951707 ("action" , "method" , "pretty_method" ),
0 commit comments