From 61b08b5c01eef096e169d6070cb80c3c9fd55875 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Sat, 29 Apr 2017 12:33:25 +0800 Subject: [PATCH] bug fixed for API to get user's repos (#1622) * bug fixed for API to get user's repos * add tests and fix another place * test user2 since user1 has no repos --- integrations/api_repo_test.go | 23 +++++++++++++++++++++++ routers/api/v1/user/repo.go | 11 +++++++---- 2 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 integrations/api_repo_test.go diff --git a/integrations/api_repo_test.go b/integrations/api_repo_test.go new file mode 100644 index 0000000000..febdf31ef2 --- /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 8b7ee92c62..cc08094fc5 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.