41 lines
939 B
Go
41 lines
939 B
Go
package secureurl
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"net/url"
|
||
|
|
"testing"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestCheck(t *testing.T) {
|
||
|
|
t.Parallel()
|
||
|
|
tests := []struct {
|
||
|
|
raw string
|
||
|
|
ok bool
|
||
|
|
}{
|
||
|
|
{"https://meals.example.com", true},
|
||
|
|
{"https://auth.example.com/application/o/mealquest/", true},
|
||
|
|
{"https://192.0.2.10:8443", true},
|
||
|
|
{"http://localhost:8080", true},
|
||
|
|
{"http://LOCALHOST:8080", true},
|
||
|
|
{"http://127.0.0.1:8080/path", true},
|
||
|
|
{"http://[::1]:8080", true},
|
||
|
|
{"http://[::1]", true},
|
||
|
|
{"http://meals.example.com", false},
|
||
|
|
{"http://192.0.2.10", false},
|
||
|
|
{"http://127.0.0.2", false},
|
||
|
|
{"http://localhost.example.com", false},
|
||
|
|
{"http://0.0.0.0:8080", false},
|
||
|
|
{"ftp://localhost", false},
|
||
|
|
{"https://", false},
|
||
|
|
{"meals.example.com", false},
|
||
|
|
}
|
||
|
|
for _, tc := range tests {
|
||
|
|
u, err := url.Parse(tc.raw)
|
||
|
|
if err != nil {
|
||
|
|
t.Fatal(err)
|
||
|
|
}
|
||
|
|
if err := Check(u); (err == nil) != tc.ok {
|
||
|
|
t.Errorf("Check(%q) error = %v, want ok=%v", tc.raw, err, tc.ok)
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|