gitech

Форк
0
/
url_test.go 
76 строк · 1.7 Кб
1
// Copyright 2023 The Gitea Authors. All rights reserved.
2
// SPDX-License-Identifier: MIT
3

4
package httplib
5

6
import (
7
	"testing"
8

9
	"code.gitea.io/gitea/modules/setting"
10
	"code.gitea.io/gitea/modules/test"
11

12
	"github.com/stretchr/testify/assert"
13
)
14

15
func TestIsRelativeURL(t *testing.T) {
16
	defer test.MockVariableValue(&setting.AppURL, "http://localhost:3000/sub/")()
17
	defer test.MockVariableValue(&setting.AppSubURL, "/sub")()
18
	rel := []string{
19
		"",
20
		"foo",
21
		"/",
22
		"/foo?k=%20#abc",
23
	}
24
	for _, s := range rel {
25
		assert.True(t, IsRelativeURL(s), "rel = %q", s)
26
	}
27
	abs := []string{
28
		"//",
29
		"\\\\",
30
		"/\\",
31
		"\\/",
32
		"mailto:a@b.com",
33
		"https://test.com",
34
	}
35
	for _, s := range abs {
36
		assert.False(t, IsRelativeURL(s), "abs = %q", s)
37
	}
38
}
39

40
func TestIsCurrentGiteaSiteURL(t *testing.T) {
41
	defer test.MockVariableValue(&setting.AppURL, "http://localhost:3000/sub/")()
42
	defer test.MockVariableValue(&setting.AppSubURL, "/sub")()
43
	good := []string{
44
		"?key=val",
45
		"/sub",
46
		"/sub/",
47
		"/sub/foo",
48
		"/sub/foo/",
49
		"http://localhost:3000/sub?key=val",
50
		"http://localhost:3000/sub/",
51
	}
52
	for _, s := range good {
53
		assert.True(t, IsCurrentGiteaSiteURL(s), "good = %q", s)
54
	}
55
	bad := []string{
56
		".",
57
		"foo",
58
		"/",
59
		"//",
60
		"\\\\",
61
		"/foo",
62
		"http://localhost:3000/sub/..",
63
		"http://localhost:3000/other",
64
		"http://other/",
65
	}
66
	for _, s := range bad {
67
		assert.False(t, IsCurrentGiteaSiteURL(s), "bad = %q", s)
68
	}
69

70
	setting.AppURL = "http://localhost:3000/"
71
	setting.AppSubURL = ""
72
	assert.False(t, IsCurrentGiteaSiteURL("//"))
73
	assert.False(t, IsCurrentGiteaSiteURL("\\\\"))
74
	assert.False(t, IsCurrentGiteaSiteURL("http://localhost"))
75
	assert.True(t, IsCurrentGiteaSiteURL("http://localhost:3000?key=val"))
76
}
77

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.