blob: 8325beec59a015abc03a9bcd5e8706822e9ef8e6 [file] [log] [blame]
// +build acceptance
package v3
import (
"testing"
"github.com/gophercloud/gophercloud/acceptance/clients"
"github.com/gophercloud/gophercloud/acceptance/tools"
"github.com/gophercloud/gophercloud/openstack/identity/v3/projects"
)
func TestProjectsList(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v", err)
}
var iTrue bool = true
listOpts := projects.ListOpts{
Enabled: &iTrue,
}
allPages, err := projects.List(client, listOpts).AllPages()
if err != nil {
t.Fatalf("Unable to list projects: %v", err)
}
allProjects, err := projects.ExtractProjects(allPages)
if err != nil {
t.Fatalf("Unable to extract projects: %v", err)
}
for _, project := range allProjects {
tools.PrintResource(t, project)
}
}
func TestProjectsGet(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v", err)
}
allPages, err := projects.List(client, nil).AllPages()
if err != nil {
t.Fatalf("Unable to list projects: %v", err)
}
allProjects, err := projects.ExtractProjects(allPages)
if err != nil {
t.Fatalf("Unable to extract projects: %v", err)
}
project := allProjects[0]
p, err := projects.Get(client, project.ID, nil).Extract()
if err != nil {
t.Fatalf("Unable to get project: %v", err)
}
tools.PrintResource(t, p)
}
func TestProjectsCRUD(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
}
project, err := CreateProject(t, client, nil)
if err != nil {
t.Fatalf("Unable to create project: %v", err)
}
defer DeleteProject(t, client, project.ID)
tools.PrintResource(t, project)
var iFalse bool = false
updateOpts := projects.UpdateOpts{
Enabled: &iFalse,
}
updatedProject, err := projects.Update(client, project.ID, updateOpts).Extract()
if err != nil {
t.Fatalf("Unable to update project: %v", err)
}
tools.PrintResource(t, updatedProject)
}
func TestProjectsDomain(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
}
var iTrue = true
createOpts := projects.CreateOpts{
IsDomain: &iTrue,
}
projectDomain, err := CreateProject(t, client, &createOpts)
if err != nil {
t.Fatalf("Unable to create project: %v", err)
}
defer DeleteProject(t, client, projectDomain.ID)
tools.PrintResource(t, projectDomain)
createOpts = projects.CreateOpts{
DomainID: projectDomain.ID,
}
project, err := CreateProject(t, client, &createOpts)
if err != nil {
t.Fatalf("Unable to create project: %v", err)
}
defer DeleteProject(t, client, project.ID)
tools.PrintResource(t, project)
var iFalse = false
updateOpts := projects.UpdateOpts{
Enabled: &iFalse,
}
_, err = projects.Update(client, projectDomain.ID, updateOpts).Extract()
if err != nil {
t.Fatalf("Unable to disable domain: %v")
}
}
func TestProjectsNested(t *testing.T) {
client, err := clients.NewIdentityV3Client()
if err != nil {
t.Fatalf("Unable to obtain an identity client: %v")
}
projectMain, err := CreateProject(t, client, nil)
if err != nil {
t.Fatalf("Unable to create project: %v", err)
}
defer DeleteProject(t, client, projectMain.ID)
tools.PrintResource(t, projectMain)
createOpts := projects.CreateOpts{
ParentID: projectMain.ID,
}
project, err := CreateProject(t, client, &createOpts)
if err != nil {
t.Fatalf("Unable to create project: %v", err)
}
defer DeleteProject(t, client, project.ID)
tools.PrintResource(t, project)
}