fix(azure): apply access mode to every zone in the same block (#8110)

This commit is contained in:
James R T
2026-05-20 23:06:37 +08:00
committed by GitHub
parent f8dffa7fc2
commit 84faec64c3
2 changed files with 50 additions and 24 deletions

View File

@@ -8,64 +8,88 @@ import (
func TestSetup(t *testing.T) {
tests := []struct {
body string
expectedError bool
body string
expectedError bool
expectedAccess map[string]string
}{
{`azure`, false},
{`azure :`, true},
{`azure resource_set:zone`, false},
{`azure`, false, nil},
{`azure :`, true, nil},
{`azure resource_set:zone`, false, nil},
{`azure resource_set:zone {
tenant
}`, true},
}`, true, nil},
{`azure resource_set:zone {
tenant abc
}`, false},
}`, false, nil},
{`azure resource_set:zone {
client
}`, true},
}`, true, nil},
{`azure resource_set:zone {
client abc
}`, false},
}`, false, nil},
{`azure resource_set:zone {
subscription
}`, true},
}`, true, nil},
{`azure resource_set:zone {
subscription abc
}`, false},
}`, false, nil},
{`azure resource_set:zone {
foo
}`, true},
}`, true, nil},
{`azure resource_set:zone {
tenant tenant_id
client client_id
secret client_secret
subscription subscription_id
access public
}`, false},
}`, false, nil},
{`azure resource_set:zone {
fallthrough
}`, false},
}`, false, nil},
{`azure resource_set:zone {
environment AZUREPUBLICCLOUD
}`, false},
}`, false, nil},
{`azure resource_set:zone resource_set:zone {
fallthrough
}`, true},
}`, true, nil},
{`azure resource_set:zone,zone2 {
access private
}`, false},
}`, false, nil},
{`azure resource-set:zone {
access public
}`, false},
}`, false, nil},
{`azure resource-set:zone {
access foo
}`, true},
}`, true, nil},
{`azure rg:zone1 rg:zone2 {
access private
}`, false, map[string]string{"rgzone1": "private", "rgzone2": "private"}},
{`azure rg:zone1 {
access private
}
azure rg:zone2 {
}`, false, map[string]string{"rgzone1": "private", "rgzone2": "public"}},
{`azure rg:zone1 rg:zone2 {
}`, false, map[string]string{"rgzone1": "public", "rgzone2": "public"}},
}
for i, test := range tests {
c := caddy.NewTestController("dns", test.body)
if _, _, _, _, err := parse(c); (err == nil) == test.expectedError {
_, _, accessMap, _, err := parse(c)
if (err == nil) == test.expectedError {
t.Fatalf("Unexpected errors: %v in test: %d\n\t%s", err, i, test.body)
}
if test.expectedAccess == nil {
continue
}
if len(accessMap) != len(test.expectedAccess) {
t.Fatalf("Test %d: accessMap size mismatch: got %d (%v), want %d (%v)\n\t%s",
i, len(accessMap), accessMap, len(test.expectedAccess), test.expectedAccess, test.body)
}
for k, want := range test.expectedAccess {
if got := accessMap[k]; got != want {
t.Fatalf("Test %d: accessMap[%q] = %q, want %q\n\t%s", i, k, got, want, test.body)
}
}
}
}