Skip to content
This repository was archived by the owner on Aug 31, 2021. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
19ac43c
Fix Querying Endpoints and Show endpoint details
sillydong Mar 15, 2018
bed22c4
Fix Region struct
sillydong Mar 15, 2018
047f2a8
Use interface instead of string for Endpoint Links
sillydong Mar 15, 2018
b53c2fa
Fix role struct
sillydong Mar 15, 2018
7e1ddc5
Service List and Get
sillydong Mar 15, 2018
945d577
add sdk function users.UpdatePasswd and its testing codes
Mar 15, 2018
81d8782
fix unit test of TestUpdateUserPasswd
Mar 15, 2018
dd6c036
add HEAD http method to ServiceClient objects
Mar 15, 2018
c8aa5ec
add users.CheckGroupUser function to check if the user is in a group
Mar 15, 2018
f3c2f41
add users.DeleteGroupUser function to remove a user from a group
Mar 15, 2018
92c9334
add users.AddUserToGroup function to add a user to a group
Mar 15, 2018
2975e5a
Add two method to check roles of special target
Mar 22, 2018
104a16f
Fix domain struct
sillydong Mar 27, 2018
8018a69
Fix endpoints fixture content
sillydong Mar 27, 2018
15a489b
Fix service struct
sillydong Mar 27, 2018
2e84fe7
Fix acceptance of identity
sillydong Mar 28, 2018
8edf8c4
HuaweiCloud use object instead of object-store for ObjectStorage's type
sillydong Mar 28, 2018
3a42c8f
Fix domains url path
sillydong Mar 28, 2018
3faecf1
Fix the unit test for domains url path change
Apr 3, 2018
5a0a09a
complete integration test for all api functions
Apr 3, 2018
f4fc6dd
fix acceptance test TestGetToken
Apr 3, 2018
eafe972
Fix useless omitempty
sillydong Apr 8, 2018
6dacc4a
Revert to object-store as object-store and object are different
sillydong Apr 9, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions acceptance/openstack/client_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ func TestAuthenticatedClient(t *testing.T) {
t.Fatalf("Unable to acquire credentials: %v", err)
}

t.Logf("AuthOptionsFromEnv: %+v", ao)

client, err := openstack.AuthenticatedClient(ao)
if err != nil {
t.Fatalf("Unable to authenticate: %v", err)
Expand Down
4 changes: 2 additions & 2 deletions acceptance/openstack/identity/v2/tenant_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
func TestTenantsList(t *testing.T) {
client, err := clients.NewIdentityV2Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

allPages, err := tenants.List(client, nil).AllPages()
Expand All @@ -34,7 +34,7 @@ func TestTenantsList(t *testing.T) {
func TestTenantsCRUD(t *testing.T) {
client, err := clients.NewIdentityV2AdminClient()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

tenant, err := CreateTenant(t, client, nil)
Expand Down
36 changes: 32 additions & 4 deletions acceptance/openstack/identity/v3/endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import (
func TestEndpointsList(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

allPages, err := endpoints.List(client, nil).AllPages()
Expand All @@ -33,10 +33,38 @@ func TestEndpointsList(t *testing.T) {
}
}

func TestEndpointsGet(t *testing.T) {

client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v", err)
}

allPages, err := endpoints.List(client, nil).AllPages()
if err != nil {
t.Fatalf("Unable to list endpoints: %v", err)
}

allEndpoints, err := endpoints.ExtractEndpoints(allPages)
if err != nil {
t.Fatalf("Unable to extract endpoints: %v", err)
}

if len(allEndpoints) > 0 {
endpoint := allEndpoints[0]
p, err := endpoints.Get(client, endpoint.ID).Extract()
if err != nil {
t.Fatalf("Unable to get endpoint: %v", err)
}

tools.PrintResource(t, p)
}
}

func TestEndpointsNavigateCatalog(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

// Discover the service we're interested in.
Expand All @@ -51,7 +79,7 @@ func TestEndpointsNavigateCatalog(t *testing.T) {

allServices, err := services.ExtractServices(allPages)
if err != nil {
t.Fatalf("Unable to extract service: %v")
t.Fatalf("Unable to extract service: %v", err)
}

if len(allServices) != 1 {
Expand All @@ -74,7 +102,7 @@ func TestEndpointsNavigateCatalog(t *testing.T) {

allEndpoints, err := endpoints.ExtractEndpoints(allPages)
if err != nil {
t.Fatalf("Unable to extract endpoint: %v")
t.Fatalf("Unable to extract endpoint: %v", err)
}

if len(allEndpoints) != 1 {
Expand Down
85 changes: 85 additions & 0 deletions acceptance/openstack/identity/v3/group_users_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
// +build acceptance

package v3

import (
"testing"

"github.com/huaweicloud/golangsdk/acceptance/clients"
"github.com/huaweicloud/golangsdk/acceptance/tools"
"github.com/huaweicloud/golangsdk/openstack/identity/v3/groups"
"github.com/huaweicloud/golangsdk/openstack/identity/v3/users"
)

func TestGroupUsersCRUD(t *testing.T) {

client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v", err)
}

// Create Group in the default domain
createGroupOpts := groups.CreateOpts{
Name: "testgroup",
DomainID: "default",
Extra: map[string]interface{}{
"email": "testgroup@example.com",
},
}
group, err := CreateGroup(t, client, &createGroupOpts)
if err != nil {
t.Fatalf("Unable to create group: %v", err)
}
defer DeleteGroup(t, client, group.ID)

tools.PrintResource(t, group)
tools.PrintResource(t, group.Extra)

// Create a test user
createUserOpts := users.CreateOpts{
Password: "foobar",
DomainID: "default",
Options: map[users.Option]interface{}{
users.IgnorePasswordExpiry: true,
users.MultiFactorAuthRules: []interface{}{
[]string{"password", "totp"},
[]string{"password", "custom-auth-method"},
},
},
Extra: map[string]interface{}{
"email": "jsmith@example.com",
},
}
user, err := CreateUser(t, client, &createUserOpts)
if err != nil {
t.Fatalf("Unable to create user: %v", err)
}
defer DeleteUser(t, client, user.ID)

tools.PrintResource(t, user)
tools.PrintResource(t, user.Extra)

err = users.AddUserToGroup(client, group.ID, user.ID).ExtractErr()
if err != nil {
t.Fatalf("Unable to add user to group: %v", err)
}

allPages, err := users.ListInGroup(client, group.ID, nil).AllPages()
if err != nil {
t.Fatalf("Unable to list users: %v", err)
}
_, err = users.ExtractUsers(allPages)
if err != nil {
t.Fatalf("Unable to extract users: %v", err)
}

err = users.CheckGroupUser(client, group.ID, user.ID).ExtractErr()
if err != nil {
t.Fatalf("Didn't successfully add user to group")
}

err = users.DeleteGroupUser(client, group.ID, user.ID).ExtractErr()
if err != nil {
t.Fatalf("Unable to remove user from group: %v", err)
}
}
8 changes: 4 additions & 4 deletions acceptance/openstack/identity/v3/projects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ func TestProjectsGet(t *testing.T) {
func TestProjectsCRUD(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

project, err := CreateProject(t, client, nil)
Expand All @@ -91,7 +91,7 @@ func TestProjectsCRUD(t *testing.T) {
func TestProjectsDomain(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

var iTrue = true
Expand Down Expand Up @@ -126,14 +126,14 @@ func TestProjectsDomain(t *testing.T) {

_, err = projects.Update(client, projectDomain.ID, updateOpts).Extract()
if err != nil {
t.Fatalf("Unable to disable domain: %v")
t.Fatalf("Unable to disable domain: %v", err)
}
}

func TestProjectsNested(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

projectMain, err := CreateProject(t, client, nil)
Expand Down
48 changes: 48 additions & 0 deletions acceptance/openstack/identity/v3/roles_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,30 @@ func TestRoleAssignToGroupOnDomain(t *testing.T) {
for _, roleAssignment := range allRoleAssignments {
tools.PrintResource(t, roleAssignment)
}

err = roles.CheckRoleOf(client, role.ID, roles.CheckRoleOfOpts{
GroupID: group.ID,
DomainID: domain.ID,
}).ExtractErr()
if err != nil {
t.Fatalf("Unable to check role of domain: %v", err)
}

allPages, err = roles.ListRolesOf(client, roles.ListRolesOfOpts{
GroupID: group.ID,
DomainID: domain.ID,
}).AllPages()
if err != nil {
t.Fatalf("Unable to list roles of domain: %v", err)
}
allRoles, err := roles.ExtractRoles(allPages)
if err != nil {
t.Fatalf("Unable to extract roles: %v", err)
}

for _, role := range allRoles {
tools.PrintResource(t, role)
}
}

func TestRoleAssignToGroupOnProject(t *testing.T) {
Expand Down Expand Up @@ -325,4 +349,28 @@ func TestRoleAssignToGroupOnProject(t *testing.T) {
for _, roleAssignment := range allRoleAssignments {
tools.PrintResource(t, roleAssignment)
}

err = roles.CheckRoleOf(client, role.ID, roles.CheckRoleOfOpts{
GroupID: group.ID,
ProjectID: project.ID,
}).ExtractErr()
if err != nil {
t.Fatalf("Unable to check role of project: %v", err)
}

allPages, err = roles.ListRolesOf(client, roles.ListRolesOfOpts{
GroupID: group.ID,
ProjectID: project.ID,
}).AllPages()
if err != nil {
t.Fatalf("Unable to list roles of project: %v", err)
}
allRoles, err := roles.ExtractRoles(allPages)
if err != nil {
t.Fatalf("Unable to extract roles: %v", err)
}

for _, role := range allRoles {
tools.PrintResource(t, role)
}
}
40 changes: 39 additions & 1 deletion acceptance/openstack/identity/v3/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import (
func TestServicesList(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

listOpts := services.ListOpts{
Expand All @@ -36,6 +36,39 @@ func TestServicesList(t *testing.T) {

}

func TestServicesGet(t *testing.T) {

client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v", err)
}

listOpts := services.ListOpts{
ServiceType: "identity",
}

allPages, err := services.List(client, listOpts).AllPages()
if err != nil {
t.Fatalf("Unable to list services: %v", err)
}

allServices, err := services.ExtractServices(allPages)
if err != nil {
t.Fatalf("Unable to extract services: %v", err)
}

if len(allServices) > 0 {

service := allServices[0]
p, err := services.Get(client, service.ID).Extract()
if err != nil {
t.Fatalf("Unable to get service: %v", err)
}

tools.PrintResource(t, p)
}
}

func TestServicesCRUD(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
Expand All @@ -56,6 +89,11 @@ func TestServicesCRUD(t *testing.T) {
}
defer DeleteService(t, client, service.ID)

service, err = services.Get(client, service.ID).Extract()
if err != nil {
t.Fatalf("Unable to read service: %v", err)
}

tools.PrintResource(t, service)
tools.PrintResource(t, service.Extra)

Expand Down
4 changes: 2 additions & 2 deletions acceptance/openstack/identity/v3/token_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import (
func TestGetToken(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
t.Fatalf("Unable to obtain an identity client: %v", err)
}

ao, err := openstack.AuthOptionsFromEnv()
Expand All @@ -25,7 +25,7 @@ func TestGetToken(t *testing.T) {
authOptions := tokens.AuthOptions{
Username: ao.Username,
Password: ao.Password,
DomainName: "default",
DomainName: ao.DomainName,
}

token, err := tokens.Create(client, &authOptions).Extract()
Expand Down
9 changes: 9 additions & 0 deletions acceptance/openstack/identity/v3/users_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,15 @@ func TestUserCRUD(t *testing.T) {

tools.PrintResource(t, newUser)
tools.PrintResource(t, newUser.Extra)

updatePasswdOpts := users.UpdatePasswdOpts{
OriginalPassword: "foobar",
Password: "barfoo",
}
err = users.UpdatePasswd(client, user.ID, updatePasswdOpts).ExtractErr()
if err != nil {
t.Fatalf("Unable to update user password: %v", err)
}
}

func TestUsersListGroups(t *testing.T) {
Expand Down
3 changes: 3 additions & 0 deletions openstack/identity/v3/domains/results.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ type Domain struct {

// Name is the name of the domain.
Name string `json:"name"`

// EnterpriseName is the name of company user.
EnterpriseName string `json:"enterpriseName"`
}

type domainResult struct {
Expand Down
Loading