Root package tests pass.
diff --git a/collections_test.go b/collections_test.go
index b1fe6af..d215c33 100644
--- a/collections_test.go
+++ b/collections_test.go
@@ -1,26 +1,20 @@
package gophercloud
import (
- "bytes"
- "errors"
- "io"
+ "fmt"
"net/http"
"reflect"
"testing"
"github.com/mitchellh/mapstructure"
+ "github.com/rackspace/gophercloud/testhelper"
)
-type nopCloser struct {
- io.Reader
-}
-
-func (nopCloser) Close() error { return nil }
-
-func responseWithBody(body string) (http.Response, error) {
- return http.Response{
- Body: nopCloser{bytes.NewReader([]byte(body))},
- }, nil
+func createClient() *ServiceClient {
+ return &ServiceClient{
+ Provider: &ProviderClient{TokenID: "abc123"},
+ Endpoint: testhelper.Endpoint(),
+ }
}
// SinglePage sample and test cases.
@@ -39,14 +33,22 @@
}
func setupSinglePaged() Pager {
- return NewSinglePager(func() (http.Response, error) {
- return responseWithBody(`{ "ints": [1, 2, 3] }`)
+ testhelper.SetupHTTP()
+ client := createClient()
+
+ testhelper.Mux.HandleFunc("/only", func(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, `{ "ints": [1, 2, 3] }`)
})
+
+ return NewSinglePager(client, testhelper.Server.URL+"/only")
}
func TestEnumerateSinglePaged(t *testing.T) {
callCount := 0
- err := setupSinglePaged().EachPage(func(page Page) (bool, error) {
+ pager := setupSinglePaged()
+ defer testhelper.TeardownHTTP()
+
+ err := pager.EachPage(func(page Page) (bool, error) {
callCount++
expected := []int{1, 2, 3}
@@ -84,23 +86,28 @@
}
func createLinked(t *testing.T) Pager {
- return NewLinkedPager("page1", func(url string) (http.Response, error) {
- switch url {
- case "page1":
- return responseWithBody(`{ "ints": [1, 2, 3], "links": { "next": "page2" } }`)
- case "page2":
- return responseWithBody(`{ "ints": [4, 5, 6], "links": { "next": "page3" } }`)
- case "page3":
- return responseWithBody(`{ "ints": [7, 8, 9], "links": { "next": null } }`)
- default:
- t.Fatalf("LinkedPager called with unexpected URL: %v", url)
- return http.Response{}, errors.New("Wat")
- }
+ testhelper.SetupHTTP()
+
+ testhelper.Mux.HandleFunc("/page1", func(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, `{ "ints": [1, 2, 3], "links": { "next": "%s/page2" } }`, testhelper.Server.URL)
})
+
+ testhelper.Mux.HandleFunc("/page2", func(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, `{ "ints": [4, 5, 6], "links": { "next": "%s/page3" } }`, testhelper.Server.URL)
+ })
+
+ testhelper.Mux.HandleFunc("/page3", func(w http.ResponseWriter, r *http.Request) {
+ fmt.Fprintf(w, `{ "ints": [7, 8, 9], "links": { "next": null } }`)
+ })
+
+ client := createClient()
+
+ return NewLinkedPager(client, testhelper.Server.URL+"/page1")
}
func TestEnumerateLinked(t *testing.T) {
pager := createLinked(t)
+ defer testhelper.TeardownHTTP()
callCount := 0
err := pager.EachPage(func(page Page) (bool, error) {