Files
Atay-Makhzan/tests/integration/links_test.go
T

211 lines
5.6 KiB
Go
Raw Normal View History

2017-08-17 23:52:28 +08:00
// Copyright 2017 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT
2017-08-17 23:52:28 +08:00
2022-09-02 15:18:23 -04:00
package integration
2017-08-17 23:52:28 +08:00
import (
"fmt"
2017-08-17 23:52:28 +08:00
"net/http"
"path"
2017-08-17 23:52:28 +08:00
"testing"
"code.gitea.io/gitea/modules/setting"
2019-05-11 18:21:34 +08:00
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/test"
2022-09-02 15:18:23 -04:00
"code.gitea.io/gitea/tests"
2017-10-29 19:04:25 -07:00
"github.com/stretchr/testify/assert"
2017-08-17 23:52:28 +08:00
)
func TestLinksNoLogin(t *testing.T) {
2022-09-02 15:18:23 -04:00
defer tests.PrepareTestEnv(t)()
2017-08-17 23:52:28 +08:00
2022-01-20 18:46:10 +01:00
links := []string{
2017-08-17 23:52:28 +08:00
"/explore/repos",
"/explore/repos?q=test",
2017-08-17 23:52:28 +08:00
"/explore/users",
"/explore/users?q=test",
2017-08-17 23:52:28 +08:00
"/explore/organizations",
"/explore/organizations?q=test",
2017-08-17 23:52:28 +08:00
"/",
"/user/sign_up",
"/user/login",
"/user/forgot_password",
2017-10-21 16:05:50 +02:00
"/api/swagger",
2020-08-17 04:07:38 +01:00
"/user2/repo1",
"/user2/repo1/",
2020-08-17 04:07:38 +01:00
"/user2/repo1/projects",
"/user2/repo1/projects/1",
"/user2/repo1/releases/tag/delete-tag", // It's the only one existing record on release.yml which has is_tag: true
2021-05-30 18:25:11 +08:00
"/assets/img/404.png",
"/assets/img/500.png",
"/.well-known/security.txt",
2017-08-17 23:52:28 +08:00
}
for _, link := range links {
req := NewRequest(t, "GET", link)
MakeRequest(t, req, http.StatusOK)
}
}
2017-10-29 19:04:25 -07:00
func TestRedirectsNoLogin(t *testing.T) {
2022-09-02 15:18:23 -04:00
defer tests.PrepareTestEnv(t)()
2017-10-29 19:04:25 -07:00
2022-01-20 18:46:10 +01:00
redirects := map[string]string{
2017-12-06 17:09:02 -08:00
"/user2/repo1/commits/master": "/user2/repo1/commits/branch/master",
"/user2/repo1/src/master": "/user2/repo1/src/branch/master",
"/user2/repo1/src/master/file.txt": "/user2/repo1/src/branch/master/file.txt",
"/user2/repo1/src/master/directory/file.txt": "/user2/repo1/src/branch/master/directory/file.txt",
"/user/avatar/Ghost/-1": "/assets/img/avatar_default.png",
2021-01-26 23:36:53 +08:00
"/api/v1/swagger": "/api/swagger",
2017-10-29 19:04:25 -07:00
}
for link, redirectLink := range redirects {
req := NewRequest(t, "GET", link)
resp := MakeRequest(t, req, http.StatusSeeOther)
assert.EqualValues(t, path.Join(setting.AppSubURL, redirectLink), test.RedirectURL(resp))
2017-10-29 19:04:25 -07:00
}
}
2020-08-17 04:07:38 +01:00
func TestNoLoginNotExist(t *testing.T) {
2022-09-02 15:18:23 -04:00
defer tests.PrepareTestEnv(t)()
2020-08-17 04:07:38 +01:00
2022-01-20 18:46:10 +01:00
links := []string{
2020-08-17 04:07:38 +01:00
"/user5/repo4/projects",
"/user5/repo4/projects/3",
}
for _, link := range links {
req := NewRequest(t, "GET", link)
MakeRequest(t, req, http.StatusNotFound)
}
}
func testLinksAsUser(userName string, t *testing.T) {
2022-01-20 18:46:10 +01:00
links := []string{
"/explore/repos",
"/explore/repos?q=test",
"/explore/users",
"/explore/users?q=test",
"/explore/organizations",
"/explore/organizations?q=test",
"/",
"/user/forgot_password",
2017-10-21 16:05:50 +02:00
"/api/swagger",
"/issues",
2019-12-02 04:50:36 +01:00
"/issues?type=your_repositories&repos=[0]&sort=&state=open",
"/issues?type=assigned&repos=[0]&sort=&state=open",
"/issues?type=your_repositories&repos=[0]&sort=&state=closed",
"/issues?type=assigned&repos=[]&sort=&state=closed",
"/issues?type=assigned&sort=&state=open",
"/issues?type=created_by&repos=[1,2]&sort=&state=closed",
"/issues?type=created_by&repos=[1,2]&sort=&state=open",
"/pulls",
2019-12-02 04:50:36 +01:00
"/pulls?type=your_repositories&repos=[2]&sort=&state=open",
"/pulls?type=assigned&repos=[]&sort=&state=open",
"/pulls?type=created_by&repos=[0]&sort=&state=open",
"/pulls?type=your_repositories&repos=[0]&sort=&state=closed",
"/pulls?type=assigned&repos=[0]&sort=&state=closed",
"/pulls?type=created_by&repos=[0]&sort=&state=closed",
2019-12-15 08:20:08 -06:00
"/milestones",
"/milestones?sort=mostcomplete&state=closed",
"/milestones?type=your_repositories&sort=mostcomplete&state=closed",
"/milestones?sort=&repos=[1]&state=closed",
"/milestones?sort=&repos=[1]&state=open",
"/milestones?repos=[0]&sort=mostissues&state=open",
"/notifications",
"/repo/create",
"/repo/migrate",
"/org/create",
"/user2",
"/user2?tab=stars",
"/user2?tab=activity",
"/user/settings",
2018-05-15 12:07:32 +02:00
"/user/settings/account",
"/user/settings/security",
"/user/settings/security/two_factor/enroll",
"/user/settings/keys",
"/user/settings/organization",
2018-05-15 12:07:32 +02:00
"/user/settings/repos",
}
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)
2022-01-20 18:46:10 +01:00
repoLinks := []string{
"",
"/issues",
"/pulls",
2017-10-29 19:04:25 -07:00
"/commits/branch/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",
2021-11-16 18:18:25 +00:00
"/wiki/?action=_new",
"/activity",
}
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) {
2022-09-02 15:18:23 -04:00
defer tests.PrepareTestEnv(t)()
testLinksAsUser("user2", t)
}
func TestRepoLinks(t *testing.T) {
defer tests.PrepareTestEnv(t)()
// repo1 has enabled almost features, so we can test most links
repoLink := "/user2/repo1"
links := []string{
"/actions",
"/packages",
"/projects",
}
// anonymous user
for _, link := range links {
req := NewRequest(t, "GET", repoLink+link)
MakeRequest(t, req, http.StatusOK)
}
// admin/owner user
session := loginUser(t, "user1")
for _, link := range links {
req := NewRequest(t, "GET", repoLink+link)
session.MakeRequest(t, req, http.StatusOK)
}
// non-admin non-owner user
session = loginUser(t, "user2")
for _, link := range links {
req := NewRequest(t, "GET", repoLink+link)
session.MakeRequest(t, req, http.StatusOK)
}
}