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  }