package config import ( "testing" "github.com/stretchr/testify/assert" ) func TestCertOverlap(t *testing.T) { testCases := []struct { names []string test string match bool }{ {[]string{"aa.bb.cc", "cc.bb.aa"}, "aa.bb.c", false}, {[]string{"aa.bb.cc"}, "aa.bb.cc", true}, {[]string{"*.bb.cc"}, "aa.bb.cc", true}, {[]string{"a1.bb.cc", "a2.bb.cc"}, "*.bb.cc", true}, {[]string{"*.bb.cc", "a2.bb.cc"}, "*.bb.cc", true}, {[]string{"*.aa.bb.cc"}, "*.bb.cc", false}, {[]string{"*.aa.bb.cc"}, "aa.bb.cc", false}, {[]string{"bb.cc"}, "*.bb.cc", false}, } t.Run("match mix mode", func(t *testing.T) { for _, tc := range testCases { idx := make(certsIndex) for _, name := range tc.names { idx.add(name, certUsageServerAuth|certUsageClientAuth) } assert.Equalf(t, tc.match, idx.match(tc.test, certUsageServerAuth), "%v", tc) } }) t.Run("different cert usages never match", func(t *testing.T) { for _, tc := range testCases { idx := make(certsIndex) for _, name := range tc.names { idx.add(name, certUsageServerAuth) } assert.Equalf(t, false, idx.match(tc.test, certUsageClientAuth), "%v", tc) } }) }