package sprig import ( "testing" "github.com/stretchr/testify/assert" ) var urlTests = map[string]map[string]interface{}{ "proto://auth@host:80/path?query#fragment": { "fragment": "fragment", "host": "host:80", "hostname": "host", "opaque": "", "path": "/path", "query": "query", "scheme": "proto", "userinfo": "auth", }, "proto://host:80/path": { "fragment": "", "host": "host:80", "hostname": "host", "opaque": "", "path": "/path", "query": "", "scheme": "proto", "userinfo": "", }, "something": { "fragment": "", "host": "", "hostname": "", "opaque": "", "path": "something", "query": "", "scheme": "", "userinfo": "", }, "proto://user:passwor%20d@host:80/path": { "fragment": "", "host": "host:80", "hostname": "host", "opaque": "", "path": "/path", "query": "", "scheme": "proto", "userinfo": "user:passwor%20d", }, "proto://host:80/pa%20th?key=val%20ue": { "fragment": "", "host": "host:80", "hostname": "host", "opaque": "", "path": "/pa th", "query": "key=val%20ue", "scheme": "proto", "userinfo": "", }, } func TestUrlParse(t *testing.T) { // testing that function is exported and working properly assert.NoError(t, runt( `{{ index ( urlParse "proto://auth@host:80/path?query#fragment" ) "host" }}`, "host:80")) // testing scenarios for url, expected := range urlTests { assert.EqualValues(t, expected, urlParse(url)) } } func TestUrlJoin(t *testing.T) { tests := map[string]string{ `{{ urlJoin (dict "fragment" "fragment" "host" "host:80" "path" "/path" "query" "query" "scheme" "proto") }}`: "proto://host:80/path?query#fragment", `{{ urlJoin (dict "fragment" "fragment" "host" "host:80" "path" "/path" "scheme" "proto" "userinfo" "ASDJKJSD") }}`: "proto://ASDJKJSD@host:80/path#fragment", } for tpl, expected := range tests { assert.NoError(t, runt(tpl, expected)) } for expected, urlMap := range urlTests { assert.EqualValues(t, expected, urlJoin(urlMap)) } }