[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
					
				|  | @ -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 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue