// Copyright 2024 GoEdge CDN goedge.cdn@gmail.com. All rights reserved. Official site: https://goedge.cn . //go:build plus package dnsclients import ( "encoding/json" "errors" "github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes" "github.com/iwind/TeaGo/dbs" "github.com/iwind/TeaGo/logs" "github.com/iwind/TeaGo/maps" "testing" ) func TestBunnyNetProvider_GetDomains(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } t.Log(provider.GetDomains()) } func TestBunnyNetProvider_GetRecords(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } t.Log("===meloy.cn===") { records, err := provider.GetRecords("meloy.cn") if err != nil { t.Fatal(err) } if len(records) > 0 { t.Log(len(records), "records") } logs.PrintAsJSON(records, t) } t.Log("===goedge.cn===") { records, err := provider.GetRecords("goedge.cn") if err != nil { t.Fatal(err) } if len(records) > 0 { t.Log(len(records), "records") } logs.PrintAsJSON(records, t) } } func TestBunnyNetProvider_QueryRecord(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } { t.Log("== goedge.cn/A ==") record, err := provider.QueryRecord("goedge.cn", "", dnstypes.RecordTypeA) if err != nil { t.Fatal(err) } logs.PrintAsJSON(record, t) } { t.Log("== www.goedge.cn/A ==") record, err := provider.QueryRecord("goedge.cn", "www", dnstypes.RecordTypeA) if err != nil { t.Fatal(err) } logs.PrintAsJSON(record, t) } { t.Log("== cname.goedge.cn/CNAME ==") record, err := provider.QueryRecord("goedge.cn", "cname", dnstypes.RecordTypeCNAME) if err != nil { t.Fatal(err) } logs.PrintAsJSON(record, t) } { t.Log("== test.goedge.cn ==") record, err := provider.QueryRecord("goedge.cn", "test", dnstypes.RecordTypeCNAME) if err != nil { t.Fatal(err) } logs.PrintAsJSON(record, t) } } func TestBunnyNetProvider_QueryRecords(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } { t.Log("== www.goedge.cn/A ==") records, err := provider.QueryRecords("goedge.cn", "www", dnstypes.RecordTypeA) if err != nil { t.Fatal(err) } logs.PrintAsJSON(records, t) } { t.Log("== goedge.cn/A ==") records, err := provider.QueryRecords("goedge.cn", "", dnstypes.RecordTypeA) if err != nil { t.Fatal(err) } logs.PrintAsJSON(records, t) } } func TestBunnyNetProvider_AddRecord(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } { var newRecord = &dnstypes.Record{ Id: "", Name: "test", Type: dnstypes.RecordTypeA, Value: "1.2.3.4", Route: "DE", TTL: 300, } err = provider.AddRecord("goedge.cn", newRecord) if err != nil { t.Fatal(err) } t.Log("new record id:", newRecord.Id) } { var newRecord = &dnstypes.Record{ Id: "", Name: "test1", Type: dnstypes.RecordTypeCNAME, Value: "cdn.goedge.cn.", Route: "", } err = provider.AddRecord("goedge.cn", newRecord) if err != nil { t.Fatal(err) } t.Log("new record id:", newRecord.Id) } t.Log("ok") } func TestBunnyNetProvider_AddRecord_Route(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } { var newRecord = &dnstypes.Record{ Id: "", Name: "test", Type: dnstypes.RecordTypeA, Value: "1.2.3.4", Route: "HK", TTL: 300, } err = provider.AddRecord("goedge.cn", newRecord) if err != nil { t.Fatal(err) } t.Log("new record id:", newRecord.Id) } } func TestBunnyNetProvider_UpdateRecord(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } err = provider.UpdateRecord("goedge.cn", &dnstypes.Record{Id: "3792811"}, &dnstypes.Record{ Id: "", Name: "test", Type: dnstypes.RecordTypeA, Value: "1.1.1.1", Route: "AT", }) if err != nil { t.Fatal(err) } t.Log("ok") } func TestBunnyNetProvider_DeleteRecord(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } err = provider.DeleteRecord("goedge.cn", &dnstypes.Record{ Id: "3792789", }) if err != nil { t.Fatal(err) } t.Log("ok") } func TestBunnyNetProvider_GetRoutes(t *testing.T) { provider, err := testBunnyNetProvider() if err != nil { t.Fatal(err) } routes, err := provider.GetRoutes("goedge.cn") if err != nil { t.Fatal(err) } logs.PrintAsJSON(routes, t) } func testBunnyNetProvider() (ProviderInterface, error) { db, err := dbs.Default() if err != nil { return nil, err } one, err := db.FindOne("SELECT * FROM edgeDNSProviders WHERE type='bunnyNet' AND state=1 ORDER BY id DESC") if err != nil { return nil, err } if one == nil { return nil, errors.New("can not find providers with type 'bunnyNet'") } var apiParams = maps.Map{} err = json.Unmarshal([]byte(one.GetString("apiParams")), &apiParams) if err != nil { return nil, err } var provider = &BunnyNetProvider{} err = provider.Auth(apiParams) if err != nil { return nil, err } return provider, nil }