mirror of
				https://github.com/TeaOSLab/EdgeAPI.git
				synced 2025-11-04 07:50:25 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			188 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			188 lines
		
	
	
		
			3.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package dnsclients_test
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"testing"
 | 
						|
 | 
						|
	"github.com/TeaOSLab/EdgeAPI/internal/dnsclients"
 | 
						|
	"github.com/TeaOSLab/EdgeAPI/internal/dnsclients/dnstypes"
 | 
						|
	"github.com/iwind/TeaGo/dbs"
 | 
						|
	"github.com/iwind/TeaGo/logs"
 | 
						|
	"github.com/iwind/TeaGo/maps"
 | 
						|
)
 | 
						|
 | 
						|
const DNSPodTestDomain = "goedge.cloud"
 | 
						|
 | 
						|
func TestDNSPodProvider_GetDomains(t *testing.T) {
 | 
						|
	provider, _, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	domains, err := provider.GetDomains()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	t.Log(domains)
 | 
						|
}
 | 
						|
 | 
						|
func TestDNSPodProvider_GetRoutes(t *testing.T) {
 | 
						|
	provider, _, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	routes, err := provider.GetRoutes(DNSPodTestDomain)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	logs.PrintAsJSON(routes, t)
 | 
						|
}
 | 
						|
 | 
						|
func TestDNSPodProvider_GetRecords(t *testing.T) {
 | 
						|
	provider, _, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	records, err := provider.GetRecords(DNSPodTestDomain)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	for _, record := range records {
 | 
						|
		t.Log(record.Id, record.Type, record.Name, record.Value, record.Route)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestDNSPodProvider_AddRecord(t *testing.T) {
 | 
						|
	provider, isInternational, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	var route = "联通"
 | 
						|
	if isInternational {
 | 
						|
		route = "Default"
 | 
						|
	}
 | 
						|
 | 
						|
	var record = &dnstypes.Record{
 | 
						|
		Type:  dnstypes.RecordTypeCNAME,
 | 
						|
		Name:  "hello-forward",
 | 
						|
		Value: "hello." + DNSPodTestDomain,
 | 
						|
		Route: route,
 | 
						|
		TTL:   600,
 | 
						|
	}
 | 
						|
	err = provider.AddRecord(DNSPodTestDomain, record)
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	t.Log("ok, record id:", record.Id)
 | 
						|
}
 | 
						|
 | 
						|
func TestDNSPodProvider_QueryRecord(t *testing.T) {
 | 
						|
	provider, _, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	{
 | 
						|
		record, err := provider.QueryRecord(DNSPodTestDomain, "hello-forward", dnstypes.RecordTypeCNAME)
 | 
						|
		if err != nil {
 | 
						|
			t.Fatal(err)
 | 
						|
		}
 | 
						|
		t.Log(record)
 | 
						|
	}
 | 
						|
 | 
						|
	{
 | 
						|
		record, err := provider.QueryRecord(DNSPodTestDomain, "hello-forward2", dnstypes.RecordTypeCNAME)
 | 
						|
		if err != nil {
 | 
						|
			t.Fatal(err)
 | 
						|
		}
 | 
						|
		t.Log(record)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestDNSPodProvider_QueryRecords(t *testing.T) {
 | 
						|
	provider, _, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	{
 | 
						|
		records, err := provider.QueryRecords(DNSPodTestDomain, "hello-forward", dnstypes.RecordTypeCNAME)
 | 
						|
		if err != nil {
 | 
						|
			t.Fatal(err)
 | 
						|
		}
 | 
						|
		logs.PrintAsJSON(records, t)
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func TestDNSPodProvider_UpdateRecord(t *testing.T) {
 | 
						|
	provider, isInternational, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	var route = "联通"
 | 
						|
	var id = "1224507933"
 | 
						|
	if isInternational {
 | 
						|
		route = "Default"
 | 
						|
		id = "28507333"
 | 
						|
	}
 | 
						|
 | 
						|
	err = provider.UpdateRecord(DNSPodTestDomain, &dnstypes.Record{
 | 
						|
		Id: id,
 | 
						|
	}, &dnstypes.Record{
 | 
						|
		Type:  dnstypes.RecordTypeA,
 | 
						|
		Name:  "hello",
 | 
						|
		Value: "192.168.1.102",
 | 
						|
		Route: route,
 | 
						|
	})
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	t.Log("ok")
 | 
						|
}
 | 
						|
 | 
						|
func TestDNSPodProvider_DeleteRecord(t *testing.T) {
 | 
						|
	provider, isInternational, err := testDNSPodProvider()
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
 | 
						|
	var id = "1224507933"
 | 
						|
	if isInternational {
 | 
						|
		id = "28507333"
 | 
						|
	}
 | 
						|
	err = provider.DeleteRecord(DNSPodTestDomain, &dnstypes.Record{
 | 
						|
		Id: id,
 | 
						|
	})
 | 
						|
	if err != nil {
 | 
						|
		t.Fatal(err)
 | 
						|
	}
 | 
						|
	t.Log("ok")
 | 
						|
}
 | 
						|
 | 
						|
func testDNSPodProvider() (provider dnsclients.ProviderInterface, isInternational bool, err error) {
 | 
						|
	dbs.NotifyReady()
 | 
						|
 | 
						|
	db, err := dbs.Default()
 | 
						|
	if err != nil {
 | 
						|
		return nil, false, err
 | 
						|
	}
 | 
						|
	one, err := db.FindOne("SELECT * FROM edgeDNSProviders WHERE type='dnspod' AND id='14' ORDER BY id DESC")
 | 
						|
	if err != nil {
 | 
						|
		return nil, false, err
 | 
						|
	}
 | 
						|
	var apiParams = maps.Map{}
 | 
						|
	err = json.Unmarshal([]byte(one.GetString("apiParams")), &apiParams)
 | 
						|
	if err != nil {
 | 
						|
		return nil, false, err
 | 
						|
	}
 | 
						|
	provider = &dnsclients.DNSPodProvider{
 | 
						|
		ProviderId: one.GetInt64("id"),
 | 
						|
	}
 | 
						|
	err = provider.Auth(apiParams)
 | 
						|
	if err != nil {
 | 
						|
		return nil, false, err
 | 
						|
	}
 | 
						|
	return provider, apiParams.GetString("region") == "international", nil
 | 
						|
}
 |