mirror of
https://github.com/StackExchange/dnscontrol.git
synced 2025-12-09 13:46:07 +08:00
fix integration tests for CLOUDFLAREAPI_SINGLE_REDIRECT
This commit is contained in:
parent
4b68c79d4f
commit
779d2f3bef
4 changed files with 25 additions and 29 deletions
|
|
@ -13,9 +13,9 @@ import (
|
|||
|
||||
"github.com/StackExchange/dnscontrol/v4/models"
|
||||
"github.com/StackExchange/dnscontrol/v4/pkg/nameservers"
|
||||
"github.com/StackExchange/dnscontrol/v4/pkg/rtypecontrol"
|
||||
"github.com/StackExchange/dnscontrol/v4/pkg/zonerecs"
|
||||
"github.com/StackExchange/dnscontrol/v4/providers"
|
||||
"github.com/StackExchange/dnscontrol/v4/providers/cloudflare/rtypes/cfsingleredirect"
|
||||
"github.com/miekg/dns/dnsutil"
|
||||
)
|
||||
|
||||
|
|
@ -26,6 +26,9 @@ var (
|
|||
printElapsed = flag.Bool("elapsed", false, "Print elapsed time for each testgroup")
|
||||
)
|
||||
|
||||
// Global variable to hold the current DomainConfig for use in FromRaw calls.
|
||||
var globalDC *models.DomainConfig
|
||||
|
||||
// Helper constants/funcs for the CLOUDFLARE proxy testing:
|
||||
|
||||
func CfProxyOff() *TestCase { return tc("proxyoff", cfProxyA("prxy", "174.136.107.111", "off")) }
|
||||
|
|
@ -200,6 +203,8 @@ func makeChanges(t *testing.T, prv providers.DNSServiceProvider, dc *models.Doma
|
|||
|
||||
func runTests(t *testing.T, prv providers.DNSServiceProvider, domainName string, origConfig map[string]string) {
|
||||
dc := getDomainConfigWithNameservers(t, prv, domainName)
|
||||
globalDC = dc
|
||||
|
||||
testGroups := makeTests()
|
||||
|
||||
firstGroup := *startIdx
|
||||
|
|
@ -334,13 +339,13 @@ func cfProxyCNAME(name, target, status string) *models.RecordConfig {
|
|||
}
|
||||
|
||||
func cfSingleRedirectEnabled() bool {
|
||||
return ((*enableCFRedirectMode) != "")
|
||||
return ((*enableCFRedirectMode) != true)
|
||||
}
|
||||
|
||||
func cfSingleRedirect(name string, code any, when, then string) *models.RecordConfig {
|
||||
r := makeRec("@", name, cfsingleredirect.SINGLEREDIRECT)
|
||||
panicOnErr(cfsingleredirect.FromRaw(r, []any{name, code, when, then})) // Should not happen
|
||||
return r
|
||||
rec, err := rtypecontrol.NewRecordConfigFromRaw("CLOUDFLAREAPI_SINGLE_REDIRECT", []any{name, code, when, then}, globalDC)
|
||||
panicOnErr(err)
|
||||
return rec
|
||||
}
|
||||
|
||||
func cfWorkerRoute(pattern, target string) *models.RecordConfig {
|
||||
|
|
@ -350,15 +355,15 @@ func cfWorkerRoute(pattern, target string) *models.RecordConfig {
|
|||
}
|
||||
|
||||
func cfRedir(pattern, target string) *models.RecordConfig {
|
||||
t := fmt.Sprintf("%s,%s", pattern, target)
|
||||
r := makeRec("@", t, "CF_REDIRECT")
|
||||
return r
|
||||
rec, err := rtypecontrol.NewRecordConfigFromRaw("CF_REDIRECT", []any{pattern, target}, globalDC)
|
||||
panicOnErr(err)
|
||||
return rec
|
||||
}
|
||||
|
||||
func cfRedirTemp(pattern, target string) *models.RecordConfig {
|
||||
t := fmt.Sprintf("%s,%s", pattern, target)
|
||||
r := makeRec("@", t, "CF_TEMP_REDIRECT")
|
||||
return r
|
||||
rec, err := rtypecontrol.NewRecordConfigFromRaw("CF_TEMP_REDIRECT", []any{pattern, target}, globalDC)
|
||||
panicOnErr(err)
|
||||
return rec
|
||||
}
|
||||
|
||||
func aghAPassthrough(pattern, target string) *models.RecordConfig {
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ import (
|
|||
var (
|
||||
providerFlag = flag.String("provider", "", "Provider to run (if empty, deduced from -profile)")
|
||||
profileFlag = flag.String("profile", "", "Entry in profiles.json to use (if empty, copied from -provider)")
|
||||
enableCFWorkers = flag.Bool("cfworkers", true, "Set false to disable CF worker tests")
|
||||
enableCFRedirectMode = flag.String("cfredirect", "", "cloudflare pagerule tests: default=page_rules, c=convert old to enw, n=new-style, o=none")
|
||||
enableCFWorkers = flag.Bool("cfworkers", true, "enable CF worker tests (default true)")
|
||||
enableCFRedirectMode = flag.Bool("cfredirect", false, "enable CF SingleRedirect tests (default false)")
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
|
@ -104,15 +104,8 @@ func getProvider(t *testing.T) (providers.DNSServiceProvider, string, map[string
|
|||
if *enableCFWorkers {
|
||||
items = append(items, `"manage_workers": true`)
|
||||
}
|
||||
switch *enableCFRedirectMode {
|
||||
case "":
|
||||
items = append(items, `"manage_redirects": true`)
|
||||
case "c":
|
||||
items = append(items, `"manage_redirects": true`)
|
||||
if *enableCFRedirectMode {
|
||||
items = append(items, `"manage_single_redirects": true`)
|
||||
case "n":
|
||||
items = append(items, `"manage_single_redirects": true`)
|
||||
case "o":
|
||||
}
|
||||
metadata = []byte(`{ ` + strings.Join(items, `, `) + ` }`)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2016,11 +2016,6 @@ func makeTests() []*TestGroup {
|
|||
),
|
||||
),
|
||||
|
||||
// This MUST be the last test.
|
||||
testgroup("final",
|
||||
tc("final", txt("final", `TestDNSProviders was successful!`)),
|
||||
),
|
||||
|
||||
testgroup("SMIMEA",
|
||||
requires(providers.CanUseSMIMEA),
|
||||
tc("SMIMEA record", smimea("_443._tcp", 3, 1, 1, sha256hash)),
|
||||
|
|
@ -2030,6 +2025,11 @@ func makeTests() []*TestGroup {
|
|||
tc("SMIMEA change certificate", smimea("_443._tcp", 2, 0, 2, reversedSha512)),
|
||||
),
|
||||
|
||||
// This MUST be the last test.
|
||||
testgroup("final",
|
||||
tc("final", txt("final", `TestDNSProviders was successful!`)),
|
||||
),
|
||||
|
||||
// Narrative: Congrats! You're done! If you've made it this far
|
||||
// you're very close to being able to submit your PR. Here's
|
||||
// some tips:
|
||||
|
|
|
|||
|
|
@ -364,8 +364,6 @@ func (c *cloudflareProvider) mkDeleteCorrection(recType string, origRec *models.
|
|||
case "CLOUDFLAREAPI_SINGLE_REDIRECT":
|
||||
idTxt = origRec.Original.(cloudflare.RulesetRule).ID
|
||||
default:
|
||||
//fmt.Printf("DEBUG: %q rec=%+v origRec.Original type is %T\n", recType, *origRec, origRec.Original)
|
||||
fmt.Printf("SHOULD NOT HAPPEN: %q origRec.Original type is %T\n", recType, origRec.Original)
|
||||
idTxt = origRec.Original.(cloudflare.DNSRecord).ID
|
||||
}
|
||||
msg = msg + color.RedString(" id=%v", idTxt)
|
||||
|
|
@ -567,7 +565,7 @@ func (c *cloudflareProvider) preprocessConfig(dc *models.DomainConfig) error {
|
|||
if rec.Type == "CLOUDFLAREAPI_SINGLE_REDIRECT" {
|
||||
// SINGLEREDIRECT record types. Verify they are enabled.
|
||||
if !c.manageSingleRedirects {
|
||||
return errors.New("you must add 'manage_single_redirects: true' metadata to cloudflare provider to use CF_SINGLE__REDIRECT records")
|
||||
return errors.New("you must add 'manage_single_redirects: true' metadata to cloudflare provider to use CLOUDFLAREAPI_SINGLE_REDIRECT records")
|
||||
}
|
||||
} else if rec.Type == "CF_WORKER_ROUTE" {
|
||||
// CF_WORKER_ROUTE record types. Encode target as $PATTERN,$SCRIPT
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue