github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/dns/v2/recordsets_test.go (about) 1 //go:build acceptance 2 // +build acceptance 3 4 package v2 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 11 "github.com/gophercloud/gophercloud/openstack/dns/v2/recordsets" 12 "github.com/gophercloud/gophercloud/pagination" 13 th "github.com/gophercloud/gophercloud/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() 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 err = recordsets.ListByZone(client, zone.ID, listOpts).EachPage( 46 func(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 ) 53 th.AssertNoErr(t, err) 54 } 55 56 func TestRecordSetsCRUD(t *testing.T) { 57 client, err := clients.NewDNSV2Client() 58 th.AssertNoErr(t, err) 59 60 zone, err := CreateZone(t, client) 61 th.AssertNoErr(t, err) 62 defer DeleteZone(t, client, zone) 63 64 tools.PrintResource(t, &zone) 65 66 rs, err := CreateRecordSet(t, client, zone) 67 th.AssertNoErr(t, err) 68 defer DeleteRecordSet(t, client, rs) 69 70 tools.PrintResource(t, &rs) 71 72 description := "" 73 updateOpts := recordsets.UpdateOpts{ 74 Description: &description, 75 } 76 77 newRS, err := recordsets.Update(client, rs.ZoneID, rs.ID, updateOpts).Extract() 78 th.AssertNoErr(t, err) 79 80 tools.PrintResource(t, &newRS) 81 82 th.AssertEquals(t, newRS.Description, description) 83 84 records := []string{"10.1.0.3"} 85 updateOpts = recordsets.UpdateOpts{ 86 Records: records, 87 } 88 89 newRS, err = recordsets.Update(client, rs.ZoneID, rs.ID, updateOpts).Extract() 90 th.AssertNoErr(t, err) 91 92 tools.PrintResource(t, &newRS) 93 94 th.AssertDeepEquals(t, newRS.Records, records) 95 th.AssertEquals(t, newRS.TTL, 3600) 96 97 ttl := 0 98 updateOpts = recordsets.UpdateOpts{ 99 TTL: &ttl, 100 } 101 102 newRS, err = recordsets.Update(client, rs.ZoneID, rs.ID, updateOpts).Extract() 103 th.AssertNoErr(t, err) 104 105 tools.PrintResource(t, &newRS) 106 107 th.AssertDeepEquals(t, newRS.Records, records) 108 th.AssertEquals(t, newRS.TTL, ttl) 109 }