Files
core/net/url/url_test.go
Ingo Oppermann e45f80ed42 Fix tests
2023-04-26 09:50:09 +02:00

183 lines
3.9 KiB
Go

package url
import (
"testing"
"github.com/stretchr/testify/require"
)
func TestLookup(t *testing.T) {
ip, err := Lookup("/localhost:8080/foobar")
require.NoError(t, err)
require.Equal(t, "", ip)
ip, err = Lookup("http://")
require.NoError(t, err)
require.Equal(t, "", ip)
ip, err = Lookup("https://www.google.com")
require.NoError(t, err)
require.NotEmpty(t, ip)
}
func TestLocalhost(t *testing.T) {
ip, err := Lookup("http://localhost:8080/foobar")
require.NoError(t, err)
require.Subset(t, []string{"127.0.0.1", "::1"}, []string{ip})
}
func TestValidate(t *testing.T) {
err := Validate("http://localhost/foobar")
require.NoError(t, err)
err = Validate("foobar")
require.NoError(t, err)
err = Validate("http://localhost/foobar_%25v")
require.NoError(t, err)
err = Validate("http://localhost/foobar_%v")
require.NoError(t, err)
}
func TestScheme(t *testing.T) {
r := HasScheme("http://localhost/foobar")
require.True(t, r)
r = HasScheme("iueriherfd://localhost/foobar")
require.True(t, r)
r = HasScheme("//localhost/foobar")
require.False(t, r)
}
func TestParse(t *testing.T) {
u, err := Parse("http://localhost/foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "http",
Opaque: "",
User: nil,
Host: "localhost",
RawPath: "/foobar",
RawQuery: "",
RawFragment: "",
}, u)
u, err = Parse("iueriherfd://localhost/foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "iueriherfd",
Opaque: "",
User: nil,
Host: "localhost",
RawPath: "/foobar",
RawQuery: "",
RawFragment: "",
}, u)
u, err = Parse("//localhost/foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "",
Opaque: "",
User: nil,
Host: "localhost",
RawPath: "/foobar",
RawQuery: "",
RawFragment: "",
}, u)
u, err = Parse("http://localhost/foobar_%v?foo=bar#foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "http",
Opaque: "",
User: nil,
Host: "localhost",
RawPath: "/foobar_%v",
RawQuery: "foo=bar",
RawFragment: "foobar",
}, u)
u, err = Parse("http:localhost/foobar_%v?foo=bar#foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "http",
Opaque: "localhost/foobar_%v",
User: nil,
Host: "",
RawPath: "",
RawQuery: "foo=bar",
RawFragment: "foobar",
}, u)
u, err = Parse("http:/localhost/foobar_%v?foo=bar#foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "http",
Opaque: "",
User: nil,
Host: "",
RawPath: "/localhost/foobar_%v",
RawQuery: "foo=bar",
RawFragment: "foobar",
}, u)
u, err = Parse("http:///localhost/foobar_%v?foo=bar#foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "http",
Opaque: "",
User: nil,
Host: "",
RawPath: "/localhost/foobar_%v",
RawQuery: "foo=bar",
RawFragment: "foobar",
}, u)
u, err = Parse("foo:bar://localhost/foobar_%v?foo=bar#foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "foo:bar",
Opaque: "",
User: nil,
Host: "localhost",
RawPath: "/foobar_%v",
RawQuery: "foo=bar",
RawFragment: "foobar",
}, u)
u, err = Parse("http://localhost:8080/foobar")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "http",
Opaque: "",
User: nil,
Host: "localhost:8080",
RawPath: "/foobar",
RawQuery: "",
RawFragment: "",
}, u)
require.Equal(t, "localhost", u.Hostname())
require.Equal(t, "8080", u.Port())
u, err = Parse("https://www.google.com")
require.NoError(t, err)
require.Equal(t, &URL{
Scheme: "https",
Opaque: "",
User: nil,
Host: "www.google.com",
RawPath: "/",
RawQuery: "",
RawFragment: "",
}, u)
require.Equal(t, "www.google.com", u.Hostname())
require.Equal(t, "", u.Port())
}