github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/dns/v2/recordsets/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "context" 5 "encoding/json" 6 "testing" 7 8 "github.com/vnpaycloud-console/gophercloud/v2/openstack/dns/v2/recordsets" 9 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 10 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 11 "github.com/vnpaycloud-console/gophercloud/v2/testhelper/client" 12 ) 13 14 func TestListByZone(t *testing.T) { 15 th.SetupHTTP() 16 defer th.TeardownHTTP() 17 HandleListByZoneSuccessfully(t) 18 19 count := 0 20 err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", nil).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 21 count++ 22 actual, err := recordsets.ExtractRecordSets(page) 23 th.AssertNoErr(t, err) 24 th.CheckDeepEquals(t, ExpectedRecordSetSlice, actual) 25 26 return true, nil 27 }) 28 th.AssertNoErr(t, err) 29 th.CheckEquals(t, 1, count) 30 } 31 32 func TestListByZoneLimited(t *testing.T) { 33 th.SetupHTTP() 34 defer th.TeardownHTTP() 35 HandleListByZoneSuccessfully(t) 36 37 count := 0 38 listOpts := recordsets.ListOpts{ 39 Limit: 1, 40 Marker: "f7b10e9b-0cae-4a91-b162-562bc6096648", 41 } 42 err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", listOpts).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 43 count++ 44 actual, err := recordsets.ExtractRecordSets(page) 45 th.AssertNoErr(t, err) 46 th.CheckDeepEquals(t, ExpectedRecordSetSliceLimited, actual) 47 48 return true, nil 49 }) 50 th.AssertNoErr(t, err) 51 th.CheckEquals(t, 1, count) 52 } 53 54 func TestListByZoneAllPages(t *testing.T) { 55 th.SetupHTTP() 56 defer th.TeardownHTTP() 57 HandleListByZoneSuccessfully(t) 58 59 allPages, err := recordsets.ListByZone(client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", nil).AllPages(context.TODO()) 60 th.AssertNoErr(t, err) 61 allRecordSets, err := recordsets.ExtractRecordSets(allPages) 62 th.AssertNoErr(t, err) 63 th.CheckEquals(t, 2, len(allRecordSets)) 64 } 65 66 func TestGet(t *testing.T) { 67 th.SetupHTTP() 68 defer th.TeardownHTTP() 69 HandleGetSuccessfully(t) 70 71 actual, err := recordsets.Get(context.TODO(), client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", "f7b10e9b-0cae-4a91-b162-562bc6096648").Extract() 72 th.AssertNoErr(t, err) 73 th.CheckDeepEquals(t, &FirstRecordSet, actual) 74 } 75 76 func TestNextPageURL(t *testing.T) { 77 var page recordsets.RecordSetPage 78 var body map[string]any 79 err := json.Unmarshal([]byte(NextPageRequest), &body) 80 if err != nil { 81 t.Fatalf("Error unmarshaling data into page body: %v", err) 82 } 83 page.Body = body 84 expected := "http://127.0.0.1:9001/v2/zones/2150b1bf-dee2-4221-9d85-11f7886fb15f/recordsets?limit=1&marker=f7b10e9b-0cae-4a91-b162-562bc6096648" 85 actual, err := page.NextPageURL() 86 th.AssertNoErr(t, err) 87 th.CheckEquals(t, expected, actual) 88 } 89 90 func TestCreate(t *testing.T) { 91 th.SetupHTTP() 92 defer th.TeardownHTTP() 93 HandleCreateSuccessfully(t) 94 95 createOpts := recordsets.CreateOpts{ 96 Name: "example.org.", 97 Type: "A", 98 TTL: 3600, 99 Description: "This is an example record set.", 100 Records: []string{"10.1.0.2"}, 101 } 102 103 actual, err := recordsets.Create(context.TODO(), client.ServiceClient(), "2150b1bf-dee2-4221-9d85-11f7886fb15f", createOpts).Extract() 104 th.AssertNoErr(t, err) 105 th.CheckDeepEquals(t, &CreatedRecordSet, actual) 106 } 107 108 func TestUpdate(t *testing.T) { 109 th.SetupHTTP() 110 defer th.TeardownHTTP() 111 HandleUpdateSuccessfully(t) 112 113 var description = "Updated description" 114 ttl := 0 115 updateOpts := recordsets.UpdateOpts{ 116 TTL: &ttl, 117 Description: &description, 118 Records: []string{"10.1.0.2", "10.1.0.3"}, 119 } 120 121 UpdatedRecordSet := CreatedRecordSet 122 UpdatedRecordSet.Status = "PENDING" 123 UpdatedRecordSet.Action = "UPDATE" 124 UpdatedRecordSet.Description = "Updated description" 125 UpdatedRecordSet.Records = []string{"10.1.0.2", "10.1.0.3"} 126 UpdatedRecordSet.Version = 2 127 128 actual, err := recordsets.Update(context.TODO(), client.ServiceClient(), UpdatedRecordSet.ZoneID, UpdatedRecordSet.ID, updateOpts).Extract() 129 th.AssertNoErr(t, err) 130 th.CheckDeepEquals(t, &UpdatedRecordSet, actual) 131 } 132 133 func TestDelete(t *testing.T) { 134 th.SetupHTTP() 135 defer th.TeardownHTTP() 136 HandleDeleteSuccessfully(t) 137 138 DeletedRecordSet := CreatedRecordSet 139 DeletedRecordSet.Status = "PENDING" 140 DeletedRecordSet.Action = "UPDATE" 141 DeletedRecordSet.Description = "Updated description" 142 DeletedRecordSet.Records = []string{"10.1.0.2", "10.1.0.3"} 143 DeletedRecordSet.Version = 2 144 145 err := recordsets.Delete(context.TODO(), client.ServiceClient(), DeletedRecordSet.ZoneID, DeletedRecordSet.ID).ExtractErr() 146 th.AssertNoErr(t, err) 147 //th.CheckDeepEquals(t, &DeletedZone, actual) 148 }