package vultr import ( "errors" "net" "testing" "dnsupdater/dns" "github.com/vultr/govultr/v3" "github.com/stretchr/testify/assert" ) func TestVultrService_List(t *testing.T) { expected := dns.RecordList{ { Id: "656939ee-f942-4ce2-af1d-3bd68c764e96", Name: "sub1", Ip: net.IPv4(201, 110, 66, 72), }, { Id: "c80118f4-f04c-4ad2-8ec2-16eb15cc8aca", Name: "sub2", Ip: net.IPv4(242, 124, 218, 187), }, } service := Service{ api: mock{ t: t, ListReturn: map[string][]govultr.DomainRecord{ "example.com": { { ID: "656939ee-f942-4ce2-af1d-3bd68c764e96", Type: "A", Name: "sub1", Data: "201.110.66.72", Priority: 2, TTL: 1800, }, { ID: "c80118f4-f04c-4ad2-8ec2-16eb15cc8aca", Type: "A", Name: "sub2", Data: "242.124.218.187", Priority: 1, TTL: 1800, }, }, }, }, } records, err := service.List("example.com") assert.NoError(t, err) assert.Equal(t, expected, records) // Fetch invalid _, err = service.List("noexists.com") assert.Error(t, err) } func TestVultrService_Update(t *testing.T) { mockApi := mock{ t: t, ListReturn: map[string][]govultr.DomainRecord{ "example.com": { { ID: "6cabe6ba-1ea1-405d-b66d-cd56ecac45ce", Type: "A", Name: "www", Data: "80.17.42.157", Priority: 10, TTL: 360, }, }, }, } service := Service{ api: &mockApi, } err := service.Update("example.com", "6cabe6ba-1ea1-405d-b66d-cd56ecac45ce", net.IPv4(221, 135, 170, 186).String()) assert.NoError(t, err) mockApi.updateError = errors.New("Error") err = service.Update("invalid.com", "332b40fc-0ddf-436c-a0c7-46586b928ac2", net.IPv4(72, 82, 118, 186).String()) assert.Error(t, err) err = service.Update("example.com", "6cabe6ba-1ea1-405d-b66d-cd56ecac45ce", net.IPv4(221, 135, 170, 186).String()) assert.Error(t, err) }