github.com/gophercloud/gophercloud@v1.11.0/internal/acceptance/openstack/identity/v3/ec2credentials_test.go (about) 1 //go:build acceptance 2 // +build acceptance 3 4 package v3 5 6 import ( 7 "testing" 8 9 "github.com/gophercloud/gophercloud/internal/acceptance/clients" 10 "github.com/gophercloud/gophercloud/internal/acceptance/tools" 11 "github.com/gophercloud/gophercloud/openstack" 12 "github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/ec2credentials" 13 "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" 14 th "github.com/gophercloud/gophercloud/testhelper" 15 ) 16 17 func TestEC2CredentialsCRD(t *testing.T) { 18 client, err := clients.NewIdentityV3Client() 19 th.AssertNoErr(t, err) 20 21 ao, err := openstack.AuthOptionsFromEnv() 22 th.AssertNoErr(t, err) 23 24 authOptions := tokens.AuthOptions{ 25 Username: ao.Username, 26 Password: ao.Password, 27 DomainName: ao.DomainName, 28 DomainID: ao.DomainID, 29 // We need a scope to get the token roles list 30 Scope: tokens.Scope{ 31 ProjectID: ao.TenantID, 32 ProjectName: ao.TenantName, 33 DomainID: ao.DomainID, 34 DomainName: ao.DomainName, 35 }, 36 } 37 38 res := tokens.Create(client, &authOptions) 39 th.AssertNoErr(t, res.Err) 40 token, err := res.Extract() 41 th.AssertNoErr(t, err) 42 tools.PrintResource(t, token) 43 44 user, err := res.ExtractUser() 45 th.AssertNoErr(t, err) 46 tools.PrintResource(t, user) 47 48 project, err := res.ExtractProject() 49 th.AssertNoErr(t, err) 50 tools.PrintResource(t, project) 51 52 createOpts := ec2credentials.CreateOpts{ 53 TenantID: project.ID, 54 } 55 56 ec2credential, err := ec2credentials.Create(client, user.ID, createOpts).Extract() 57 th.AssertNoErr(t, err) 58 defer ec2credentials.Delete(client, user.ID, ec2credential.Access) 59 tools.PrintResource(t, ec2credential) 60 61 access := ec2credential.Access 62 secret := ec2credential.Secret 63 if access == "" { 64 t.Fatalf("EC2 credential access was not generated") 65 } 66 67 if secret == "" { 68 t.Fatalf("EC2 credential secret was not generated") 69 } 70 71 th.AssertEquals(t, ec2credential.UserID, user.ID) 72 th.AssertEquals(t, ec2credential.TenantID, project.ID) 73 74 // Get an ec2 credential 75 getEC2Credential, err := ec2credentials.Get(client, user.ID, ec2credential.Access).Extract() 76 th.AssertNoErr(t, err) 77 tools.PrintResource(t, getEC2Credential) 78 79 th.AssertEquals(t, getEC2Credential.UserID, user.ID) 80 th.AssertEquals(t, getEC2Credential.TenantID, project.ID) 81 th.AssertEquals(t, getEC2Credential.Access, access) 82 th.AssertEquals(t, getEC2Credential.Secret, secret) 83 84 allPages, err := ec2credentials.List(client, user.ID).AllPages() 85 th.AssertNoErr(t, err) 86 credentials, err := ec2credentials.ExtractCredentials(allPages) 87 th.AssertNoErr(t, err) 88 89 if v := len(credentials); v != 1 { 90 t.Fatalf("expected to list one credential, got %d", v) 91 } 92 93 th.AssertEquals(t, credentials[0].UserID, user.ID) 94 th.AssertEquals(t, credentials[0].TenantID, project.ID) 95 th.AssertEquals(t, credentials[0].Access, access) 96 th.AssertEquals(t, credentials[0].Secret, secret) 97 }