2018-03-26 12:12:03 +00:00
|
|
|
package types
|
|
|
|
|
|
|
|
import (
|
|
|
|
"testing"
|
|
|
|
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
)
|
|
|
|
|
|
|
|
func TestDomain_ToStrArray(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
desc string
|
|
|
|
domain Domain
|
|
|
|
expected []string
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
desc: "with Main and SANs",
|
|
|
|
domain: Domain{
|
|
|
|
Main: "foo.com",
|
|
|
|
SANs: []string{"bar.foo.com", "bir.foo.com"},
|
|
|
|
},
|
|
|
|
expected: []string{"foo.com", "bar.foo.com", "bir.foo.com"},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "without SANs",
|
|
|
|
domain: Domain{
|
|
|
|
Main: "foo.com",
|
|
|
|
},
|
|
|
|
expected: []string{"foo.com"},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "without Main",
|
|
|
|
domain: Domain{
|
|
|
|
SANs: []string{"bar.foo.com", "bir.foo.com"},
|
|
|
|
},
|
|
|
|
expected: []string{"bar.foo.com", "bir.foo.com"},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, test := range testCases {
|
|
|
|
test := test
|
|
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
domains := test.domain.ToStrArray()
|
|
|
|
assert.EqualValues(t, test.expected, domains)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func TestDomain_Set(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
desc string
|
|
|
|
rawDomains []string
|
|
|
|
expected Domain
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
desc: "with 3 domains",
|
|
|
|
rawDomains: []string{"foo.com", "bar.foo.com", "bir.foo.com"},
|
|
|
|
expected: Domain{
|
|
|
|
Main: "foo.com",
|
|
|
|
SANs: []string{"bar.foo.com", "bir.foo.com"},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "with 1 domain",
|
|
|
|
rawDomains: []string{"foo.com"},
|
|
|
|
expected: Domain{
|
|
|
|
Main: "foo.com",
|
|
|
|
SANs: []string{},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "",
|
|
|
|
rawDomains: nil,
|
|
|
|
expected: Domain{},
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, test := range testCases {
|
|
|
|
test := test
|
|
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
domain := Domain{}
|
|
|
|
domain.Set(test.rawDomains)
|
|
|
|
|
|
|
|
assert.Equal(t, test.expected, domain)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|
2018-03-27 14:18:03 +00:00
|
|
|
|
|
|
|
func TestMatchDomain(t *testing.T) {
|
|
|
|
testCases := []struct {
|
|
|
|
desc string
|
|
|
|
certDomain string
|
|
|
|
domain string
|
|
|
|
expected bool
|
|
|
|
}{
|
|
|
|
{
|
|
|
|
desc: "exact match",
|
|
|
|
certDomain: "traefik.wtf",
|
|
|
|
domain: "traefik.wtf",
|
|
|
|
expected: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "wildcard and root domain",
|
|
|
|
certDomain: "*.traefik.wtf",
|
|
|
|
domain: "traefik.wtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "wildcard and sub domain",
|
|
|
|
certDomain: "*.traefik.wtf",
|
|
|
|
domain: "sub.traefik.wtf",
|
|
|
|
expected: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "wildcard and sub sub domain",
|
|
|
|
certDomain: "*.traefik.wtf",
|
|
|
|
domain: "sub.sub.traefik.wtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "double wildcard and sub sub domain",
|
|
|
|
certDomain: "*.*.traefik.wtf",
|
|
|
|
domain: "sub.sub.traefik.wtf",
|
|
|
|
expected: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "sub sub domain and invalid wildcard",
|
|
|
|
certDomain: "sub.*.traefik.wtf",
|
|
|
|
domain: "sub.sub.traefik.wtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "sub sub domain and valid wildcard",
|
|
|
|
certDomain: "*.sub.traefik.wtf",
|
|
|
|
domain: "sub.sub.traefik.wtf",
|
|
|
|
expected: true,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "dot replaced by a cahr",
|
|
|
|
certDomain: "sub.sub.traefik.wtf",
|
|
|
|
domain: "sub.sub.traefikiwtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "*",
|
|
|
|
certDomain: "*",
|
|
|
|
domain: "sub.sub.traefik.wtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "?",
|
|
|
|
certDomain: "?",
|
|
|
|
domain: "sub.sub.traefik.wtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "...................",
|
|
|
|
certDomain: "...................",
|
|
|
|
domain: "sub.sub.traefik.wtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
desc: "wildcard and *",
|
|
|
|
certDomain: "*.traefik.wtf",
|
|
|
|
domain: "*.*.traefik.wtf",
|
|
|
|
expected: false,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
for _, test := range testCases {
|
|
|
|
test := test
|
|
|
|
t.Run(test.desc, func(t *testing.T) {
|
|
|
|
t.Parallel()
|
|
|
|
|
|
|
|
domains := MatchDomain(test.domain, test.certDomain)
|
|
|
|
assert.Equal(t, test.expected, domains)
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|