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 }