mirror of
https://github.com/caddyserver/caddy.git
synced 2024-11-25 17:56:34 +08:00
db4f1c0277
* httpcaddyfile: Revise automation policy generation This should fix a frustrating edge case where wildcard subjects are used, which potentially get shadowed by more specific versions of themselves; see the new tests for an example. This change is motivated by an actual customer requirement. Although all the tests pass, this logic is incredibly complex and nuanced, and I'm worried it is not correct. But it took me about 4 days to get this far on a solution. I did my best. * Fix typo
57 lines
1.2 KiB
Go
57 lines
1.2 KiB
Go
package httpcaddyfile
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/caddyserver/caddy/v2/modules/caddytls"
|
|
)
|
|
|
|
func TestAutomationPolicyIsSubset(t *testing.T) {
|
|
for i, test := range []struct {
|
|
a, b []string
|
|
expect bool
|
|
}{
|
|
{
|
|
a: []string{"example.com"},
|
|
b: []string{},
|
|
expect: true,
|
|
},
|
|
{
|
|
a: []string{},
|
|
b: []string{"example.com"},
|
|
expect: false,
|
|
},
|
|
{
|
|
a: []string{"foo.example.com"},
|
|
b: []string{"*.example.com"},
|
|
expect: true,
|
|
},
|
|
{
|
|
a: []string{"foo.example.com"},
|
|
b: []string{"foo.example.com"},
|
|
expect: true,
|
|
},
|
|
{
|
|
a: []string{"foo.example.com"},
|
|
b: []string{"example.com"},
|
|
expect: false,
|
|
},
|
|
{
|
|
a: []string{"example.com", "foo.example.com"},
|
|
b: []string{"*.com", "*.*.com"},
|
|
expect: true,
|
|
},
|
|
{
|
|
a: []string{"example.com", "foo.example.com"},
|
|
b: []string{"*.com"},
|
|
expect: false,
|
|
},
|
|
} {
|
|
apA := &caddytls.AutomationPolicy{Subjects: test.a}
|
|
apB := &caddytls.AutomationPolicy{Subjects: test.b}
|
|
if actual := automationPolicyIsSubset(apA, apB); actual != test.expect {
|
|
t.Errorf("Test %d: Expected %t but got %t (A: %v B: %v)", i, test.expect, actual, test.a, test.b)
|
|
}
|
|
}
|
|
}
|