2017-08-17 18:52:28 +03:00
// Copyright 2017 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2017-08-17 18:52:28 +03:00
2022-09-02 22:18:23 +03:00
package integration
2017-08-17 18:52:28 +03:00
import (
2017-08-23 12:53:35 +03:00
"fmt"
2017-08-17 18:52:28 +03:00
"net/http"
2017-11-03 01:01:22 +03:00
"path"
2017-08-17 18:52:28 +03:00
"testing"
2017-08-23 12:53:35 +03:00
2017-11-03 01:01:22 +03:00
"code.gitea.io/gitea/modules/setting"
2019-05-11 13:21:34 +03:00
api "code.gitea.io/gitea/modules/structs"
2017-12-16 00:11:02 +03:00
"code.gitea.io/gitea/modules/test"
2022-09-02 22:18:23 +03:00
"code.gitea.io/gitea/tests"
2017-10-30 05:04:25 +03:00
"github.com/stretchr/testify/assert"
2017-08-17 18:52:28 +03:00
)
func TestLinksNoLogin ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2017-08-17 18:52:28 +03:00
2022-01-20 20:46:10 +03:00
links := [ ] string {
2017-08-17 18:52:28 +03:00
"/explore/repos" ,
2022-06-15 18:05:32 +03:00
"/explore/repos?q=test" ,
2017-08-17 18:52:28 +03:00
"/explore/users" ,
2022-06-15 18:05:32 +03:00
"/explore/users?q=test" ,
2017-08-17 18:52:28 +03:00
"/explore/organizations" ,
2022-06-15 18:05:32 +03:00
"/explore/organizations?q=test" ,
2017-08-17 18:52:28 +03:00
"/" ,
"/user/sign_up" ,
"/user/login" ,
"/user/forgot_password" ,
2017-10-21 17:05:50 +03:00
"/api/swagger" ,
2020-08-17 06:07:38 +03:00
"/user2/repo1" ,
2021-12-24 19:50:49 +03:00
"/user2/repo1/" ,
2020-08-17 06:07:38 +03:00
"/user2/repo1/projects" ,
"/user2/repo1/projects/1" ,
2021-05-30 13:25:11 +03:00
"/assets/img/404.png" ,
"/assets/img/500.png" ,
2017-08-17 18:52:28 +03:00
}
for _ , link := range links {
req := NewRequest ( t , "GET" , link )
MakeRequest ( t , req , http . StatusOK )
}
}
2017-08-23 12:53:35 +03:00
2017-10-30 05:04:25 +03:00
func TestRedirectsNoLogin ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2017-10-30 05:04:25 +03:00
2022-01-20 20:46:10 +03:00
redirects := map [ string ] string {
2017-12-07 04:09:02 +03: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" ,
2021-04-28 15:35:06 +03:00
"/user/avatar/Ghost/-1" : "/assets/img/avatar_default.png" ,
2021-01-26 18:36:53 +03:00
"/api/v1/swagger" : "/api/swagger" ,
2017-10-30 05:04:25 +03:00
}
for link , redirectLink := range redirects {
req := NewRequest ( t , "GET" , link )
2022-03-23 07:54:07 +03:00
resp := MakeRequest ( t , req , http . StatusSeeOther )
2017-12-16 00:11:02 +03:00
assert . EqualValues ( t , path . Join ( setting . AppSubURL , redirectLink ) , test . RedirectURL ( resp ) )
2017-10-30 05:04:25 +03:00
}
}
2020-08-17 06:07:38 +03:00
func TestNoLoginNotExist ( t * testing . T ) {
2022-09-02 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2020-08-17 06:07:38 +03:00
2022-01-20 20:46:10 +03:00
links := [ ] string {
2020-08-17 06:07:38 +03:00
"/user5/repo4/projects" ,
"/user5/repo4/projects/3" ,
}
for _ , link := range links {
req := NewRequest ( t , "GET" , link )
MakeRequest ( t , req , http . StatusNotFound )
}
}
2017-08-23 12:53:35 +03:00
func testLinksAsUser ( userName string , t * testing . T ) {
2022-01-20 20:46:10 +03:00
links := [ ] string {
2017-08-23 12:53:35 +03:00
"/explore/repos" ,
2022-06-15 18:05:32 +03:00
"/explore/repos?q=test" ,
2017-08-23 12:53:35 +03:00
"/explore/users" ,
2022-06-15 18:05:32 +03:00
"/explore/users?q=test" ,
2017-08-23 12:53:35 +03:00
"/explore/organizations" ,
2022-06-15 18:05:32 +03:00
"/explore/organizations?q=test" ,
2017-08-23 12:53:35 +03:00
"/" ,
"/user/forgot_password" ,
2017-10-21 17:05:50 +03:00
"/api/swagger" ,
2017-08-23 12:53:35 +03:00
"/issues" ,
2019-12-02 06:50:36 +03: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" ,
2017-08-23 12:53:35 +03:00
"/pulls" ,
2019-12-02 06:50:36 +03: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 17:20:08 +03: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" ,
2017-08-23 12:53:35 +03:00
"/notifications" ,
"/repo/create" ,
"/repo/migrate" ,
"/org/create" ,
"/user2" ,
"/user2?tab=stars" ,
"/user2?tab=activity" ,
"/user/settings" ,
2018-05-15 13:07:32 +03:00
"/user/settings/account" ,
2017-10-16 12:14:12 +03:00
"/user/settings/security" ,
"/user/settings/security/two_factor/enroll" ,
2017-08-23 12:53:35 +03:00
"/user/settings/keys" ,
"/user/settings/organization" ,
2018-05-15 13:07:32 +03:00
"/user/settings/repos" ,
2017-08-23 12:53:35 +03:00
}
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 )
2019-05-28 18:45:54 +03:00
var apiRepos [ ] * api . Repository
2017-08-23 12:53:35 +03:00
DecodeJSON ( t , respAPI , & apiRepos )
2022-01-20 20:46:10 +03:00
repoLinks := [ ] string {
2017-08-23 12:53:35 +03:00
"" ,
"/issues" ,
"/pulls" ,
2017-10-30 05:04:25 +03:00
"/commits/branch/master" ,
2017-08-23 12:53:35 +03:00
"/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 21:18:25 +03:00
"/wiki/?action=_new" ,
2017-08-23 12:53:35 +03:00
}
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 22:18:23 +03:00
defer tests . PrepareTestEnv ( t ) ( )
2017-08-23 12:53:35 +03:00
testLinksAsUser ( "user2" , t )
}