blob: cb10313266b99210246868fa228edc83ae8ab7be [file] [log] [blame]
package testing
import (
"fmt"
"net/http"
"testing"
"github.com/gophercloud/gophercloud/openstack/identity/v3/projects"
th "github.com/gophercloud/gophercloud/testhelper"
"github.com/gophercloud/gophercloud/testhelper/client"
)
// ListOutput provides a single page of Project results.
const ListOutput = `
{
"projects": [
{
"is_domain": false,
"description": "The team that is red",
"domain_id": "default",
"enabled": true,
"id": "1234",
"name": "Red Team",
"parent_id": null
},
{
"is_domain": false,
"description": "The team that is blue",
"domain_id": "default",
"enabled": true,
"id": "9876",
"name": "Blue Team",
"parent_id": null
}
],
"links": {
"next": null,
"previous": null
}
}
`
// GetOutput provides a Get result.
const GetOutput = `
{
"project": {
"is_domain": false,
"description": "The team that is red",
"domain_id": "default",
"enabled": true,
"id": "1234",
"name": "Red Team",
"parent_id": null
}
}
`
// RedTeam is a Project fixture.
var RedTeam = projects.Project{
IsDomain: false,
Description: "The team that is red",
DomainID: "default",
Enabled: true,
ID: "1234",
Name: "Red Team",
ParentID: "",
}
// BlueTeam is a Project fixture.
var BlueTeam = projects.Project{
IsDomain: false,
Description: "The team that is blue",
DomainID: "default",
Enabled: true,
ID: "9876",
Name: "Blue Team",
ParentID: "",
}
// ExpectedProjectSlice is the slice of projects expected to be returned from ListOutput.
var ExpectedProjectSlice = []projects.Project{RedTeam, BlueTeam}
// HandleListProjectsSuccessfully creates an HTTP handler at `/projects` on the
// test handler mux that responds with a list of two tenants.
func HandleListProjectsSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/projects", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "Accept", "application/json")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, ListOutput)
})
}
// HandleGetProjectSuccessfully creates an HTTP handler at `/projects` on the
// test handler mux that responds with a single project.
func HandleGetProjectSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/projects/1234", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "Accept", "application/json")
th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, GetOutput)
})
}