Skip to content

Commit 83f9359

Browse files
6543sapk
authored andcommitted
[BugFix] [API] ​/repos​/issues​/search (#9698)
* fix * fix options * add TEST Co-authored-by: Antoine GIRARD <[email protected]>
1 parent 86464de commit 83f9359

File tree

2 files changed

+61
-12
lines changed

2 files changed

+61
-12
lines changed

integrations/api_issue_test.go

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package integrations
77
import (
88
"fmt"
99
"net/http"
10+
"net/url"
1011
"testing"
1112

1213
"code.gitea.io/gitea/models"
@@ -120,3 +121,47 @@ func TestAPIEditIssue(t *testing.T) {
120121
assert.Equal(t, body, issueAfter.Content)
121122
assert.Equal(t, title, issueAfter.Title)
122123
}
124+
125+
func TestAPISearchIssue(t *testing.T) {
126+
defer prepareTestEnv(t)()
127+
128+
session := loginUser(t, "user2")
129+
token := getTokenForLoggedInUser(t, session)
130+
131+
link, _ := url.Parse("/api/v1/repos/issues/search")
132+
req := NewRequest(t, "GET", link.String())
133+
resp := session.MakeRequest(t, req, http.StatusOK)
134+
var apiIssues []*api.Issue
135+
DecodeJSON(t, resp, &apiIssues)
136+
137+
assert.Len(t, apiIssues, 8)
138+
139+
query := url.Values{}
140+
query.Add("token", token)
141+
link.RawQuery = query.Encode()
142+
req = NewRequest(t, "GET", link.String())
143+
resp = session.MakeRequest(t, req, http.StatusOK)
144+
DecodeJSON(t, resp, &apiIssues)
145+
assert.Len(t, apiIssues, 8)
146+
147+
query.Add("state", "closed")
148+
link.RawQuery = query.Encode()
149+
req = NewRequest(t, "GET", link.String())
150+
resp = session.MakeRequest(t, req, http.StatusOK)
151+
DecodeJSON(t, resp, &apiIssues)
152+
assert.Len(t, apiIssues, 2)
153+
154+
query.Set("state", "all")
155+
link.RawQuery = query.Encode()
156+
req = NewRequest(t, "GET", link.String())
157+
resp = session.MakeRequest(t, req, http.StatusOK)
158+
DecodeJSON(t, resp, &apiIssues)
159+
assert.Len(t, apiIssues, 10) //there are more but 10 is page item limit
160+
161+
query.Add("page", "2")
162+
link.RawQuery = query.Encode()
163+
req = NewRequest(t, "GET", link.String())
164+
resp = session.MakeRequest(t, req, http.StatusOK)
165+
DecodeJSON(t, resp, &apiIssues)
166+
assert.Len(t, apiIssues, 0)
167+
}

routers/api/v1/repo/issue.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -67,20 +67,24 @@ func SearchIssues(ctx *context.APIContext) {
6767

6868
// find repos user can access (for issue search)
6969
repoIDs := make([]int64, 0)
70+
opts := &models.SearchRepoOptions{
71+
PageSize: 15,
72+
Private: false,
73+
AllPublic: true,
74+
TopicOnly: false,
75+
Collaborate: util.OptionalBoolNone,
76+
UserIsAdmin: ctx.IsUserSiteAdmin(),
77+
OrderBy: models.SearchOrderByRecentUpdated,
78+
}
79+
if ctx.IsSigned {
80+
opts.Private = true
81+
opts.AllLimited = true
82+
opts.UserID = ctx.User.ID
83+
}
7084
issueCount := 0
7185
for page := 1; ; page++ {
72-
repos, count, err := models.SearchRepositoryByName(&models.SearchRepoOptions{
73-
Page: page,
74-
PageSize: 15,
75-
Private: true,
76-
Keyword: "",
77-
OwnerID: ctx.User.ID,
78-
TopicOnly: false,
79-
Collaborate: util.OptionalBoolNone,
80-
UserIsAdmin: ctx.IsUserSiteAdmin(),
81-
UserID: ctx.User.ID,
82-
OrderBy: models.SearchOrderByRecentUpdated,
83-
})
86+
opts.Page = page
87+
repos, count, err := models.SearchRepositoryByName(opts)
8488
if err != nil {
8589
ctx.Error(http.StatusInternalServerError, "SearchRepositoryByName", err)
8690
return

0 commit comments

Comments
 (0)