2018-02-20 15:50:42 +03:00
// 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 util
import (
"testing"
2018-06-26 17:45:18 +03:00
"code.gitea.io/gitea/modules/setting"
2018-02-20 15:50:42 +03:00
"github.com/stretchr/testify/assert"
)
func TestURLJoin ( t * testing . T ) {
type test struct {
Expected string
Base string
Elements [ ] string
}
newTest := func ( expected , base string , elements ... string ) test {
return test { Expected : expected , Base : base , Elements : elements }
}
for _ , test := range [ ] test {
newTest ( "https://try.gitea.io/a/b/c" ,
"https://try.gitea.io" , "a/b" , "c" ) ,
newTest ( "https://try.gitea.io/a/b/c" ,
"https://try.gitea.io/" , "/a/b/" , "/c/" ) ,
newTest ( "https://try.gitea.io/a/c" ,
"https://try.gitea.io/" , "/a/./b/" , "../c/" ) ,
newTest ( "a/b/c" ,
"a" , "b/c/" ) ,
newTest ( "a/b/d" ,
"a/" , "b/c/" , "/../d/" ) ,
2018-05-29 06:51:42 +03:00
newTest ( "https://try.gitea.io/a/b/c#d" ,
"https://try.gitea.io" , "a/b" , "c#d" ) ,
2018-05-30 16:23:43 +03:00
newTest ( "/a/b/d" ,
"/a/" , "b/c/" , "/../d/" ) ,
newTest ( "/a/b/c" ,
"/a" , "b/c/" ) ,
newTest ( "/a/b/c#hash" ,
"/a" , "b/c#hash" ) ,
2018-02-20 15:50:42 +03:00
} {
assert . Equal ( t , test . Expected , URLJoin ( test . Base , test . Elements ... ) )
}
}
2018-06-26 17:45:18 +03:00
func TestIsExternalURL ( t * testing . T ) {
setting . Domain = "try.gitea.io"
type test struct {
Expected bool
RawURL string
}
newTest := func ( expected bool , rawURL string ) test {
return test { Expected : expected , RawURL : rawURL }
}
for _ , test := range [ ] test {
newTest ( false ,
"https://try.gitea.io" ) ,
newTest ( true ,
"https://example.com/" ) ,
newTest ( true ,
"//example.com" ) ,
newTest ( true ,
"http://example.com" ) ,
newTest ( false ,
"a/" ) ,
newTest ( false ,
"https://try.gitea.io/test?param=false" ) ,
newTest ( false ,
"test?param=false" ) ,
newTest ( false ,
"//try.gitea.io/test?param=false" ) ,
newTest ( false ,
"/hey/hey/hey#3244" ) ,
} {
assert . Equal ( t , test . Expected , IsExternalURL ( test . RawURL ) )
}
}