2021-06-14 20:20:43 +03:00
// Copyright 2021 The Gitea Authors. All rights reserved.
2020-01-25 13:57:43 +03:00
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package util
import (
2021-06-14 20:20:43 +03:00
"errors"
2020-01-25 13:57:43 +03:00
"testing"
"github.com/stretchr/testify/assert"
)
2021-06-14 20:20:43 +03:00
func TestNewSanitizedError ( t * testing . T ) {
err := errors . New ( "error while secret on test" )
err2 := NewSanitizedError ( err )
assert . Equal ( t , err . Error ( ) , err2 . Error ( ) )
var cases = [ ] struct {
input error
oldnew [ ] string
expected string
} {
// case 0
{
errors . New ( "error while secret on test" ) ,
[ ] string { "secret" , "replaced" } ,
"error while replaced on test" ,
} ,
// case 1
{
errors . New ( "error while sec-ret on test" ) ,
[ ] string { "secret" , "replaced" } ,
"error while sec-ret on test" ,
} ,
2020-01-25 13:57:43 +03:00
}
2021-06-14 20:20:43 +03:00
for n , c := range cases {
err := NewSanitizedError ( c . input , c . oldnew ... )
assert . Equal ( t , c . expected , err . Error ( ) , "case %d: error should match" , n )
}
}
func TestNewStringURLSanitizer ( t * testing . T ) {
var cases = [ ] struct {
input string
placeholder bool
expected string
} {
// case 0
{
"https://github.com/go-gitea/test_repo.git" ,
true ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 1
{
"https://github.com/go-gitea/test_repo.git" ,
false ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 2
{
"https://mytoken@github.com/go-gitea/test_repo.git" ,
true ,
"https://" + userPlaceholder + "@github.com/go-gitea/test_repo.git" ,
} ,
// case 3
{
"https://mytoken@github.com/go-gitea/test_repo.git" ,
false ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 4
{
"https://user:password@github.com/go-gitea/test_repo.git" ,
true ,
"https://" + userPlaceholder + "@github.com/go-gitea/test_repo.git" ,
} ,
// case 5
{
"https://user:password@github.com/go-gitea/test_repo.git" ,
false ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 6
{
"https://gi\nthub.com/go-gitea/test_repo.git" ,
false ,
unparsableURL ,
} ,
}
for n , c := range cases {
// uses NewURLSanitizer internally
result := NewStringURLSanitizer ( c . input , c . placeholder ) . Replace ( c . input )
assert . Equal ( t , c . expected , result , "case %d: error should match" , n )
}
}
func TestNewStringURLSanitizedError ( t * testing . T ) {
var cases = [ ] struct {
input string
placeholder bool
expected string
} {
// case 0
{
"https://github.com/go-gitea/test_repo.git" ,
true ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 1
{
"https://github.com/go-gitea/test_repo.git" ,
false ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 2
{
"https://mytoken@github.com/go-gitea/test_repo.git" ,
true ,
"https://" + userPlaceholder + "@github.com/go-gitea/test_repo.git" ,
} ,
// case 3
{
"https://mytoken@github.com/go-gitea/test_repo.git" ,
false ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 4
{
"https://user:password@github.com/go-gitea/test_repo.git" ,
true ,
"https://" + userPlaceholder + "@github.com/go-gitea/test_repo.git" ,
} ,
// case 5
{
"https://user:password@github.com/go-gitea/test_repo.git" ,
false ,
"https://github.com/go-gitea/test_repo.git" ,
} ,
// case 6
{
"https://gi\nthub.com/go-gitea/test_repo.git" ,
false ,
unparsableURL ,
} ,
}
encloseText := func ( input string ) string {
return "test " + input + " test"
}
for n , c := range cases {
err := errors . New ( encloseText ( c . input ) )
result := NewStringURLSanitizedError ( err , c . input , c . placeholder )
assert . Equal ( t , encloseText ( c . expected ) , result . Error ( ) , "case %d: error should match" , n )
2020-01-25 13:57:43 +03:00
}
}