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  }