Skip to content

Commit f40df27

Browse files
committed
Tests
1 parent 447c902 commit f40df27

File tree

2 files changed

+164
-17
lines changed

2 files changed

+164
-17
lines changed

pkg/github/issues_test.go

Lines changed: 53 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1864,10 +1864,12 @@ func Test_GetIssueComments(t *testing.T) {
18641864
tests := []struct {
18651865
name string
18661866
mockedClient *http.Client
1867+
gqlHTTPClient *http.Client
18671868
requestArgs map[string]interface{}
18681869
expectError bool
18691870
expectedComments []*github.IssueComment
18701871
expectedErrMsg string
1872+
lockdownEnabled bool
18711873
}{
18721874
{
18731875
name: "successful comments retrieval",
@@ -1927,14 +1929,57 @@ func Test_GetIssueComments(t *testing.T) {
19271929
expectError: true,
19281930
expectedErrMsg: "failed to get issue comments",
19291931
},
1932+
{
1933+
name: "lockdown enabled filters comments without push access",
1934+
mockedClient: mock.NewMockedHTTPClient(
1935+
mock.WithRequestMatch(
1936+
mock.GetReposIssuesCommentsByOwnerByRepoByIssueNumber,
1937+
[]*github.IssueComment{
1938+
{
1939+
ID: github.Ptr(int64(789)),
1940+
Body: github.Ptr("Maintainer comment"),
1941+
User: &github.User{Login: github.Ptr("maintainer")},
1942+
},
1943+
{
1944+
ID: github.Ptr(int64(790)),
1945+
Body: github.Ptr("External user comment"),
1946+
User: &github.User{Login: github.Ptr("testuser")},
1947+
},
1948+
},
1949+
),
1950+
),
1951+
gqlHTTPClient: newRepoAccessHTTPClient(),
1952+
requestArgs: map[string]interface{}{
1953+
"method": "get_comments",
1954+
"owner": "owner",
1955+
"repo": "repo",
1956+
"issue_number": float64(42),
1957+
},
1958+
expectError: false,
1959+
expectedComments: []*github.IssueComment{
1960+
{
1961+
ID: github.Ptr(int64(789)),
1962+
Body: github.Ptr("Maintainer comment"),
1963+
User: &github.User{Login: github.Ptr("maintainer")},
1964+
},
1965+
},
1966+
lockdownEnabled: true,
1967+
},
19301968
}
19311969

19321970
for _, tc := range tests {
19331971
t.Run(tc.name, func(t *testing.T) {
19341972
// Setup client with mock
19351973
client := github.NewClient(tc.mockedClient)
1936-
gqlClient := githubv4.NewClient(nil)
1937-
_, handler := IssueRead(stubGetClientFn(client), stubGetGQLClientFn(gqlClient), stubRepoAccessCache(gqlClient, 15*time.Minute), translations.NullTranslationHelper, stubFeatureFlags(map[string]bool{"lockdown-mode": false}))
1974+
var gqlClient *githubv4.Client
1975+
if tc.gqlHTTPClient != nil {
1976+
gqlClient = githubv4.NewClient(tc.gqlHTTPClient)
1977+
} else {
1978+
gqlClient = githubv4.NewClient(nil)
1979+
}
1980+
cache := stubRepoAccessCache(gqlClient, 15*time.Minute)
1981+
flags := stubFeatureFlags(map[string]bool{"lockdown-mode": tc.lockdownEnabled})
1982+
_, handler := IssueRead(stubGetClientFn(client), stubGetGQLClientFn(gqlClient), cache, translations.NullTranslationHelper, flags)
19381983

19391984
// Create call request
19401985
request := createMCPRequest(tc.requestArgs)
@@ -1957,9 +2002,12 @@ func Test_GetIssueComments(t *testing.T) {
19572002
err = json.Unmarshal([]byte(textContent.Text), &returnedComments)
19582003
require.NoError(t, err)
19592004
assert.Equal(t, len(tc.expectedComments), len(returnedComments))
1960-
if len(returnedComments) > 0 {
1961-
assert.Equal(t, *tc.expectedComments[0].Body, *returnedComments[0].Body)
1962-
assert.Equal(t, *tc.expectedComments[0].User.Login, *returnedComments[0].User.Login)
2005+
for i := range tc.expectedComments {
2006+
require.NotNil(t, tc.expectedComments[i].User)
2007+
require.NotNil(t, returnedComments[i].User)
2008+
assert.Equal(t, tc.expectedComments[i].GetID(), returnedComments[i].GetID())
2009+
assert.Equal(t, tc.expectedComments[i].GetBody(), returnedComments[i].GetBody())
2010+
assert.Equal(t, tc.expectedComments[i].GetUser().GetLogin(), returnedComments[i].GetUser().GetLogin())
19632011
}
19642012
})
19652013
}

pkg/github/pullrequests_test.go

Lines changed: 111 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)