diff --git a/integrations/links_test.go b/integrations/links_test.go index d40c9c24c..d1f99ca02 100644 --- a/integrations/links_test.go +++ b/integrations/links_test.go @@ -5,8 +5,11 @@ package integrations import ( + "fmt" "net/http" "testing" + + api "code.gitea.io/sdk/gitea" ) func TestLinksNoLogin(t *testing.T) { @@ -24,6 +27,8 @@ func TestLinksNoLogin(t *testing.T) { "/user/login", "/user/forgot_password", "/swagger", + // TODO: follow this page and test every link + "/assets/librejs/librejs.html", } for _, link := range links { @@ -31,3 +36,95 @@ func TestLinksNoLogin(t *testing.T) { MakeRequest(t, req, http.StatusOK) } } + +func testLinksAsUser(userName string, t *testing.T) { + var links = []string{ + "/explore/repos", + "/explore/repos?q=test&tab=", + "/explore/users", + "/explore/users?q=test&tab=", + "/explore/organizations", + "/explore/organizations?q=test&tab=", + "/", + "/user/forgot_password", + "/swagger", + "/issues", + "/issues?type=your_repositories&repo=0&sort=&state=open", + "/issues?type=assigned&repo=0&sort=&state=open", + "/issues?type=created_by&repo=0&sort=&state=open", + "/issues?type=your_repositories&repo=0&sort=&state=closed", + "/issues?type=assigned&repo=0&sort=&state=closed", + "/issues?type=created_by&repo=0&sort=&state=closed", + "/pulls", + "/pulls?type=your_repositories&repo=0&sort=&state=open", + "/pulls?type=assigned&repo=0&sort=&state=open", + "/pulls?type=created_by&repo=0&sort=&state=open", + "/pulls?type=your_repositories&repo=0&sort=&state=closed", + "/pulls?type=assigned&repo=0&sort=&state=closed", + "/pulls?type=created_by&repo=0&sort=&state=closed", + "/notifications", + "/repo/create", + "/repo/migrate", + "/org/create", + "/user2", + "/user2?tab=stars", + "/user2?tab=activity", + "/user/settings", + "/user/settings/avatar", + "/user/settings/password", + "/user/settings/email", + "/user/settings/keys", + "/user/settings/applications", + "/user/settings/two_factor", + "/user/settings/account_link", + "/user/settings/organization", + "/user/settings/delete", + } + + session := loginUser(t, userName) + for _, link := range links { + req := NewRequest(t, "GET", link) + session.MakeRequest(t, req, http.StatusOK) + } + + reqAPI := NewRequestf(t, "GET", "/api/v1/users/%s/repos", userName) + respAPI := MakeRequest(t, reqAPI, http.StatusOK) + + var apiRepos []api.Repository + DecodeJSON(t, respAPI, &apiRepos) + + var repoLinks = []string{ + "", + "/issues", + "/pulls", + "/commits/master", + "/graph", + "/settings", + "/settings/collaboration", + "/settings/branches", + "/settings/hooks", + // FIXME: below links should return 200 but 404 ?? + //"/settings/hooks/git", + //"/settings/hooks/git/pre-receive", + //"/settings/hooks/git/update", + //"/settings/hooks/git/post-receive", + "/settings/keys", + "/releases", + "/releases/new", + //"/wiki/_pages", + "/wiki/_new", + } + + for _, repo := range apiRepos { + for _, link := range repoLinks { + req := NewRequest(t, "GET", fmt.Sprintf("/%s/%s%s", userName, repo.Name, link)) + session.MakeRequest(t, req, http.StatusOK) + } + } +} + +func TestLinksLogin(t *testing.T) { + prepareTestEnv(t) + + testLinksAsUser("user2", t) +} diff --git a/models/action.go b/models/action.go index 43ed9cc1d..591b992ad 100644 --- a/models/action.go +++ b/models/action.go @@ -736,7 +736,7 @@ func GetFeeds(opts GetFeedsOptions) ([]*Action, error) { var userIDCond builder.Cond = builder.Eq{"user_id": opts.RequestedUser.ID} if opts.Collaborate { userIDCond = userIDCond.Or(builder.Expr( - `repo_id IN (SELECT repo_id FROM "access" WHERE access.user_id = ?)`, + "repo_id IN (SELECT repo_id FROM `access` WHERE access.user_id = ?)", opts.RequestedUser.ID)) } cond = cond.And(userIDCond)