mirror of
https://github.com/gortc/stun.git
synced 2024-05-03 14:44:55 +08:00
118 lines
1.9 KiB
Go
118 lines
1.9 KiB
Go
package stun
|
|
|
|
import "testing"
|
|
|
|
func TestParseURI(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
in string
|
|
out URI
|
|
}{
|
|
{
|
|
name: "default",
|
|
in: "stun:example.org",
|
|
out: URI{
|
|
Host: "example.org",
|
|
Scheme: Scheme,
|
|
},
|
|
},
|
|
{
|
|
name: "secure",
|
|
in: "stuns:example.org",
|
|
out: URI{
|
|
Host: "example.org",
|
|
Scheme: SchemeSecure,
|
|
},
|
|
},
|
|
{
|
|
name: "with port",
|
|
in: "stun:example.org:8000",
|
|
out: URI{
|
|
Host: "example.org",
|
|
Scheme: Scheme,
|
|
Port: 8000,
|
|
},
|
|
},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
out, parseErr := ParseURI(tc.in)
|
|
if parseErr != nil {
|
|
t.Fatal(parseErr)
|
|
}
|
|
if out != tc.out {
|
|
t.Errorf("%s != %s", out, tc.out)
|
|
}
|
|
})
|
|
}
|
|
t.Run("MustFail", func(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
in string
|
|
}{
|
|
{
|
|
name: "hierarchical",
|
|
in: "stun://example.org",
|
|
},
|
|
{
|
|
name: "bad scheme",
|
|
in: "tcp:example.org",
|
|
},
|
|
{
|
|
name: "invalid uri scheme",
|
|
in: "stun_s:test",
|
|
},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
_, parseErr := ParseURI(tc.in)
|
|
if parseErr == nil {
|
|
t.Fatal("should fail, but did not")
|
|
}
|
|
})
|
|
}
|
|
})
|
|
}
|
|
|
|
func TestURI_String(t *testing.T) {
|
|
for _, tc := range []struct {
|
|
name string
|
|
uri URI
|
|
out string
|
|
}{
|
|
{
|
|
name: "blank",
|
|
out: ":",
|
|
},
|
|
{
|
|
name: "simple",
|
|
uri: URI{
|
|
Host: "example.org",
|
|
Scheme: Scheme,
|
|
},
|
|
out: "stun:example.org",
|
|
},
|
|
{
|
|
name: "secure",
|
|
uri: URI{
|
|
Host: "example.org",
|
|
Scheme: SchemeSecure,
|
|
},
|
|
out: "stuns:example.org",
|
|
},
|
|
{
|
|
name: "secure with port",
|
|
uri: URI{
|
|
Host: "example.org",
|
|
Scheme: SchemeSecure,
|
|
Port: 443,
|
|
},
|
|
out: "stuns:example.org:443",
|
|
},
|
|
} {
|
|
t.Run(tc.name, func(t *testing.T) {
|
|
if v := tc.uri.String(); v != tc.out {
|
|
t.Errorf("%q != %q", v, tc.out)
|
|
}
|
|
})
|
|
}
|
|
}
|