github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/sharedfilesystems/v2/sharenetworks_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/sharedfilesystems/v2/sharenetworks"
    12  	"github.com/gophercloud/gophercloud/pagination"
    13  	th "github.com/gophercloud/gophercloud/testhelper"
    14  )
    15  
    16  func TestShareNetworkCreateDestroy(t *testing.T) {
    17  	client, err := clients.NewSharedFileSystemV2Client()
    18  	if err != nil {
    19  		t.Fatalf("Unable to create shared file system client: %v", err)
    20  	}
    21  
    22  	shareNetwork, err := CreateShareNetwork(t, client)
    23  	if err != nil {
    24  		t.Fatalf("Unable to create share network: %v", err)
    25  	}
    26  
    27  	newShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract()
    28  	if err != nil {
    29  		t.Errorf("Unable to retrieve shareNetwork: %v", err)
    30  	}
    31  
    32  	if newShareNetwork.Name != shareNetwork.Name {
    33  		t.Fatalf("Share network name was expeted to be: %s", shareNetwork.Name)
    34  	}
    35  
    36  	if newShareNetwork.Description != shareNetwork.Description {
    37  		t.Fatalf("Share network description was expeted to be: %s", shareNetwork.Description)
    38  	}
    39  
    40  	tools.PrintResource(t, shareNetwork)
    41  
    42  	defer DeleteShareNetwork(t, client, shareNetwork.ID)
    43  }
    44  
    45  // Create a share network and update the name and description. Get the share
    46  // network and verify that the name and description have been updated
    47  func TestShareNetworkUpdate(t *testing.T) {
    48  	client, err := clients.NewSharedFileSystemV2Client()
    49  	if err != nil {
    50  		t.Fatalf("Unable to create shared file system client: %v", err)
    51  	}
    52  
    53  	shareNetwork, err := CreateShareNetwork(t, client)
    54  	if err != nil {
    55  		t.Fatalf("Unable to create share network: %v", err)
    56  	}
    57  
    58  	expectedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract()
    59  	if err != nil {
    60  		t.Errorf("Unable to retrieve shareNetwork: %v", err)
    61  	}
    62  
    63  	name := "NewName"
    64  	description := ""
    65  	options := sharenetworks.UpdateOpts{
    66  		Name:        &name,
    67  		Description: &description,
    68  	}
    69  
    70  	expectedShareNetwork.Name = name
    71  	expectedShareNetwork.Description = description
    72  
    73  	_, err = sharenetworks.Update(client, shareNetwork.ID, options).Extract()
    74  	if err != nil {
    75  		t.Errorf("Unable to update shareNetwork: %v", err)
    76  	}
    77  
    78  	updatedShareNetwork, err := sharenetworks.Get(client, shareNetwork.ID).Extract()
    79  	if err != nil {
    80  		t.Errorf("Unable to retrieve shareNetwork: %v", err)
    81  	}
    82  
    83  	// Update time has to be set in order to get the assert equal to pass
    84  	expectedShareNetwork.UpdatedAt = updatedShareNetwork.UpdatedAt
    85  
    86  	th.CheckDeepEquals(t, expectedShareNetwork, updatedShareNetwork)
    87  
    88  	tools.PrintResource(t, shareNetwork)
    89  
    90  	defer DeleteShareNetwork(t, client, shareNetwork.ID)
    91  }
    92  
    93  func TestShareNetworkListDetail(t *testing.T) {
    94  	client, err := clients.NewSharedFileSystemV2Client()
    95  	if err != nil {
    96  		t.Fatalf("Unable to create a shared file system client: %v", err)
    97  	}
    98  
    99  	allPages, err := sharenetworks.ListDetail(client, sharenetworks.ListOpts{}).AllPages()
   100  	if err != nil {
   101  		t.Fatalf("Unable to retrieve share networks: %v", err)
   102  	}
   103  
   104  	allShareNetworks, err := sharenetworks.ExtractShareNetworks(allPages)
   105  	if err != nil {
   106  		t.Fatalf("Unable to extract share networks: %v", err)
   107  	}
   108  
   109  	for _, shareNetwork := range allShareNetworks {
   110  		tools.PrintResource(t, &shareNetwork)
   111  	}
   112  }
   113  
   114  // The test creates 2 shared networks and verifies that only the one(s) with
   115  // a particular name are being listed
   116  func TestShareNetworkListFiltering(t *testing.T) {
   117  	client, err := clients.NewSharedFileSystemV2Client()
   118  	if err != nil {
   119  		t.Fatalf("Unable to create a shared file system client: %v", err)
   120  	}
   121  
   122  	shareNetwork, err := CreateShareNetwork(t, client)
   123  	if err != nil {
   124  		t.Fatalf("Unable to create share network: %v", err)
   125  	}
   126  	defer DeleteShareNetwork(t, client, shareNetwork.ID)
   127  
   128  	shareNetwork, err = CreateShareNetwork(t, client)
   129  	if err != nil {
   130  		t.Fatalf("Unable to create share network: %v", err)
   131  	}
   132  	defer DeleteShareNetwork(t, client, shareNetwork.ID)
   133  
   134  	options := sharenetworks.ListOpts{
   135  		Name: shareNetwork.Name,
   136  	}
   137  
   138  	allPages, err := sharenetworks.ListDetail(client, options).AllPages()
   139  	if err != nil {
   140  		t.Fatalf("Unable to retrieve share networks: %v", err)
   141  	}
   142  
   143  	allShareNetworks, err := sharenetworks.ExtractShareNetworks(allPages)
   144  	if err != nil {
   145  		t.Fatalf("Unable to extract share networks: %v", err)
   146  	}
   147  
   148  	for _, listedShareNetwork := range allShareNetworks {
   149  		if listedShareNetwork.Name != shareNetwork.Name {
   150  			t.Fatalf("The name of the share network was expected to be %s", shareNetwork.Name)
   151  		}
   152  		tools.PrintResource(t, &listedShareNetwork)
   153  	}
   154  }
   155  
   156  func TestShareNetworkListPagination(t *testing.T) {
   157  	client, err := clients.NewSharedFileSystemV2Client()
   158  	if err != nil {
   159  		t.Fatalf("Unable to create a shared file system client: %v", err)
   160  	}
   161  
   162  	shareNetwork, err := CreateShareNetwork(t, client)
   163  	if err != nil {
   164  		t.Fatalf("Unable to create share network: %v", err)
   165  	}
   166  	defer DeleteShareNetwork(t, client, shareNetwork.ID)
   167  
   168  	shareNetwork, err = CreateShareNetwork(t, client)
   169  	if err != nil {
   170  		t.Fatalf("Unable to create share network: %v", err)
   171  	}
   172  	defer DeleteShareNetwork(t, client, shareNetwork.ID)
   173  
   174  	count := 0
   175  
   176  	err = sharenetworks.ListDetail(client, sharenetworks.ListOpts{Offset: 0, Limit: 1}).EachPage(func(page pagination.Page) (bool, error) {
   177  		count++
   178  		_, err := sharenetworks.ExtractShareNetworks(page)
   179  		if err != nil {
   180  			t.Fatalf("Failed to extract share networks: %v", err)
   181  			return false, err
   182  		}
   183  
   184  		return true, nil
   185  	})
   186  	if err != nil {
   187  		t.Fatalf("Unable to retrieve share networks: %v", err)
   188  	}
   189  
   190  	if count < 2 {
   191  		t.Fatal("Expected to get at least 2 pages")
   192  	}
   193  
   194  }
   195  
   196  func TestShareNetworkAddRemoveSecurityService(t *testing.T) {
   197  	client, err := clients.NewSharedFileSystemV2Client()
   198  	if err != nil {
   199  		t.Fatalf("Unable to create a shared file system client: %v", err)
   200  	}
   201  
   202  	securityService, err := CreateSecurityService(t, client)
   203  	if err != nil {
   204  		t.Fatalf("Unable to create security service: %v", err)
   205  	}
   206  	defer DeleteSecurityService(t, client, securityService)
   207  
   208  	shareNetwork, err := CreateShareNetwork(t, client)
   209  	if err != nil {
   210  		t.Fatalf("Unable to create share network: %v", err)
   211  	}
   212  	defer DeleteShareNetwork(t, client, shareNetwork.ID)
   213  
   214  	options := sharenetworks.AddSecurityServiceOpts{
   215  		SecurityServiceID: securityService.ID,
   216  	}
   217  
   218  	_, err = sharenetworks.AddSecurityService(client, shareNetwork.ID, options).Extract()
   219  	if err != nil {
   220  		t.Errorf("Unable to add security service: %v", err)
   221  	}
   222  
   223  	removeOptions := sharenetworks.RemoveSecurityServiceOpts{
   224  		SecurityServiceID: securityService.ID,
   225  	}
   226  
   227  	_, err = sharenetworks.RemoveSecurityService(client, shareNetwork.ID, removeOptions).Extract()
   228  	if err != nil {
   229  		t.Errorf("Unable to remove security service: %v", err)
   230  	}
   231  
   232  	tools.PrintResource(t, shareNetwork)
   233  }