@@ -1543,6 +1543,130 @@ func TestRepositoriesService_UpdateBranchProtection_Checks(t *testing.T) {
1543
1543
}
1544
1544
}
1545
1545
1546
+ func TestRepositoriesService_UpdateBranchProtection_StrictNoChecks (t * testing.T ) {
1547
+ client , mux , _ , teardown := setup ()
1548
+ defer teardown ()
1549
+
1550
+ input := & ProtectionRequest {
1551
+ RequiredStatusChecks : & RequiredStatusChecks {
1552
+ Strict : true ,
1553
+ Checks : []* RequiredStatusCheck {},
1554
+ },
1555
+ RequiredPullRequestReviews : & PullRequestReviewsEnforcementRequest {
1556
+ DismissStaleReviews : true ,
1557
+ DismissalRestrictionsRequest : & DismissalRestrictionsRequest {
1558
+ Users : & []string {"uu" },
1559
+ Teams : & []string {"tt" },
1560
+ },
1561
+ BypassPullRequestAllowancesRequest : & BypassPullRequestAllowancesRequest {
1562
+ Users : []string {"uuu" },
1563
+ Teams : []string {"ttt" },
1564
+ Apps : []string {"aaa" },
1565
+ },
1566
+ },
1567
+ Restrictions : & BranchRestrictionsRequest {
1568
+ Users : []string {"u" },
1569
+ Teams : []string {"t" },
1570
+ Apps : []string {"a" },
1571
+ },
1572
+ }
1573
+
1574
+ mux .HandleFunc ("/repos/o/r/branches/b/protection" , func (w http.ResponseWriter , r * http.Request ) {
1575
+ v := new (ProtectionRequest )
1576
+ json .NewDecoder (r .Body ).Decode (v )
1577
+
1578
+ testMethod (t , r , "PUT" )
1579
+ if ! cmp .Equal (v , input ) {
1580
+ t .Errorf ("Request body = %+v, want %+v" , v , input )
1581
+ }
1582
+
1583
+ // TODO: remove custom Accept header when this API fully launches
1584
+ testHeader (t , r , "Accept" , mediaTypeRequiredApprovingReviewsPreview )
1585
+ fmt .Fprintf (w , `{
1586
+ "required_status_checks":{
1587
+ "strict":true,
1588
+ "contexts":[],
1589
+ "checks": []
1590
+ },
1591
+ "required_pull_request_reviews":{
1592
+ "dismissal_restrictions":{
1593
+ "users":[{
1594
+ "id":3,
1595
+ "login":"uu"
1596
+ }],
1597
+ "teams":[{
1598
+ "id":4,
1599
+ "slug":"tt"
1600
+ }]
1601
+ },
1602
+ "dismiss_stale_reviews":true,
1603
+ "require_code_owner_reviews":true,
1604
+ "bypass_pull_request_allowances": {
1605
+ "users":[{"id":10,"login":"uuu"}],
1606
+ "teams":[{"id":20,"slug":"ttt"}],
1607
+ "apps":[{"id":30,"slug":"aaa"}]
1608
+ }
1609
+ },
1610
+ "restrictions":{
1611
+ "users":[{"id":1,"login":"u"}],
1612
+ "teams":[{"id":2,"slug":"t"}],
1613
+ "apps":[{"id":3,"slug":"a"}]
1614
+ }
1615
+ }` )
1616
+ })
1617
+
1618
+ ctx := context .Background ()
1619
+ protection , _ , err := client .Repositories .UpdateBranchProtection (ctx , "o" , "r" , "b" , input )
1620
+ if err != nil {
1621
+ t .Errorf ("Repositories.UpdateBranchProtection returned error: %v" , err )
1622
+ }
1623
+
1624
+ want := & Protection {
1625
+ RequiredStatusChecks : & RequiredStatusChecks {
1626
+ Strict : true ,
1627
+ Contexts : []string {},
1628
+ Checks : []* RequiredStatusCheck {},
1629
+ },
1630
+ RequiredPullRequestReviews : & PullRequestReviewsEnforcement {
1631
+ DismissStaleReviews : true ,
1632
+ DismissalRestrictions : & DismissalRestrictions {
1633
+ Users : []* User {
1634
+ {Login : String ("uu" ), ID : Int64 (3 )},
1635
+ },
1636
+ Teams : []* Team {
1637
+ {Slug : String ("tt" ), ID : Int64 (4 )},
1638
+ },
1639
+ },
1640
+ RequireCodeOwnerReviews : true ,
1641
+ BypassPullRequestAllowances : & BypassPullRequestAllowances {
1642
+ Users : []* User {
1643
+ {Login : String ("uuu" ), ID : Int64 (10 )},
1644
+ },
1645
+ Teams : []* Team {
1646
+ {Slug : String ("ttt" ), ID : Int64 (20 )},
1647
+ },
1648
+ Apps : []* App {
1649
+ {Slug : String ("aaa" ), ID : Int64 (30 )},
1650
+ },
1651
+ },
1652
+ },
1653
+ Restrictions : & BranchRestrictions {
1654
+ Users : []* User {
1655
+ {Login : String ("u" ), ID : Int64 (1 )},
1656
+ },
1657
+ Teams : []* Team {
1658
+ {Slug : String ("t" ), ID : Int64 (2 )},
1659
+ },
1660
+ Apps : []* App {
1661
+ {Slug : String ("a" ), ID : Int64 (3 )},
1662
+ },
1663
+ },
1664
+ }
1665
+ if ! cmp .Equal (protection , want ) {
1666
+ t .Errorf ("Repositories.UpdateBranchProtection returned %+v, want %+v" , protection , want )
1667
+ }
1668
+ }
1669
+
1546
1670
func TestRepositoriesService_RemoveBranchProtection (t * testing.T ) {
1547
1671
client , mux , _ , teardown := setup ()
1548
1672
defer teardown ()
0 commit comments