[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 ( | ||||
| 	"fmt" | ||||
| 	"net/http" | ||||
| 	"net/url" | ||||
| 	"testing" | ||||
| 
 | ||||
| 	"code.gitea.io/gitea/models" | ||||
|  | @ -120,3 +121,47 @@ func TestAPIEditIssue(t *testing.T) { | |||
| 	assert.Equal(t, body, issueAfter.Content) | ||||
| 	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)
 | ||||
| 	repoIDs := make([]int64, 0) | ||||
| 	issueCount := 0 | ||||
| 	for page := 1; ; page++ { | ||||
| 		repos, count, err := models.SearchRepositoryByName(&models.SearchRepoOptions{ | ||||
| 			Page:        page, | ||||
| 	opts := &models.SearchRepoOptions{ | ||||
| 		PageSize:    15, | ||||
| 			Private:     true, | ||||
| 			Keyword:     "", | ||||
| 			OwnerID:     ctx.User.ID, | ||||
| 		Private:     false, | ||||
| 		AllPublic:   true, | ||||
| 		TopicOnly:   false, | ||||
| 		Collaborate: util.OptionalBoolNone, | ||||
| 		UserIsAdmin: ctx.IsUserSiteAdmin(), | ||||
| 			UserID:      ctx.User.ID, | ||||
| 		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 { | ||||
| 			ctx.Error(http.StatusInternalServerError, "SearchRepositoryByName", err) | ||||
| 			return | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue