@@ -1610,10 +1610,12 @@ func Test_GetPullRequestComments(t *testing.T) {
16101610 tests := []struct {
16111611 name string
16121612 mockedClient * http.Client
1613+ gqlHTTPClient * http.Client
16131614 requestArgs map [string ]interface {}
16141615 expectError bool
16151616 expectedComments []* github.PullRequestComment
16161617 expectedErrMsg string
1618+ lockdownEnabled bool
16171619 }{
16181620 {
16191621 name : "successful comments fetch" ,
@@ -1652,13 +1654,57 @@ func Test_GetPullRequestComments(t *testing.T) {
16521654 expectError : true ,
16531655 expectedErrMsg : "failed to get pull request review comments" ,
16541656 },
1657+ {
1658+ name : "lockdown enabled filters review comments without push access" ,
1659+ mockedClient : mock .NewMockedHTTPClient (
1660+ mock .WithRequestMatch (
1661+ mock .GetReposPullsCommentsByOwnerByRepoByPullNumber ,
1662+ []* github.PullRequestComment {
1663+ {
1664+ ID : github .Ptr (int64 (2010 )),
1665+ Body : github .Ptr ("Maintainer review comment" ),
1666+ User : & github.User {Login : github .Ptr ("maintainer" )},
1667+ },
1668+ {
1669+ ID : github .Ptr (int64 (2011 )),
1670+ Body : github .Ptr ("External review comment" ),
1671+ User : & github.User {Login : github .Ptr ("testuser" )},
1672+ },
1673+ },
1674+ ),
1675+ ),
1676+ gqlHTTPClient : newRepoAccessHTTPClient (),
1677+ requestArgs : map [string ]interface {}{
1678+ "method" : "get_review_comments" ,
1679+ "owner" : "owner" ,
1680+ "repo" : "repo" ,
1681+ "pullNumber" : float64 (42 ),
1682+ },
1683+ expectError : false ,
1684+ expectedComments : []* github.PullRequestComment {
1685+ {
1686+ ID : github .Ptr (int64 (2010 )),
1687+ Body : github .Ptr ("Maintainer review comment" ),
1688+ User : & github.User {Login : github .Ptr ("maintainer" )},
1689+ },
1690+ },
1691+ lockdownEnabled : true ,
1692+ },
16551693 }
16561694
16571695 for _ , tc := range tests {
16581696 t .Run (tc .name , func (t * testing.T ) {
16591697 // Setup client with mock
16601698 client := github .NewClient (tc .mockedClient )
1661- _ , handler := PullRequestRead (stubGetClientFn (client ), stubRepoAccessCache (githubv4 .NewClient (nil ), 5 * time .Minute ), translations .NullTranslationHelper , stubFeatureFlags (map [string ]bool {"lockdown-mode" : false }))
1699+ var gqlClient * githubv4.Client
1700+ if tc .gqlHTTPClient != nil {
1701+ gqlClient = githubv4 .NewClient (tc .gqlHTTPClient )
1702+ } else {
1703+ gqlClient = githubv4 .NewClient (nil )
1704+ }
1705+ cache := stubRepoAccessCache (gqlClient , 5 * time .Minute )
1706+ flags := stubFeatureFlags (map [string ]bool {"lockdown-mode" : tc .lockdownEnabled })
1707+ _ , handler := PullRequestRead (stubGetClientFn (client ), cache , translations .NullTranslationHelper , flags )
16621708
16631709 // Create call request
16641710 request := createMCPRequest (tc .requestArgs )
@@ -1687,11 +1733,13 @@ func Test_GetPullRequestComments(t *testing.T) {
16871733 require .NoError (t , err )
16881734 assert .Len (t , returnedComments , len (tc .expectedComments ))
16891735 for i , comment := range returnedComments {
1690- assert .Equal (t , * tc .expectedComments [i ].ID , * comment .ID )
1691- assert .Equal (t , * tc .expectedComments [i ].Body , * comment .Body )
1692- assert .Equal (t , * tc .expectedComments [i ].User .Login , * comment .User .Login )
1693- assert .Equal (t , * tc .expectedComments [i ].Path , * comment .Path )
1694- assert .Equal (t , * tc .expectedComments [i ].HTMLURL , * comment .HTMLURL )
1736+ require .NotNil (t , tc .expectedComments [i ].User )
1737+ require .NotNil (t , comment .User )
1738+ assert .Equal (t , tc .expectedComments [i ].GetID (), comment .GetID ())
1739+ assert .Equal (t , tc .expectedComments [i ].GetBody (), comment .GetBody ())
1740+ assert .Equal (t , tc .expectedComments [i ].GetUser ().GetLogin (), comment .GetUser ().GetLogin ())
1741+ assert .Equal (t , tc .expectedComments [i ].GetPath (), comment .GetPath ())
1742+ assert .Equal (t , tc .expectedComments [i ].GetHTMLURL (), comment .GetHTMLURL ())
16951743 }
16961744 })
16971745 }
@@ -1740,10 +1788,12 @@ func Test_GetPullRequestReviews(t *testing.T) {
17401788 tests := []struct {
17411789 name string
17421790 mockedClient * http.Client
1791+ gqlHTTPClient * http.Client
17431792 requestArgs map [string ]interface {}
17441793 expectError bool
17451794 expectedReviews []* github.PullRequestReview
17461795 expectedErrMsg string
1796+ lockdownEnabled bool
17471797 }{
17481798 {
17491799 name : "successful reviews fetch" ,
@@ -1782,13 +1832,60 @@ func Test_GetPullRequestReviews(t *testing.T) {
17821832 expectError : true ,
17831833 expectedErrMsg : "failed to get pull request reviews" ,
17841834 },
1835+ {
1836+ name : "lockdown enabled filters reviews without push access" ,
1837+ mockedClient : mock .NewMockedHTTPClient (
1838+ mock .WithRequestMatch (
1839+ mock .GetReposPullsReviewsByOwnerByRepoByPullNumber ,
1840+ []* github.PullRequestReview {
1841+ {
1842+ ID : github .Ptr (int64 (2030 )),
1843+ State : github .Ptr ("APPROVED" ),
1844+ Body : github .Ptr ("Maintainer review" ),
1845+ User : & github.User {Login : github .Ptr ("maintainer" )},
1846+ },
1847+ {
1848+ ID : github .Ptr (int64 (2031 )),
1849+ State : github .Ptr ("COMMENTED" ),
1850+ Body : github .Ptr ("External reviewer" ),
1851+ User : & github.User {Login : github .Ptr ("testuser" )},
1852+ },
1853+ },
1854+ ),
1855+ ),
1856+ gqlHTTPClient : newRepoAccessHTTPClient (),
1857+ requestArgs : map [string ]interface {}{
1858+ "method" : "get_reviews" ,
1859+ "owner" : "owner" ,
1860+ "repo" : "repo" ,
1861+ "pullNumber" : float64 (42 ),
1862+ },
1863+ expectError : false ,
1864+ expectedReviews : []* github.PullRequestReview {
1865+ {
1866+ ID : github .Ptr (int64 (2030 )),
1867+ State : github .Ptr ("APPROVED" ),
1868+ Body : github .Ptr ("Maintainer review" ),
1869+ User : & github.User {Login : github .Ptr ("maintainer" )},
1870+ },
1871+ },
1872+ lockdownEnabled : true ,
1873+ },
17851874 }
17861875
17871876 for _ , tc := range tests {
17881877 t .Run (tc .name , func (t * testing.T ) {
17891878 // Setup client with mock
17901879 client := github .NewClient (tc .mockedClient )
1791- _ , handler := PullRequestRead (stubGetClientFn (client ), stubRepoAccessCache (githubv4 .NewClient (nil ), 5 * time .Minute ), translations .NullTranslationHelper , stubFeatureFlags (map [string ]bool {"lockdown-mode" : false }))
1880+ var gqlClient * githubv4.Client
1881+ if tc .gqlHTTPClient != nil {
1882+ gqlClient = githubv4 .NewClient (tc .gqlHTTPClient )
1883+ } else {
1884+ gqlClient = githubv4 .NewClient (nil )
1885+ }
1886+ cache := stubRepoAccessCache (gqlClient , 5 * time .Minute )
1887+ flags := stubFeatureFlags (map [string ]bool {"lockdown-mode" : tc .lockdownEnabled })
1888+ _ , handler := PullRequestRead (stubGetClientFn (client ), cache , translations .NullTranslationHelper , flags )
17921889
17931890 // Create call request
17941891 request := createMCPRequest (tc .requestArgs )
@@ -1817,11 +1914,13 @@ func Test_GetPullRequestReviews(t *testing.T) {
18171914 require .NoError (t , err )
18181915 assert .Len (t , returnedReviews , len (tc .expectedReviews ))
18191916 for i , review := range returnedReviews {
1820- assert .Equal (t , * tc .expectedReviews [i ].ID , * review .ID )
1821- assert .Equal (t , * tc .expectedReviews [i ].State , * review .State )
1822- assert .Equal (t , * tc .expectedReviews [i ].Body , * review .Body )
1823- assert .Equal (t , * tc .expectedReviews [i ].User .Login , * review .User .Login )
1824- assert .Equal (t , * tc .expectedReviews [i ].HTMLURL , * review .HTMLURL )
1917+ require .NotNil (t , tc .expectedReviews [i ].User )
1918+ require .NotNil (t , review .User )
1919+ assert .Equal (t , tc .expectedReviews [i ].GetID (), review .GetID ())
1920+ assert .Equal (t , tc .expectedReviews [i ].GetState (), review .GetState ())
1921+ assert .Equal (t , tc .expectedReviews [i ].GetBody (), review .GetBody ())
1922+ assert .Equal (t , tc .expectedReviews [i ].GetUser ().GetLogin (), review .GetUser ().GetLogin ())
1923+ assert .Equal (t , tc .expectedReviews [i ].GetHTMLURL (), review .GetHTMLURL ())
18251924 }
18261925 })
18271926 }
0 commit comments