2018-03-26 15:12:03 +03: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 17:18:03 +03: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 )
} )
}
}