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  }