diff options
author | Lauris BH <lauris@nix.lv> | 2018-08-15 09:29:37 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-15 09:29:37 +0300 |
commit | 92466129ec242536c71b66a8987d9b37e6bc0bce (patch) | |
tree | b9ac6959ef6365a6215868cba4083f53b74fa094 /modules/validation/helpers_test.go | |
parent | 0449330dbce812e67f3309c11e265eb6a5bc0c7e (diff) | |
download | gitea-92466129ec242536c71b66a8987d9b37e6bc0bce.tar.gz gitea-92466129ec242536c71b66a8987d9b37e6bc0bce.zip |
Improve URL validation for external wiki and external issues (#4710)
* Improve URL validation for external wiki and external issues
* Do not allow also localhost address for external URLs
Diffstat (limited to 'modules/validation/helpers_test.go')
-rw-r--r-- | modules/validation/helpers_test.go | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/modules/validation/helpers_test.go b/modules/validation/helpers_test.go new file mode 100644 index 0000000000..875625a02c --- /dev/null +++ b/modules/validation/helpers_test.go @@ -0,0 +1,90 @@ +// Copyright 2018 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 validation + +import ( + "testing" + + "github.com/stretchr/testify/assert" + + "code.gitea.io/gitea/modules/setting" +) + +func Test_IsValidURL(t *testing.T) { + cases := []struct { + description string + url string + valid bool + }{ + { + description: "Empty URL", + url: "", + valid: false, + }, + { + description: "Loobpack IPv4 URL", + url: "http://127.0.1.1:5678/", + valid: true, + }, + { + description: "Loobpack IPv6 URL", + url: "https://[::1]/", + valid: true, + }, + { + description: "Missing semicolon after schema", + url: "http//meh/", + valid: false, + }, + } + + for _, testCase := range cases { + t.Run(testCase.description, func(t *testing.T) { + assert.Equal(t, testCase.valid, IsValidURL(testCase.url)) + }) + } +} + +func Test_IsValidExternalURL(t *testing.T) { + setting.AppURL = "https://try.gitea.io/" + + cases := []struct { + description string + url string + valid bool + }{ + { + description: "Current instance URL", + url: "https://try.gitea.io/test", + valid: true, + }, + { + description: "Loobpack IPv4 URL", + url: "http://127.0.1.1:5678/", + valid: false, + }, + { + description: "Current instance API URL", + url: "https://try.gitea.io/api/v1/user/follow", + valid: false, + }, + { + description: "Local network URL", + url: "http://192.168.1.2/api/v1/user/follow", + valid: true, + }, + { + description: "Local URL", + url: "http://LOCALHOST:1234/whatever", + valid: false, + }, + } + + for _, testCase := range cases { + t.Run(testCase.description, func(t *testing.T) { + assert.Equal(t, testCase.valid, IsValidExternalURL(testCase.url)) + }) + } +} |