github.com/gophercloud/gophercloud@v1.11.0/openstack/orchestration/v1/apiversions/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/gophercloud/gophercloud" 9 "github.com/gophercloud/gophercloud/openstack/orchestration/v1/apiversions" 10 "github.com/gophercloud/gophercloud/pagination" 11 th "github.com/gophercloud/gophercloud/testhelper" 12 fake "github.com/gophercloud/gophercloud/testhelper/client" 13 ) 14 15 func TestListVersions(t *testing.T) { 16 th.SetupHTTP() 17 defer th.TeardownHTTP() 18 19 th.Mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 20 th.TestMethod(t, r, "GET") 21 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 22 23 w.Header().Add("Content-Type", "application/json") 24 w.WriteHeader(http.StatusOK) 25 26 fmt.Fprintf(w, ` 27 { 28 "versions": [ 29 { 30 "status": "CURRENT", 31 "id": "v1.0", 32 "links": [ 33 { 34 "href": "http://23.253.228.211:8000/v1", 35 "rel": "self" 36 } 37 ] 38 } 39 ] 40 }`) 41 }) 42 43 count := 0 44 45 apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { 46 count++ 47 actual, err := apiversions.ExtractAPIVersions(page) 48 if err != nil { 49 t.Errorf("Failed to extract API versions: %v", err) 50 return false, err 51 } 52 53 expected := []apiversions.APIVersion{ 54 { 55 Status: "CURRENT", 56 ID: "v1.0", 57 Links: []gophercloud.Link{ 58 { 59 Href: "http://23.253.228.211:8000/v1", 60 Rel: "self", 61 }, 62 }, 63 }, 64 } 65 66 th.AssertDeepEquals(t, expected, actual) 67 68 return true, nil 69 }) 70 71 if count != 1 { 72 t.Errorf("Expected 1 page, got %d", count) 73 } 74 } 75 76 func TestNonJSONCannotBeExtractedIntoAPIVersions(t *testing.T) { 77 th.SetupHTTP() 78 defer th.TeardownHTTP() 79 80 th.Mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { 81 w.WriteHeader(http.StatusOK) 82 }) 83 84 apiversions.ListVersions(fake.ServiceClient()).EachPage(func(page pagination.Page) (bool, error) { 85 if _, err := apiversions.ExtractAPIVersions(page); err == nil { 86 t.Fatalf("Expected error, got nil") 87 } 88 return true, nil 89 }) 90 }