@@ -1490,6 +1490,218 @@ def test_send_removed_project_release_emai_to_owner(
1490
1490
]
1491
1491
1492
1492
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
+
1501
+ primary_email = pretend .
stub (
email = "[email protected] " ,
verified = True ),
1502
+ )
1503
+ stub_submitter_user = pretend .stub (
1504
+ username = "submitterusername" ,
1505
+ name = "" ,
1506
+
1507
+ primary_email = pretend .stub (
1508
+ email = "[email protected] " ,
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
+
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 <[email protected] >" ,
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
+
1606
+ primary_email = pretend .
stub (
email = "[email protected] " ,
verified = True ),
1607
+ )
1608
+ stub_submitter_user = pretend .stub (
1609
+ username = "submitterusername" ,
1610
+ name = "" ,
1611
+
1612
+ primary_email = pretend .stub (
1613
+ email = "[email protected] " ,
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
+
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 <[email protected] >" ,
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
+
1493
1705
class TestTwoFactorEmail :
1494
1706
@pytest .mark .parametrize (
1495
1707
("action" , "method" , "pretty_method" ),
0 commit comments