mirror of
https://github.com/safing/portmaster
synced 2025-04-18 09:59:09 +00:00
148 lines
3.9 KiB
Go
148 lines
3.9 KiB
Go
package hub
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func parseT(t *testing.T, definition string) *Transport {
|
|
t.Helper()
|
|
|
|
tr, err := ParseTransport(definition)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
return nil
|
|
}
|
|
return tr
|
|
}
|
|
|
|
func parseTError(definition string) error {
|
|
_, err := ParseTransport(definition)
|
|
return err
|
|
}
|
|
|
|
func TestTransportParsing(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
// test parsing
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "spn",
|
|
Port: 17,
|
|
}, parseT(t, "spn:17"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "smtp",
|
|
Port: 25,
|
|
}, parseT(t, "smtp:25"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "smtp",
|
|
Port: 25,
|
|
}, parseT(t, "smtp://:25"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "smtp",
|
|
Port: 587,
|
|
}, parseT(t, "smtp:587"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "imap",
|
|
Port: 143,
|
|
}, parseT(t, "imap:143"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "http",
|
|
Port: 80,
|
|
}, parseT(t, "http:80"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "http",
|
|
Domain: "example.com",
|
|
Port: 80,
|
|
}, parseT(t, "http://example.com:80"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "https",
|
|
Port: 443,
|
|
}, parseT(t, "https:443"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "ws",
|
|
Port: 80,
|
|
}, parseT(t, "ws:80"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "wss",
|
|
Domain: "example.com",
|
|
Port: 443,
|
|
Path: "/spn",
|
|
}, parseT(t, "wss://example.com:443/spn"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "http",
|
|
Domain: "example.com",
|
|
Port: 80,
|
|
}, parseT(t, "http://example.com:80"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "http",
|
|
Domain: "example.com",
|
|
Port: 80,
|
|
Path: "/test%20test",
|
|
}, parseT(t, "http://example.com:80/test test"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "http",
|
|
Domain: "example.com",
|
|
Port: 80,
|
|
Path: "/test%20test",
|
|
}, parseT(t, "http://example.com:80/test%20test"), "should match")
|
|
|
|
assert.Equal(t, &Transport{
|
|
Protocol: "http",
|
|
Domain: "example.com",
|
|
Port: 80,
|
|
Path: "/test?key=value",
|
|
}, parseT(t, "http://example.com:80/test?key=value"), "should match")
|
|
|
|
// test parsing and formatting
|
|
|
|
assert.Equal(t, "spn:17",
|
|
parseT(t, "spn:17").String(), "should match")
|
|
assert.Equal(t, "smtp:25",
|
|
parseT(t, "smtp:25").String(), "should match")
|
|
assert.Equal(t, "smtp:25",
|
|
parseT(t, "smtp://:25").String(), "should match")
|
|
assert.Equal(t, "smtp:587",
|
|
parseT(t, "smtp:587").String(), "should match")
|
|
assert.Equal(t, "imap:143",
|
|
parseT(t, "imap:143").String(), "should match")
|
|
assert.Equal(t, "http:80",
|
|
parseT(t, "http:80").String(), "should match")
|
|
assert.Equal(t, "http://example.com:80",
|
|
parseT(t, "http://example.com:80").String(), "should match")
|
|
assert.Equal(t, "https:443",
|
|
parseT(t, "https:443").String(), "should match")
|
|
assert.Equal(t, "ws:80",
|
|
parseT(t, "ws:80").String(), "should match")
|
|
assert.Equal(t, "wss://example.com:443/spn",
|
|
parseT(t, "wss://example.com:443/spn").String(), "should match")
|
|
assert.Equal(t, "http://example.com:80",
|
|
parseT(t, "http://example.com:80").String(), "should match")
|
|
assert.Equal(t, "http://example.com:80/test%20test",
|
|
parseT(t, "http://example.com:80/test test").String(), "should match")
|
|
assert.Equal(t, "http://example.com:80/test%20test",
|
|
parseT(t, "http://example.com:80/test%20test").String(), "should match")
|
|
assert.Equal(t, "http://example.com:80/test?key=value",
|
|
parseT(t, "http://example.com:80/test?key=value").String(), "should match")
|
|
|
|
// test invalid
|
|
|
|
require.Error(t, parseTError("spn"), "should fail")
|
|
require.Error(t, parseTError("spn:"), "should fail")
|
|
require.Error(t, parseTError("spn:0"), "should fail")
|
|
require.Error(t, parseTError("spn:65536"), "should fail")
|
|
}
|