diff --git a/integrations/api_repo_test.go b/integrations/api_repo_test.go new file mode 100644 index 0000000000000..febdf31ef2e8b --- /dev/null +++ b/integrations/api_repo_test.go @@ -0,0 +1,23 @@ +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package integrations + +import ( + "net/http" + "testing" + + "code.gitea.io/gitea/models" + + "github.com/stretchr/testify/assert" +) + +func TestAPIUserReposNotLogin(t *testing.T) { + assert.NoError(t, models.LoadFixtures()) + + req, err := http.NewRequest("GET", "/api/v1/users/user2/repos", nil) + assert.NoError(t, err) + resp := MakeRequest(req) + assert.EqualValues(t, http.StatusOK, resp.HeaderCode) +} diff --git a/routers/api/v1/user/repo.go b/routers/api/v1/user/repo.go index 8b7ee92c62bc0..cc08094fc5363 100644 --- a/routers/api/v1/user/repo.go +++ b/routers/api/v1/user/repo.go @@ -9,15 +9,18 @@ import ( // listUserRepos - List the repositories owned by the given user. func listUserRepos(ctx *context.APIContext, u *models.User) { userID := u.ID - showPrivateRepos := (ctx.User.ID == userID || ctx.User.IsAdmin) && ctx.IsSigned + showPrivateRepos := ctx.IsSigned && (ctx.User.ID == userID || ctx.User.IsAdmin) ownRepos, err := models.GetUserRepositories(userID, showPrivateRepos, 1, u.NumRepos, "") if err != nil { ctx.Error(500, "GetUserRepositories", err) return } - accessibleRepos, err := getAccessibleRepos(ctx) - if err != nil { - ctx.Error(500, "GetAccessibleRepos", err) + var accessibleRepos []*api.Repository + if ctx.User != nil { + accessibleRepos, err = getAccessibleRepos(ctx) + if err != nil { + ctx.Error(500, "GetAccessibleRepos", err) + } } apiRepos := make([]*api.Repository, len(ownRepos)+len(accessibleRepos)) // Set owned repositories.