github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/sharedfilesystems/v2/replicas/testing/request_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  	"time"
     7  
     8  	"github.com/vnpaycloud-console/gophercloud/v2"
     9  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/sharedfilesystems/v2/replicas"
    10  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    11  	"github.com/vnpaycloud-console/gophercloud/v2/testhelper/client"
    12  )
    13  
    14  func getClient(microVersion string) *gophercloud.ServiceClient {
    15  	c := client.ServiceClient()
    16  	c.Type = "sharev2"
    17  	c.Microversion = microVersion
    18  	return c
    19  }
    20  
    21  func TestCreate(t *testing.T) {
    22  	th.SetupHTTP()
    23  	defer th.TeardownHTTP()
    24  
    25  	MockCreateResponse(t)
    26  
    27  	options := &replicas.CreateOpts{
    28  		ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
    29  		AvailabilityZone: "zone-1",
    30  	}
    31  	actual, err := replicas.Create(context.TODO(), getClient("2.11"), options).Extract()
    32  
    33  	expected := &replicas.Replica{
    34  		ID:               "3b9c33e8-b136-45c6-84a6-019c8db1d550",
    35  		ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
    36  		AvailabilityZone: "zone-1",
    37  		Status:           "creating",
    38  		ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
    39  		CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC), //"2023-05-26T12:32:56.391337",
    40  	}
    41  
    42  	th.AssertNoErr(t, err)
    43  	th.AssertDeepEquals(t, expected, actual)
    44  }
    45  
    46  func TestDelete(t *testing.T) {
    47  	th.SetupHTTP()
    48  	defer th.TeardownHTTP()
    49  
    50  	MockDeleteResponse(t)
    51  
    52  	result := replicas.Delete(context.TODO(), getClient("2.11"), replicaID)
    53  	th.AssertNoErr(t, result.Err)
    54  }
    55  
    56  func TestForceDeleteSuccess(t *testing.T) {
    57  	th.SetupHTTP()
    58  	defer th.TeardownHTTP()
    59  
    60  	MockForceDeleteResponse(t)
    61  
    62  	err := replicas.ForceDelete(context.TODO(), getClient("2.11"), replicaID).ExtractErr()
    63  	th.AssertNoErr(t, err)
    64  }
    65  
    66  func TestGet(t *testing.T) {
    67  	th.SetupHTTP()
    68  	defer th.TeardownHTTP()
    69  
    70  	MockGetResponse(t)
    71  
    72  	actual, err := replicas.Get(context.TODO(), getClient("2.11"), replicaID).Extract()
    73  
    74  	expected := &replicas.Replica{
    75  		AvailabilityZone: "zone-1",
    76  		ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
    77  		ShareServerID:    "5ccc1b0c-334a-4e46-81e6-b52e03223060",
    78  		ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
    79  		ID:               replicaID,
    80  		Status:           "available",
    81  		State:            "active",
    82  		CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC),
    83  		UpdatedAt:        time.Date(2023, time.May, 26, 12, 33, 28, 265716000, time.UTC),
    84  	}
    85  
    86  	th.AssertNoErr(t, err)
    87  	th.AssertDeepEquals(t, expected, actual)
    88  }
    89  
    90  func TestList(t *testing.T) {
    91  	th.SetupHTTP()
    92  	defer th.TeardownHTTP()
    93  
    94  	MockListResponse(t)
    95  
    96  	listOpts := &replicas.ListOpts{
    97  		ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
    98  	}
    99  	allPages, err := replicas.List(getClient("2.11"), listOpts).AllPages(context.TODO())
   100  	th.AssertNoErr(t, err)
   101  
   102  	actual, err := replicas.ExtractReplicas(allPages)
   103  	th.AssertNoErr(t, err)
   104  
   105  	expected := []replicas.Replica{
   106  		{
   107  			ID:      replicaID,
   108  			ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   109  			Status:  "available",
   110  			State:   "active",
   111  		},
   112  		{
   113  			ID:      "4b70c2e2-eec7-4699-880d-4da9051ca162",
   114  			ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   115  			Status:  "available",
   116  			State:   "out_of_sync",
   117  		},
   118  		{
   119  			ID:      "920bb037-bdd7-48a1-98f0-1aa1787ca3eb",
   120  			ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   121  			Status:  "available",
   122  			State:   "in_sync",
   123  		},
   124  	}
   125  
   126  	th.AssertDeepEquals(t, expected, actual)
   127  }
   128  
   129  func TestListDetail(t *testing.T) {
   130  	th.SetupHTTP()
   131  	defer th.TeardownHTTP()
   132  
   133  	MockListDetailResponse(t)
   134  
   135  	listOpts := &replicas.ListOpts{
   136  		ShareID: "65a34695-f9e5-4eea-b48d-a0b261d82943",
   137  	}
   138  	allPages, err := replicas.ListDetail(getClient("2.11"), listOpts).AllPages(context.TODO())
   139  	th.AssertNoErr(t, err)
   140  
   141  	actual, err := replicas.ExtractReplicas(allPages)
   142  	th.AssertNoErr(t, err)
   143  
   144  	expected := []replicas.Replica{
   145  		{
   146  			AvailabilityZone: "zone-1",
   147  			ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
   148  			ShareServerID:    "5ccc1b0c-334a-4e46-81e6-b52e03223060",
   149  			ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
   150  			ID:               replicaID,
   151  			Status:           "available",
   152  			State:            "active",
   153  			CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 56, 391337000, time.UTC),
   154  			UpdatedAt:        time.Date(2023, time.May, 26, 12, 33, 28, 265716000, time.UTC),
   155  		},
   156  		{
   157  			AvailabilityZone: "zone-2",
   158  			ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
   159  			ShareServerID:    "81aa586e-3a03-4f92-98bd-807d87a61c1a",
   160  			ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
   161  			ID:               "4b70c2e2-eec7-4699-880d-4da9051ca162",
   162  			Status:           "available",
   163  			State:            "out_of_sync",
   164  			CreatedAt:        time.Date(2023, time.May, 26, 11, 59, 38, 313089000, time.UTC),
   165  			UpdatedAt:        time.Date(2023, time.May, 26, 12, 00, 04, 321081000, time.UTC),
   166  		},
   167  		{
   168  			AvailabilityZone: "zone-1",
   169  			ShareNetworkID:   "ca0163c8-3941-4420-8b01-41517e19e366",
   170  			ShareServerID:    "b87ea601-7d4c-47f3-8956-6876b7a6b6db",
   171  			ShareID:          "65a34695-f9e5-4eea-b48d-a0b261d82943",
   172  			ID:               "920bb037-bdd7-48a1-98f0-1aa1787ca3eb",
   173  			Status:           "available",
   174  			State:            "in_sync",
   175  			CreatedAt:        time.Date(2023, time.May, 26, 12, 32, 45, 751834000, time.UTC),
   176  			UpdatedAt:        time.Date(2023, time.May, 26, 12, 36, 04, 110328000, time.UTC),
   177  		},
   178  	}
   179  
   180  	th.AssertDeepEquals(t, expected, actual)
   181  }
   182  
   183  func TestListExportLocationsSuccess(t *testing.T) {
   184  	th.SetupHTTP()
   185  	defer th.TeardownHTTP()
   186  
   187  	MockListExportLocationsResponse(t)
   188  
   189  	actual, err := replicas.ListExportLocations(context.TODO(), getClient("2.47"), replicaID).Extract()
   190  
   191  	expected := []replicas.ExportLocation{
   192  		{
   193  			ID:               "3fc02d3c-da47-42a2-88b8-2d48f8c276bd",
   194  			Path:             "192.168.1.123:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550",
   195  			Preferred:        true,
   196  			State:            "active",
   197  			AvailabilityZone: "zone-1",
   198  		},
   199  		{
   200  			ID:               "ae73e762-e8b9-4aad-aad3-23afb7cd6825",
   201  			Path:             "192.168.1.124:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550",
   202  			Preferred:        false,
   203  			State:            "active",
   204  			AvailabilityZone: "zone-1",
   205  		},
   206  	}
   207  
   208  	th.AssertNoErr(t, err)
   209  	th.AssertDeepEquals(t, expected, actual)
   210  }
   211  
   212  func TestGetExportLocationSuccess(t *testing.T) {
   213  	th.SetupHTTP()
   214  	defer th.TeardownHTTP()
   215  
   216  	MockGetExportLocationResponse(t)
   217  
   218  	s, err := replicas.GetExportLocation(context.TODO(), getClient("2.47"), replicaID, "ae73e762-e8b9-4aad-aad3-23afb7cd6825").Extract()
   219  
   220  	th.AssertNoErr(t, err)
   221  	th.AssertDeepEquals(t, s, &replicas.ExportLocation{
   222  		Path:             "192.168.1.124:/var/lib/manila/mnt/share-3b9c33e8-b136-45c6-84a6-019c8db1d550",
   223  		ID:               "ae73e762-e8b9-4aad-aad3-23afb7cd6825",
   224  		Preferred:        false,
   225  		State:            "active",
   226  		AvailabilityZone: "zone-1",
   227  		CreatedAt:        time.Date(2023, time.May, 26, 12, 44, 33, 987960000, time.UTC),
   228  		UpdatedAt:        time.Date(2023, time.May, 26, 12, 44, 33, 958363000, time.UTC),
   229  	})
   230  }
   231  
   232  func TestResetStatusSuccess(t *testing.T) {
   233  	th.SetupHTTP()
   234  	defer th.TeardownHTTP()
   235  
   236  	MockResetStatusResponse(t)
   237  
   238  	err := replicas.ResetStatus(context.TODO(), getClient("2.11"), replicaID, &replicas.ResetStatusOpts{Status: "available"}).ExtractErr()
   239  	th.AssertNoErr(t, err)
   240  }
   241  
   242  func TestResetStateSuccess(t *testing.T) {
   243  	th.SetupHTTP()
   244  	defer th.TeardownHTTP()
   245  
   246  	MockResetStateResponse(t)
   247  
   248  	err := replicas.ResetState(context.TODO(), getClient("2.11"), replicaID, &replicas.ResetStateOpts{State: "active"}).ExtractErr()
   249  	th.AssertNoErr(t, err)
   250  }
   251  
   252  func TestResyncSuccess(t *testing.T) {
   253  	th.SetupHTTP()
   254  	defer th.TeardownHTTP()
   255  
   256  	MockResyncResponse(t)
   257  
   258  	err := replicas.Resync(context.TODO(), getClient("2.11"), replicaID).ExtractErr()
   259  	th.AssertNoErr(t, err)
   260  }
   261  
   262  func TestPromoteSuccess(t *testing.T) {
   263  	th.SetupHTTP()
   264  	defer th.TeardownHTTP()
   265  
   266  	MockPromoteResponse(t)
   267  
   268  	err := replicas.Promote(context.TODO(), getClient("2.11"), replicaID, &replicas.PromoteOpts{QuiesceWaitTime: 30}).ExtractErr()
   269  	th.AssertNoErr(t, err)
   270  }