1package testing
2
3import (
4	"testing"
5
6	"github.com/gophercloud/gophercloud/openstack/identity/v3/credentials"
7	"github.com/gophercloud/gophercloud/pagination"
8	th "github.com/gophercloud/gophercloud/testhelper"
9	"github.com/gophercloud/gophercloud/testhelper/client"
10)
11
12func TestListCredentials(t *testing.T) {
13	th.SetupHTTP()
14	defer th.TeardownHTTP()
15	HandleListCredentialsSuccessfully(t)
16
17	count := 0
18	err := credentials.List(client.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
19		count++
20
21		actual, err := credentials.ExtractCredentials(page)
22		th.AssertNoErr(t, err)
23
24		th.CheckDeepEquals(t, ExpectedCredentialsSlice, actual)
25
26		return true, nil
27	})
28	th.AssertNoErr(t, err)
29	th.CheckEquals(t, count, 1)
30}
31
32func TestListCredentialsAllPages(t *testing.T) {
33	th.SetupHTTP()
34	defer th.TeardownHTTP()
35	HandleListCredentialsSuccessfully(t)
36
37	allPages, err := credentials.List(client.ServiceClient(), nil).AllPages()
38	th.AssertNoErr(t, err)
39	actual, err := credentials.ExtractCredentials(allPages)
40	th.AssertNoErr(t, err)
41	th.CheckDeepEquals(t, ExpectedCredentialsSlice, actual)
42	th.AssertDeepEquals(t, ExpectedCredentialsSlice[0].Blob, "{\"access\":\"181920\",\"secret\":\"secretKey\"}")
43	th.AssertDeepEquals(t, ExpectedCredentialsSlice[1].Blob, "{\"access\":\"7da79ff0aa364e1396f067e352b9b79a\",\"secret\":\"7a18d68ba8834b799d396f3ff6f1e98c\"}")
44}
45
46func TestGetCredential(t *testing.T) {
47	th.SetupHTTP()
48	defer th.TeardownHTTP()
49	HandleGetCredentialSuccessfully(t)
50
51	actual, err := credentials.Get(client.ServiceClient(), credentialID).Extract()
52	th.AssertNoErr(t, err)
53	th.CheckDeepEquals(t, Credential, *actual)
54}
55
56func TestCreateCredential(t *testing.T) {
57	th.SetupHTTP()
58	defer th.TeardownHTTP()
59	HandleCreateCredentialSuccessfully(t)
60
61	createOpts := credentials.CreateOpts{
62		ProjectID: projectID,
63		Type:      "ec2",
64		UserID:    userID,
65		Blob:      "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
66	}
67
68	CredentialResponse := Credential
69
70	actual, err := credentials.Create(client.ServiceClient(), createOpts).Extract()
71	th.AssertNoErr(t, err)
72	th.CheckDeepEquals(t, CredentialResponse, *actual)
73}
74
75func TestDeleteCredential(t *testing.T) {
76	th.SetupHTTP()
77	defer th.TeardownHTTP()
78	HandleDeleteCredentialSuccessfully(t)
79
80	res := credentials.Delete(client.ServiceClient(), credentialID)
81	th.AssertNoErr(t, res.Err)
82}
83
84func TestUpdateCredential(t *testing.T) {
85	th.SetupHTTP()
86	defer th.TeardownHTTP()
87	HandleUpdateCredentialSuccessfully(t)
88
89	updateOpts := credentials.UpdateOpts{
90		ProjectID: "731fc6f265cd486d900f16e84c5cb594",
91		Type:      "ec2",
92		UserID:    "bb5476fd12884539b41d5a88f838d773",
93		Blob:      "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
94	}
95
96	actual, err := credentials.Update(client.ServiceClient(), "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609", updateOpts).Extract()
97	th.AssertNoErr(t, err)
98	th.CheckDeepEquals(t, SecondCredentialUpdated, *actual)
99}
100