github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/networking/v2/extensions/testing/delegate_test.go (about) 1 package testing 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 "testing" 8 9 common "github.com/vnpaycloud-console/gophercloud/v2/openstack/common/extensions" 10 fake "github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/common" 11 "github.com/vnpaycloud-console/gophercloud/v2/openstack/networking/v2/extensions" 12 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 13 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 14 ) 15 16 func TestList(t *testing.T) { 17 th.SetupHTTP() 18 defer th.TeardownHTTP() 19 20 th.Mux.HandleFunc("/v2.0/extensions", func(w http.ResponseWriter, r *http.Request) { 21 th.TestMethod(t, r, "GET") 22 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 23 24 w.Header().Add("Content-Type", "application/json") 25 26 fmt.Fprint(w, ` 27 { 28 "extensions": [ 29 { 30 "updated": "2013-01-20T00:00:00-00:00", 31 "name": "Neutron Service Type Management", 32 "links": [], 33 "namespace": "http://docs.openstack.org/ext/neutron/service-type/api/v1.0", 34 "alias": "service-type", 35 "description": "API for retrieving service providers for Neutron advanced services" 36 } 37 ] 38 } 39 `) 40 }) 41 42 count := 0 43 44 err := extensions.List(fake.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 45 count++ 46 actual, err := extensions.ExtractExtensions(page) 47 if err != nil { 48 t.Errorf("Failed to extract extensions: %v", err) 49 } 50 51 expected := []extensions.Extension{ 52 { 53 Extension: common.Extension{ 54 Updated: "2013-01-20T00:00:00-00:00", 55 Name: "Neutron Service Type Management", 56 Links: []any{}, 57 Namespace: "http://docs.openstack.org/ext/neutron/service-type/api/v1.0", 58 Alias: "service-type", 59 Description: "API for retrieving service providers for Neutron advanced services", 60 }, 61 }, 62 } 63 64 th.AssertDeepEquals(t, expected, actual) 65 66 return true, nil 67 }) 68 th.AssertNoErr(t, err) 69 70 if count != 1 { 71 t.Errorf("Expected 1 page, got %d", count) 72 } 73 } 74 75 func TestGet(t *testing.T) { 76 th.SetupHTTP() 77 defer th.TeardownHTTP() 78 79 th.Mux.HandleFunc("/v2.0/extensions/agent", func(w http.ResponseWriter, r *http.Request) { 80 th.TestMethod(t, r, "GET") 81 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 82 83 w.Header().Add("Content-Type", "application/json") 84 w.WriteHeader(http.StatusOK) 85 86 fmt.Fprint(w, ` 87 { 88 "extension": { 89 "updated": "2013-02-03T10:00:00-00:00", 90 "name": "agent", 91 "links": [], 92 "namespace": "http://docs.openstack.org/ext/agent/api/v2.0", 93 "alias": "agent", 94 "description": "The agent management extension." 95 } 96 } 97 `) 98 }) 99 100 ext, err := extensions.Get(context.TODO(), fake.ServiceClient(), "agent").Extract() 101 th.AssertNoErr(t, err) 102 103 th.AssertEquals(t, ext.Updated, "2013-02-03T10:00:00-00:00") 104 th.AssertEquals(t, ext.Name, "agent") 105 th.AssertEquals(t, ext.Namespace, "http://docs.openstack.org/ext/agent/api/v2.0") 106 th.AssertEquals(t, ext.Alias, "agent") 107 th.AssertEquals(t, ext.Description, "The agent management extension.") 108 }