github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/internal/acceptance/openstack/dns/v2/recordsets_test.go (about) 1 //go:build acceptance || dns || recordsets 2 3 package v2 4 5 import ( 6 "context" 7 "testing" 8 9 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/clients" 10 "github.com/vnpaycloud-console/gophercloud/v2/internal/acceptance/tools" 11 "github.com/vnpaycloud-console/gophercloud/v2/openstack/dns/v2/recordsets" 12 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 13 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 14 ) 15 16 func TestRecordSetsListByZone(t *testing.T) { 17 client, err := clients.NewDNSV2Client() 18 th.AssertNoErr(t, err) 19 20 zone, err := CreateZone(t, client) 21 th.AssertNoErr(t, err) 22 defer DeleteZone(t, client, zone) 23 24 allPages, err := recordsets.ListByZone(client, zone.ID, nil).AllPages(context.TODO()) 25 th.AssertNoErr(t, err) 26 27 allRecordSets, err := recordsets.ExtractRecordSets(allPages) 28 th.AssertNoErr(t, err) 29 30 var found bool 31 for _, recordset := range allRecordSets { 32 tools.PrintResource(t, &recordset) 33 34 if recordset.ZoneID == zone.ID { 35 found = true 36 } 37 } 38 39 th.AssertEquals(t, found, true) 40 41 listOpts := recordsets.ListOpts{ 42 Limit: 1, 43 } 44 45 pager := recordsets.ListByZone(client, zone.ID, listOpts) 46 err = pager.EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 47 rr, err := recordsets.ExtractRecordSets(page) 48 th.AssertNoErr(t, err) 49 th.AssertEquals(t, len(rr), 1) 50 return true, nil 51 }) 52 th.AssertNoErr(t, err) 53 } 54 55 func TestRecordSetsCRUD(t *testing.T) { 56 client, err := clients.NewDNSV2Client() 57 th.AssertNoErr(t, err) 58 59 zone, err := CreateZone(t, client) 60 th.AssertNoErr(t, err) 61 defer DeleteZone(t, client, zone) 62 63 tools.PrintResource(t, &zone) 64 65 rs, err := CreateRecordSet(t, client, zone) 66 th.AssertNoErr(t, err) 67 defer DeleteRecordSet(t, client, rs) 68 69 tools.PrintResource(t, &rs) 70 71 description := "" 72 updateOpts := recordsets.UpdateOpts{ 73 Description: &description, 74 } 75 76 newRS, err := recordsets.Update(context.TODO(), client, rs.ZoneID, rs.ID, updateOpts).Extract() 77 th.AssertNoErr(t, err) 78 79 tools.PrintResource(t, &newRS) 80 81 th.AssertEquals(t, newRS.Description, description) 82 83 records := []string{"10.1.0.3"} 84 updateOpts = recordsets.UpdateOpts{ 85 Records: records, 86 } 87 88 newRS, err = recordsets.Update(context.TODO(), client, rs.ZoneID, rs.ID, updateOpts).Extract() 89 th.AssertNoErr(t, err) 90 91 tools.PrintResource(t, &newRS) 92 93 th.AssertDeepEquals(t, newRS.Records, records) 94 th.AssertEquals(t, newRS.TTL, 3600) 95 96 ttl := 0 97 updateOpts = recordsets.UpdateOpts{ 98 TTL: &ttl, 99 } 100 101 newRS, err = recordsets.Update(context.TODO(), client, rs.ZoneID, rs.ID, updateOpts).Extract() 102 th.AssertNoErr(t, err) 103 104 tools.PrintResource(t, &newRS) 105 106 th.AssertDeepEquals(t, newRS.Records, records) 107 th.AssertEquals(t, newRS.TTL, ttl) 108 }