[BugFix] [API] /repos/issues/search (#9698)
* fix * fix options * add TEST Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
This commit is contained in:
parent
86464de0c1
commit
83f9359a75
2 changed files with 61 additions and 12 deletions
|
@ -7,6 +7,7 @@ package integrations
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"net/url"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models"
|
"code.gitea.io/gitea/models"
|
||||||
|
@ -120,3 +121,47 @@ func TestAPIEditIssue(t *testing.T) {
|
||||||
assert.Equal(t, body, issueAfter.Content)
|
assert.Equal(t, body, issueAfter.Content)
|
||||||
assert.Equal(t, title, issueAfter.Title)
|
assert.Equal(t, title, issueAfter.Title)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAPISearchIssue(t *testing.T) {
|
||||||
|
defer prepareTestEnv(t)()
|
||||||
|
|
||||||
|
session := loginUser(t, "user2")
|
||||||
|
token := getTokenForLoggedInUser(t, session)
|
||||||
|
|
||||||
|
link, _ := url.Parse("/api/v1/repos/issues/search")
|
||||||
|
req := NewRequest(t, "GET", link.String())
|
||||||
|
resp := session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
var apiIssues []*api.Issue
|
||||||
|
DecodeJSON(t, resp, &apiIssues)
|
||||||
|
|
||||||
|
assert.Len(t, apiIssues, 8)
|
||||||
|
|
||||||
|
query := url.Values{}
|
||||||
|
query.Add("token", token)
|
||||||
|
link.RawQuery = query.Encode()
|
||||||
|
req = NewRequest(t, "GET", link.String())
|
||||||
|
resp = session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
DecodeJSON(t, resp, &apiIssues)
|
||||||
|
assert.Len(t, apiIssues, 8)
|
||||||
|
|
||||||
|
query.Add("state", "closed")
|
||||||
|
link.RawQuery = query.Encode()
|
||||||
|
req = NewRequest(t, "GET", link.String())
|
||||||
|
resp = session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
DecodeJSON(t, resp, &apiIssues)
|
||||||
|
assert.Len(t, apiIssues, 2)
|
||||||
|
|
||||||
|
query.Set("state", "all")
|
||||||
|
link.RawQuery = query.Encode()
|
||||||
|
req = NewRequest(t, "GET", link.String())
|
||||||
|
resp = session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
DecodeJSON(t, resp, &apiIssues)
|
||||||
|
assert.Len(t, apiIssues, 10) //there are more but 10 is page item limit
|
||||||
|
|
||||||
|
query.Add("page", "2")
|
||||||
|
link.RawQuery = query.Encode()
|
||||||
|
req = NewRequest(t, "GET", link.String())
|
||||||
|
resp = session.MakeRequest(t, req, http.StatusOK)
|
||||||
|
DecodeJSON(t, resp, &apiIssues)
|
||||||
|
assert.Len(t, apiIssues, 0)
|
||||||
|
}
|
||||||
|
|
|
@ -67,20 +67,24 @@ func SearchIssues(ctx *context.APIContext) {
|
||||||
|
|
||||||
// find repos user can access (for issue search)
|
// find repos user can access (for issue search)
|
||||||
repoIDs := make([]int64, 0)
|
repoIDs := make([]int64, 0)
|
||||||
issueCount := 0
|
opts := &models.SearchRepoOptions{
|
||||||
for page := 1; ; page++ {
|
|
||||||
repos, count, err := models.SearchRepositoryByName(&models.SearchRepoOptions{
|
|
||||||
Page: page,
|
|
||||||
PageSize: 15,
|
PageSize: 15,
|
||||||
Private: true,
|
Private: false,
|
||||||
Keyword: "",
|
AllPublic: true,
|
||||||
OwnerID: ctx.User.ID,
|
|
||||||
TopicOnly: false,
|
TopicOnly: false,
|
||||||
Collaborate: util.OptionalBoolNone,
|
Collaborate: util.OptionalBoolNone,
|
||||||
UserIsAdmin: ctx.IsUserSiteAdmin(),
|
UserIsAdmin: ctx.IsUserSiteAdmin(),
|
||||||
UserID: ctx.User.ID,
|
|
||||||
OrderBy: models.SearchOrderByRecentUpdated,
|
OrderBy: models.SearchOrderByRecentUpdated,
|
||||||
})
|
}
|
||||||
|
if ctx.IsSigned {
|
||||||
|
opts.Private = true
|
||||||
|
opts.AllLimited = true
|
||||||
|
opts.UserID = ctx.User.ID
|
||||||
|
}
|
||||||
|
issueCount := 0
|
||||||
|
for page := 1; ; page++ {
|
||||||
|
opts.Page = page
|
||||||
|
repos, count, err := models.SearchRepositoryByName(opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ctx.Error(http.StatusInternalServerError, "SearchRepositoryByName", err)
|
ctx.Error(http.StatusInternalServerError, "SearchRepositoryByName", err)
|
||||||
return
|
return
|
||||||
|
|
Reference in a new issue