1// +build acceptance 2 3package v3 4 5import ( 6 "testing" 7 8 "github.com/gophercloud/gophercloud/acceptance/clients" 9 "github.com/gophercloud/gophercloud/acceptance/tools" 10 "github.com/gophercloud/gophercloud/openstack" 11 "github.com/gophercloud/gophercloud/openstack/identity/v3/credentials" 12 "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens" 13 th "github.com/gophercloud/gophercloud/testhelper" 14) 15 16func TestCredentialsCRUD(t *testing.T) { 17 clients.RequireAdmin(t) 18 19 client, err := clients.NewIdentityV3Client() 20 th.AssertNoErr(t, err) 21 22 ao, err := openstack.AuthOptionsFromEnv() 23 th.AssertNoErr(t, err) 24 25 authOptions := tokens.AuthOptions{ 26 Username: ao.Username, 27 Password: ao.Password, 28 DomainName: ao.DomainName, 29 DomainID: ao.DomainID, 30 // We need a scope to get the token roles list 31 Scope: tokens.Scope{ 32 ProjectID: ao.TenantID, 33 ProjectName: ao.TenantName, 34 DomainID: ao.DomainID, 35 DomainName: ao.DomainName, 36 }, 37 } 38 token, err := tokens.Create(client, &authOptions).Extract() 39 th.AssertNoErr(t, err) 40 tools.PrintResource(t, token) 41 42 user, err := tokens.Get(client, token.ID).ExtractUser() 43 th.AssertNoErr(t, err) 44 tools.PrintResource(t, user) 45 46 project, err := tokens.Get(client, token.ID).ExtractProject() 47 th.AssertNoErr(t, err) 48 tools.PrintResource(t, project) 49 50 createOpts := credentials.CreateOpts{ 51 ProjectID: project.ID, 52 Type: "ec2", 53 UserID: user.ID, 54 Blob: "{\"access\":\"181920\",\"secret\":\"secretKey\"}", 55 } 56 57 // Create a credential 58 credential, err := credentials.Create(client, createOpts).Extract() 59 th.AssertNoErr(t, err) 60 61 // Delete a credential 62 defer credentials.Delete(client, credential.ID) 63 tools.PrintResource(t, credential) 64 65 th.AssertEquals(t, credential.Blob, createOpts.Blob) 66 th.AssertEquals(t, credential.Type, createOpts.Type) 67 th.AssertEquals(t, credential.UserID, createOpts.UserID) 68 th.AssertEquals(t, credential.ProjectID, createOpts.ProjectID) 69 70 // Get a credential 71 getCredential, err := credentials.Get(client, credential.ID).Extract() 72 th.AssertNoErr(t, err) 73 tools.PrintResource(t, getCredential) 74 75 th.AssertEquals(t, getCredential.Blob, createOpts.Blob) 76 th.AssertEquals(t, getCredential.Type, createOpts.Type) 77 th.AssertEquals(t, getCredential.UserID, createOpts.UserID) 78 th.AssertEquals(t, getCredential.ProjectID, createOpts.ProjectID) 79 80 updateOpts := credentials.UpdateOpts{ 81 ProjectID: project.ID, 82 Type: "ec2", 83 UserID: user.ID, 84 Blob: "{\"access\":\"181920\",\"secret\":\"mySecret\"}", 85 } 86 87 // Update a credential 88 updateCredential, err := credentials.Update(client, credential.ID, updateOpts).Extract() 89 th.AssertNoErr(t, err) 90 tools.PrintResource(t, updateCredential) 91 92 th.AssertEquals(t, updateCredential.Blob, updateOpts.Blob) 93 94} 95