github.com/opentelekomcloud/gophertelekomcloud@v0.9.3/acceptance/openstack/identity/v3.0/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.0/security"
    11  	"github.com/opentelekomcloud/gophertelekomcloud/openstack/identity/v3.0/users"
    12  	oldusers "github.com/opentelekomcloud/gophertelekomcloud/openstack/identity/v3/users"
    13  	th "github.com/opentelekomcloud/gophertelekomcloud/testhelper"
    14  )
    15  
    16  func TestUserLifecycle(t *testing.T) {
    17  	if os.Getenv("OS_TENANT_ADMIN") == "" {
    18  		t.Skip("Policy doesn't allow NewIdentityV3AdminClient() to be initialized.")
    19  	}
    20  	client, err := clients.NewIdentityV30AdminClient()
    21  	th.AssertNoErr(t, err)
    22  
    23  	oldClient, err := clients.NewIdentityV3AdminClient()
    24  	th.AssertNoErr(t, err)
    25  
    26  	createOpts := users.CreateOpts{
    27  		Name:     tools.RandomString("user-name-", 4),
    28  		Enabled:  pointerto.Bool(true),
    29  		DomainID: client.DomainID,
    30  	}
    31  
    32  	user, err := users.CreateUser(client, createOpts)
    33  	if err != nil {
    34  		t.Fatalf("Unable to create user: %v", err)
    35  	}
    36  
    37  	t.Cleanup(func() {
    38  		err = oldusers.Delete(oldClient, user.ID).ExtractErr()
    39  		th.AssertNoErr(t, err)
    40  	})
    41  
    42  	th.AssertEquals(t, createOpts.Name, user.Name)
    43  	th.AssertEquals(t, *createOpts.Enabled, user.Enabled)
    44  
    45  	userGet, err := users.GetUser(client, user.ID)
    46  	if err != nil {
    47  		t.Fatalf("Unable to retrieve user: %v", err)
    48  	}
    49  
    50  	th.AssertEquals(t, userGet.Name, user.Name)
    51  	th.AssertEquals(t, userGet.Enabled, user.Enabled)
    52  	th.AssertEquals(t, userGet.Email, user.Email)
    53  	th.AssertEquals(t, userGet.DomainID, user.DomainID)
    54  
    55  	updateOpts := users.UpdateOpts{
    56  		Enabled:  pointerto.Bool(false),
    57  		Name:     tools.RandomString("new-user-name-", 4),
    58  		Password: tools.RandomString("Hello-world-", 5),
    59  	}
    60  
    61  	userUpdate, err := users.ModifyUser(client, user.ID, updateOpts)
    62  	if err != nil {
    63  		t.Fatalf("Unable to update user info: %v", err)
    64  	}
    65  
    66  	th.AssertEquals(t, userUpdate.Name, updateOpts.Name)
    67  	th.AssertEquals(t, userUpdate.Enabled, *updateOpts.Enabled)
    68  	th.AssertEquals(t, userUpdate.Email, updateOpts.Email)
    69  	th.AssertEquals(t, userUpdate.DomainID, userGet.DomainID)
    70  }
    71  
    72  func TestSecurityLifecycle(t *testing.T) {
    73  	if os.Getenv("OS_TENANT_ADMIN") == "" {
    74  		t.Skip("Policy doesn't allow NewIdentityV3AdminClient() to be initialized.")
    75  	}
    76  	client, err := clients.NewIdentityV30AdminClient()
    77  	th.AssertNoErr(t, err)
    78  
    79  	oldClient, err := clients.NewIdentityV3AdminClient()
    80  	th.AssertNoErr(t, err)
    81  
    82  	createOpts := users.CreateOpts{
    83  		Name:     tools.RandomString("test-sdk-user-name-", 4),
    84  		Enabled:  pointerto.Bool(true),
    85  		DomainID: client.DomainID,
    86  	}
    87  
    88  	user, err := users.CreateUser(client, createOpts)
    89  	if err != nil {
    90  		t.Fatalf("Unable to create user: %v", err)
    91  	}
    92  
    93  	t.Cleanup(func() {
    94  		err = oldusers.Delete(oldClient, user.ID).ExtractErr()
    95  		th.AssertNoErr(t, err)
    96  	})
    97  
    98  	domainAuthPolicy, err := security.GetLoginAuthPolicy(client, client.DomainID)
    99  	th.AssertNoErr(t, err)
   100  	tools.PrintResource(t, domainAuthPolicy)
   101  
   102  	opProtectionPolicy, err := security.GetOperationProtectionPolicy(client, client.DomainID)
   103  	th.AssertNoErr(t, err)
   104  	tools.PrintResource(t, opProtectionPolicy)
   105  
   106  	passwordPolicy, err := security.GetPasswordPolicy(client, client.DomainID)
   107  	th.AssertNoErr(t, err)
   108  	tools.PrintResource(t, passwordPolicy)
   109  
   110  	updateUserProtectionConfig, err := security.UpdateLoginProtectionConfiguration(client, user.ID,
   111  		security.LoginProtectionUpdateOpts{
   112  			Enabled:            pointerto.Bool(true),
   113  			VerificationMethod: "vmfa",
   114  		})
   115  	th.AssertNoErr(t, err)
   116  	th.AssertEquals(t, updateUserProtectionConfig.UserId, user.ID)
   117  	th.AssertEquals(t, *updateUserProtectionConfig.Enabled, true)
   118  
   119  	userProtectionConfig, err := security.GetLoginProtectionConfiguration(client, user.ID)
   120  	th.AssertNoErr(t, err)
   121  	th.AssertEquals(t, userProtectionConfig.UserId, user.ID)
   122  	th.AssertEquals(t, *userProtectionConfig.Enabled, true)
   123  
   124  	userProtectionConfigs, err := security.ListLoginProtectionConfigurations(client)
   125  	th.AssertNoErr(t, err)
   126  	tools.PrintResource(t, userProtectionConfigs)
   127  
   128  	list, err := security.ListUserMfaDevices(client)
   129  	th.AssertNoErr(t, err)
   130  	tools.PrintResource(t, list)
   131  }