github.com/gophercloud/gophercloud@v1.11.0/openstack/baremetal/v1/ports/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/gophercloud/gophercloud/openstack/baremetal/v1/ports"
     7  	"github.com/gophercloud/gophercloud/pagination"
     8  	th "github.com/gophercloud/gophercloud/testhelper"
     9  	"github.com/gophercloud/gophercloud/testhelper/client"
    10  )
    11  
    12  func TestListDetailPorts(t *testing.T) {
    13  	th.SetupHTTP()
    14  	defer th.TeardownHTTP()
    15  	HandlePortListDetailSuccessfully(t)
    16  
    17  	pages := 0
    18  	err := ports.ListDetail(client.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
    19  		pages++
    20  
    21  		actual, err := ports.ExtractPorts(page)
    22  		if err != nil {
    23  			return false, err
    24  		}
    25  
    26  		if len(actual) != 2 {
    27  			t.Fatalf("Expected 2 ports, got %d", len(actual))
    28  		}
    29  		th.CheckDeepEquals(t, PortBar, actual[0])
    30  		th.CheckDeepEquals(t, PortFoo, actual[1])
    31  
    32  		return true, nil
    33  	})
    34  
    35  	th.AssertNoErr(t, err)
    36  
    37  	if pages != 1 {
    38  		t.Errorf("Expected 1 page, saw %d", pages)
    39  	}
    40  }
    41  
    42  func TestListPorts(t *testing.T) {
    43  	th.SetupHTTP()
    44  	defer th.TeardownHTTP()
    45  	HandlePortListSuccessfully(t)
    46  
    47  	pages := 0
    48  	err := ports.List(client.ServiceClient(), ports.ListOpts{}).EachPage(func(page pagination.Page) (bool, error) {
    49  		pages++
    50  
    51  		actual, err := ports.ExtractPorts(page)
    52  		if err != nil {
    53  			return false, err
    54  		}
    55  
    56  		if len(actual) != 2 {
    57  			t.Fatalf("Expected 2 ports, got %d", len(actual))
    58  		}
    59  		th.AssertEquals(t, "3abe3f36-9708-4e9f-b07e-0f898061d3a7", actual[0].UUID)
    60  		th.AssertEquals(t, "f2845e11-dbd4-4728-a8c0-30d19f48924a", actual[1].UUID)
    61  
    62  		return true, nil
    63  	})
    64  
    65  	th.AssertNoErr(t, err)
    66  
    67  	if pages != 1 {
    68  		t.Errorf("Expected 1 page, saw %d", pages)
    69  	}
    70  }
    71  
    72  func TestListOpts(t *testing.T) {
    73  	// Detail cannot take Fields
    74  	opts := ports.ListOpts{
    75  		Fields: []string{"uuid", "address"},
    76  	}
    77  
    78  	_, err := opts.ToPortListDetailQuery()
    79  	th.AssertEquals(t, err.Error(), "fields is not a valid option when getting a detailed listing of ports")
    80  
    81  	// Regular ListOpts can
    82  	query, err := opts.ToPortListQuery()
    83  	th.AssertEquals(t, query, "?fields=uuid&fields=address")
    84  	th.AssertNoErr(t, err)
    85  }
    86  
    87  func TestCreatePort(t *testing.T) {
    88  	th.SetupHTTP()
    89  	defer th.TeardownHTTP()
    90  	HandlePortCreationSuccessfully(t, SinglePortBody)
    91  
    92  	iTrue := true
    93  	actual, err := ports.Create(client.ServiceClient(), ports.CreateOpts{
    94  		NodeUUID:   "ddd06a60-b91e-4ab4-a6e7-56c0b25b6086",
    95  		Address:    "52:54:00:4d:87:e6",
    96  		PXEEnabled: &iTrue,
    97  	}).Extract()
    98  	th.AssertNoErr(t, err)
    99  
   100  	th.CheckDeepEquals(t, PortFoo, *actual)
   101  }
   102  
   103  func TestDeletePort(t *testing.T) {
   104  	th.SetupHTTP()
   105  	defer th.TeardownHTTP()
   106  	HandlePortDeletionSuccessfully(t)
   107  
   108  	res := ports.Delete(client.ServiceClient(), "3abe3f36-9708-4e9f-b07e-0f898061d3a7")
   109  	th.AssertNoErr(t, res.Err)
   110  }
   111  
   112  func TestGetPort(t *testing.T) {
   113  	th.SetupHTTP()
   114  	defer th.TeardownHTTP()
   115  	HandlePortGetSuccessfully(t)
   116  
   117  	c := client.ServiceClient()
   118  	actual, err := ports.Get(c, "f2845e11-dbd4-4728-a8c0-30d19f48924a").Extract()
   119  	if err != nil {
   120  		t.Fatalf("Unexpected Get error: %v", err)
   121  	}
   122  
   123  	th.CheckDeepEquals(t, PortFoo, *actual)
   124  }
   125  
   126  func TestUpdatePort(t *testing.T) {
   127  	th.SetupHTTP()
   128  	defer th.TeardownHTTP()
   129  	HandlePortUpdateSuccessfully(t, SinglePortBody)
   130  
   131  	c := client.ServiceClient()
   132  	actual, err := ports.Update(c, "f2845e11-dbd4-4728-a8c0-30d19f48924a", ports.UpdateOpts{
   133  		ports.UpdateOperation{
   134  			Op:    ports.ReplaceOp,
   135  			Path:  "/address",
   136  			Value: "22:22:22:22:22:22",
   137  		},
   138  	}).Extract()
   139  	if err != nil {
   140  		t.Fatalf("Unexpected Update error: %v", err)
   141  	}
   142  
   143  	th.CheckDeepEquals(t, PortFoo, *actual)
   144  }