mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-04 06:24:11 +01:00 
			
		
		
		
	Backport #30817 by kemzeb We should be listing all repositories by default. Fixes #28483. Co-authored-by: Kemal Zebari <60799661+kemzeb@users.noreply.github.com>
This commit is contained in:
		
							parent
							
								
									ab2ef1ae49
								
							
						
					
					
						commit
						7ad2d039fd
					
				@ -6,10 +6,8 @@ package user
 | 
			
		||||
import (
 | 
			
		||||
	"net/http"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models/perm"
 | 
			
		||||
	access_model "code.gitea.io/gitea/models/perm/access"
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
	unit_model "code.gitea.io/gitea/models/unit"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/routers/api/v1/utils"
 | 
			
		||||
@ -44,7 +42,7 @@ func listUserRepos(ctx *context.APIContext, u *user_model.User, private bool) {
 | 
			
		||||
			ctx.Error(http.StatusInternalServerError, "GetUserRepoPermission", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if ctx.IsSigned && ctx.Doer.IsAdmin || permission.UnitAccessMode(unit_model.TypeCode) >= perm.AccessModeRead {
 | 
			
		||||
		if ctx.IsSigned && ctx.Doer.IsAdmin || permission.HasAnyUnitAccess() {
 | 
			
		||||
			apiRepos = append(apiRepos, convert.ToRepo(ctx, repos[i], permission))
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -13,6 +13,7 @@ import (
 | 
			
		||||
	"code.gitea.io/gitea/models/db"
 | 
			
		||||
	access_model "code.gitea.io/gitea/models/perm/access"
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
	unit_model "code.gitea.io/gitea/models/unit"
 | 
			
		||||
	"code.gitea.io/gitea/models/unittest"
 | 
			
		||||
	user_model "code.gitea.io/gitea/models/user"
 | 
			
		||||
	"code.gitea.io/gitea/modules/setting"
 | 
			
		||||
@ -326,6 +327,39 @@ func TestAPIOrgRepos(t *testing.T) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// See issue #28483. Tests to make sure we consider more than just code unit-enabled repositories.
 | 
			
		||||
func TestAPIOrgReposWithCodeUnitDisabled(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
	repo21 := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{Name: "repo21"})
 | 
			
		||||
	org3 := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: repo21.OwnerID})
 | 
			
		||||
 | 
			
		||||
	// Disable code repository unit.
 | 
			
		||||
	var units []unit_model.Type
 | 
			
		||||
	units = append(units, unit_model.TypeCode)
 | 
			
		||||
 | 
			
		||||
	if err := repo_service.UpdateRepositoryUnits(db.DefaultContext, repo21, nil, units); err != nil {
 | 
			
		||||
		assert.Fail(t, "should have been able to delete code repository unit; failed to %v", err)
 | 
			
		||||
	}
 | 
			
		||||
	assert.False(t, repo21.UnitEnabled(db.DefaultContext, unit_model.TypeCode))
 | 
			
		||||
 | 
			
		||||
	session := loginUser(t, "user2")
 | 
			
		||||
	token := getTokenForLoggedInUser(t, session, auth_model.AccessTokenScopeReadOrganization)
 | 
			
		||||
 | 
			
		||||
	req := NewRequestf(t, "GET", "/api/v1/orgs/%s/repos", org3.Name).
 | 
			
		||||
		AddTokenAuth(token)
 | 
			
		||||
 | 
			
		||||
	resp := MakeRequest(t, req, http.StatusOK)
 | 
			
		||||
	var apiRepos []*api.Repository
 | 
			
		||||
	DecodeJSON(t, resp, &apiRepos)
 | 
			
		||||
 | 
			
		||||
	var repoNames []string
 | 
			
		||||
	for _, r := range apiRepos {
 | 
			
		||||
		repoNames = append(repoNames, r.Name)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	assert.Contains(t, repoNames, repo21.Name)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func TestAPIGetRepoByIDUnauthorized(t *testing.T) {
 | 
			
		||||
	defer tests.PrepareTestEnv(t)()
 | 
			
		||||
	user := unittest.AssertExistsAndLoadBean(t, &user_model.User{ID: 4})
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user