github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/identity/v3/users_test.go (about) 1 package v3 2 3 import ( 4 "os" 5 "testing" 6 7 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/clients" 8 "github.com/opentelekomcloud/gophertelekomcloud/acceptance/tools" 9 "github.com/opentelekomcloud/gophertelekomcloud/openstack/common/pointerto" 10 "github.com/opentelekomcloud/gophertelekomcloud/openstack/identity/v3/users" 11 th "github.com/opentelekomcloud/gophertelekomcloud/testhelper" 12 ) 13 14 func TestUsersList(t *testing.T) { 15 if os.Getenv("OS_TENANT_ADMIN") == "" { 16 t.Skip("Policy doesn't allow NewIdentityV3AdminClient() to be initialized.") 17 } 18 client, err := clients.NewIdentityV3AdminClient() 19 th.AssertNoErr(t, err) 20 21 listOpts := users.ListOpts{} 22 23 allPages, err := users.List(client, listOpts).AllPages() 24 if err != nil { 25 t.Fatalf("Unable to list users: %v", err) 26 } 27 28 allUsers, err := users.ExtractUsers(allPages) 29 if err != nil { 30 t.Fatalf("Unable to extract users: %v", err) 31 } 32 33 for _, user := range allUsers { 34 if len(user.Name) < 5 { 35 t.Fatalf("Invalid user name") 36 } 37 } 38 } 39 40 func TestUserLifecycle(t *testing.T) { 41 if os.Getenv("OS_TENANT_ADMIN") == "" { 42 t.Skip("Policy doesn't allow NewIdentityV3AdminClient() to be initialized.") 43 } 44 client, err := clients.NewIdentityV3AdminClient() 45 th.AssertNoErr(t, err) 46 47 createOpts := users.CreateOpts{ 48 Name: tools.RandomString("user-name-", 4), 49 Enabled: pointerto.Bool(true), 50 } 51 52 user, err := users.Create(client, createOpts).Extract() 53 if err != nil { 54 t.Fatalf("Unable to create user: %v", err) 55 } 56 57 t.Cleanup(func() { 58 err = users.Delete(client, user.ID).ExtractErr() 59 th.AssertNoErr(t, err) 60 }) 61 62 th.AssertEquals(t, createOpts.Name, user.Name) 63 th.AssertEquals(t, *createOpts.Enabled, user.Enabled) 64 65 userGet, err := users.Get(client, user.ID).Extract() 66 if err != nil { 67 t.Fatalf("Unable to retrieve user: %v", err) 68 } 69 70 th.AssertEquals(t, userGet.Name, user.Name) 71 th.AssertEquals(t, userGet.Enabled, user.Enabled) 72 th.AssertEquals(t, userGet.Email, user.Email) 73 th.AssertEquals(t, userGet.DomainID, user.DomainID) 74 th.AssertEquals(t, userGet.DefaultProjectID, user.DefaultProjectID) 75 76 updateOpts := users.UpdateOpts{ 77 Enabled: pointerto.Bool(false), 78 Name: tools.RandomString("new-user-name-", 4), 79 Password: tools.RandomString("Hello-world-", 5), 80 } 81 82 userUpdate, err := users.Update(client, user.ID, updateOpts).Extract() 83 if err != nil { 84 t.Fatalf("Unable to update user info: %v", err) 85 } 86 87 th.AssertEquals(t, userUpdate.Name, updateOpts.Name) 88 th.AssertEquals(t, userUpdate.Enabled, *updateOpts.Enabled) 89 th.AssertEquals(t, userUpdate.Email, updateOpts.Email) 90 th.AssertEquals(t, userUpdate.DomainID, userGet.DomainID) 91 th.AssertEquals(t, userUpdate.DefaultProjectID, userGet.DefaultProjectID) 92 93 extendedUpdateOpts := users.ExtendedUpdateOpts{ 94 Email: "test-email@mail.com", 95 } 96 userUpdateExt, err := users.ExtendedUpdate(client, user.ID, extendedUpdateOpts).Extract() 97 if err != nil { 98 t.Fatalf("Unable to update extended user info: %v", err) 99 } 100 th.AssertEquals(t, userUpdateExt.Email, extendedUpdateOpts.Email) 101 } 102 103 func TestRootUserChangePassword(t *testing.T) { 104 // Don't run this test unless you want to fix your password in clouds.yaml later 105 if os.Getenv("OS_TENANT_ADMIN_USER_ID") == "" { 106 t.Skip("Policy doesn't allow NewIdentityV3AdminClient() to be initialized.") 107 } 108 if os.Getenv("OS_TENANT_ADMIN_PASSWORD") == "" { 109 t.Skip("Password not provided.") 110 } 111 if os.Getenv("OS_NEW_TENANT_PASSWORD") == "" { 112 t.Skip("New password not provided.") 113 } 114 client, err := clients.NewIdentityV3AdminClient() 115 th.AssertNoErr(t, err) 116 117 err = users.ChangePassword(client, users.ChangePasswordOpts{ 118 UserId: os.Getenv("OS_TENANT_ADMIN_USER_ID"), 119 OriginalPassword: os.Getenv("OS_TENANT_ADMIN_PASSWORD"), 120 NewPassword: os.Getenv("OS_NEW_TENANT_PASSWORD"), 121 }) 122 th.AssertNoErr(t, err) 123 }