blob: c08fc5ebaa8c9d08fc0cd93e64290e897d3aad51 [file] [log] [blame]
package testing
import (
"fmt"
"net/http"
"testing"
th "github.com/gophercloud/gophercloud/testhelper"
fakeclient "github.com/gophercloud/gophercloud/testhelper/client"
)
// HandleCreateImageMemberSuccessfully setup
func HandleCreateImageMemberSuccessfully(t *testing.T) {
th.Mux.HandleFunc("/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/members", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "POST")
th.TestHeader(t, r, "X-Auth-Token", fakeclient.TokenID)
th.TestJSONRequest(t, r, `{"member": "8989447062e04a818baf9e073fd04fa7"}`)
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, `{
"created_at": "2013-09-20T19:22:19Z",
"image_id": "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
"member_id": "8989447062e04a818baf9e073fd04fa7",
"schema": "/v2/schemas/member",
"status": "pending",
"updated_at": "2013-09-20T19:25:31Z"
}`)
})
}
// HandleImageMemberList happy path setup
func HandleImageMemberList(t *testing.T) {
th.Mux.HandleFunc("/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/members", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", fakeclient.TokenID)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, `{
"members": [
{
"created_at": "2013-10-07T17:58:03Z",
"image_id": "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
"member_id": "123456789",
"schema": "/v2/schemas/member",
"status": "pending",
"updated_at": "2013-10-07T17:58:03Z"
},
{
"created_at": "2013-10-07T17:58:55Z",
"image_id": "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
"member_id": "987654321",
"schema": "/v2/schemas/member",
"status": "accepted",
"updated_at": "2013-10-08T12:08:55Z"
}
],
"schema": "/v2/schemas/members"
}`)
})
}
// HandleImageMemberEmptyList happy path setup
func HandleImageMemberEmptyList(t *testing.T) {
th.Mux.HandleFunc("/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/members", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", fakeclient.TokenID)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, `{
"members": [],
"schema": "/v2/schemas/members"
}`)
})
}
// HandleImageMemberDetails setup
func HandleImageMemberDetails(t *testing.T) {
th.Mux.HandleFunc("/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/members/8989447062e04a818baf9e073fd04fa7", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", fakeclient.TokenID)
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, `{
"status": "pending",
"created_at": "2013-11-26T07:21:21Z",
"updated_at": "2013-11-26T07:21:21Z",
"image_id": "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
"member_id": "8989447062e04a818baf9e073fd04fa7",
"schema": "/v2/schemas/member"
}`)
})
}
// HandleImageMemberDeleteSuccessfully setup
func HandleImageMemberDeleteSuccessfully(t *testing.T) *CallsCounter {
var counter CallsCounter
th.Mux.HandleFunc("/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/members/8989447062e04a818baf9e073fd04fa7", func(w http.ResponseWriter, r *http.Request) {
counter.Counter = counter.Counter + 1
th.TestMethod(t, r, "DELETE")
th.TestHeader(t, r, "X-Auth-Token", fakeclient.TokenID)
w.WriteHeader(http.StatusNoContent)
})
return &counter
}
// HandleImageMemberUpdate setup
func HandleImageMemberUpdate(t *testing.T) *CallsCounter {
var counter CallsCounter
th.Mux.HandleFunc("/images/da3b75d9-3f4a-40e7-8a2c-bfab23927dea/members/8989447062e04a818baf9e073fd04fa7", func(w http.ResponseWriter, r *http.Request) {
counter.Counter = counter.Counter + 1
th.TestMethod(t, r, "PUT")
th.TestHeader(t, r, "X-Auth-Token", fakeclient.TokenID)
th.TestJSONRequest(t, r, `{"status": "accepted"}`)
w.WriteHeader(http.StatusOK)
fmt.Fprintf(w, `{
"status": "accepted",
"created_at": "2013-11-26T07:21:21Z",
"updated_at": "2013-11-26T07:21:21Z",
"image_id": "da3b75d9-3f4a-40e7-8a2c-bfab23927dea",
"member_id": "8989447062e04a818baf9e073fd04fa7",
"schema": "/v2/schemas/member"
}`)
})
return &counter
}
// CallsCounter for checking if request handler was called at all
type CallsCounter struct {
Counter int
}