github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/identity/v2/users/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/vnpaycloud-console/gophercloud/v2"
     8  	"github.com/vnpaycloud-console/gophercloud/v2/openstack/identity/v2/users"
     9  	"github.com/vnpaycloud-console/gophercloud/v2/pagination"
    10  	th "github.com/vnpaycloud-console/gophercloud/v2/testhelper"
    11  	"github.com/vnpaycloud-console/gophercloud/v2/testhelper/client"
    12  )
    13  
    14  func TestList(t *testing.T) {
    15  	th.SetupHTTP()
    16  	defer th.TeardownHTTP()
    17  
    18  	MockListUserResponse(t)
    19  
    20  	count := 0
    21  
    22  	err := users.List(client.ServiceClient()).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
    23  		count++
    24  		actual, err := users.ExtractUsers(page)
    25  		th.AssertNoErr(t, err)
    26  
    27  		expected := []users.User{
    28  			{
    29  				ID:       "u1000",
    30  				Name:     "John Smith",
    31  				Username: "jqsmith",
    32  				Email:    "john.smith@example.org",
    33  				Enabled:  true,
    34  				TenantID: "12345",
    35  			},
    36  			{
    37  				ID:       "u1001",
    38  				Name:     "Jane Smith",
    39  				Username: "jqsmith",
    40  				Email:    "jane.smith@example.org",
    41  				Enabled:  true,
    42  				TenantID: "12345",
    43  			},
    44  		}
    45  		th.CheckDeepEquals(t, expected, actual)
    46  		return true, nil
    47  	})
    48  	th.AssertNoErr(t, err)
    49  	th.AssertEquals(t, 1, count)
    50  }
    51  
    52  func TestCreateUser(t *testing.T) {
    53  	th.SetupHTTP()
    54  	defer th.TeardownHTTP()
    55  
    56  	mockCreateUserResponse(t)
    57  
    58  	opts := users.CreateOpts{
    59  		Name:     "new_user",
    60  		TenantID: "12345",
    61  		Enabled:  gophercloud.Disabled,
    62  		Email:    "new_user@foo.com",
    63  	}
    64  
    65  	user, err := users.Create(context.TODO(), client.ServiceClient(), opts).Extract()
    66  
    67  	th.AssertNoErr(t, err)
    68  
    69  	expected := &users.User{
    70  		Name:     "new_user",
    71  		ID:       "c39e3de9be2d4c779f1dfd6abacc176d",
    72  		Email:    "new_user@foo.com",
    73  		Enabled:  false,
    74  		TenantID: "12345",
    75  	}
    76  
    77  	th.AssertDeepEquals(t, expected, user)
    78  }
    79  
    80  func TestGetUser(t *testing.T) {
    81  	th.SetupHTTP()
    82  	defer th.TeardownHTTP()
    83  
    84  	mockGetUserResponse(t)
    85  
    86  	user, err := users.Get(context.TODO(), client.ServiceClient(), "new_user").Extract()
    87  	th.AssertNoErr(t, err)
    88  
    89  	expected := &users.User{
    90  		Name:     "new_user",
    91  		ID:       "c39e3de9be2d4c779f1dfd6abacc176d",
    92  		Email:    "new_user@foo.com",
    93  		Enabled:  false,
    94  		TenantID: "12345",
    95  	}
    96  
    97  	th.AssertDeepEquals(t, expected, user)
    98  }
    99  
   100  func TestUpdateUser(t *testing.T) {
   101  	th.SetupHTTP()
   102  	defer th.TeardownHTTP()
   103  
   104  	mockUpdateUserResponse(t)
   105  
   106  	id := "c39e3de9be2d4c779f1dfd6abacc176d"
   107  	opts := users.UpdateOpts{
   108  		Name:    "new_name",
   109  		Enabled: gophercloud.Enabled,
   110  		Email:   "new_email@foo.com",
   111  	}
   112  
   113  	user, err := users.Update(context.TODO(), client.ServiceClient(), id, opts).Extract()
   114  
   115  	th.AssertNoErr(t, err)
   116  
   117  	expected := &users.User{
   118  		Name:     "new_name",
   119  		ID:       id,
   120  		Email:    "new_email@foo.com",
   121  		Enabled:  true,
   122  		TenantID: "12345",
   123  	}
   124  
   125  	th.AssertDeepEquals(t, expected, user)
   126  }
   127  
   128  func TestDeleteUser(t *testing.T) {
   129  	th.SetupHTTP()
   130  	defer th.TeardownHTTP()
   131  
   132  	mockDeleteUserResponse(t)
   133  
   134  	res := users.Delete(context.TODO(), client.ServiceClient(), "c39e3de9be2d4c779f1dfd6abacc176d")
   135  	th.AssertNoErr(t, res.Err)
   136  }
   137  
   138  func TestListingUserRoles(t *testing.T) {
   139  	th.SetupHTTP()
   140  	defer th.TeardownHTTP()
   141  
   142  	mockListRolesResponse(t)
   143  
   144  	tenantID := "1d8b6120dcc640fda4fc9194ffc80273"
   145  	userID := "c39e3de9be2d4c779f1dfd6abacc176d"
   146  
   147  	err := users.ListRoles(client.ServiceClient(), tenantID, userID).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) {
   148  		actual, err := users.ExtractRoles(page)
   149  		th.AssertNoErr(t, err)
   150  
   151  		expected := []users.Role{
   152  			{ID: "9fe2ff9ee4384b1894a90878d3e92bab", Name: "foo_role"},
   153  			{ID: "1ea3d56793574b668e85960fbf651e13", Name: "admin"},
   154  		}
   155  
   156  		th.CheckDeepEquals(t, expected, actual)
   157  
   158  		return true, nil
   159  	})
   160  
   161  	th.AssertNoErr(t, err)
   162  }