1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
|
package flavors
import (
"fmt"
"net/http"
"reflect"
"testing"
"github.com/rackspace/gophercloud/pagination"
th "github.com/rackspace/gophercloud/testhelper"
fake "github.com/rackspace/gophercloud/testhelper/client"
)
const tokenID = "blerb"
func TestListFlavors(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
th.Mux.HandleFunc("/flavors/detail", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
w.Header().Add("Content-Type", "application/json")
r.ParseForm()
marker := r.Form.Get("marker")
switch marker {
case "":
fmt.Fprintf(w, `
{
"flavors": [
{
"id": "1",
"name": "m1.tiny",
"disk": 1,
"ram": 512,
"vcpus": 1
},
{
"id": "2",
"name": "m2.small",
"disk": 10,
"ram": 1024,
"vcpus": 2
}
],
"flavors_links": [
{
"href": "%s/flavors/detail?marker=2",
"rel": "next"
}
]
}
`, th.Server.URL)
case "2":
fmt.Fprintf(w, `{ "flavors": [] }`)
default:
t.Fatalf("Unexpected marker: [%s]", marker)
}
})
pages := 0
err := ListDetail(fake.ServiceClient(), nil).EachPage(func(page pagination.Page) (bool, error) {
pages++
actual, err := ExtractFlavors(page)
if err != nil {
return false, err
}
expected := []Flavor{
Flavor{ID: "1", Name: "m1.tiny", Disk: 1, RAM: 512, VCPUs: 1},
Flavor{ID: "2", Name: "m2.small", Disk: 10, RAM: 1024, VCPUs: 2},
}
if !reflect.DeepEqual(expected, actual) {
t.Errorf("Expected %#v, but was %#v", expected, actual)
}
return true, nil
})
if err != nil {
t.Fatal(err)
}
if pages != 1 {
t.Errorf("Expected one page, got %d", pages)
}
}
func TestGetFlavor(t *testing.T) {
th.SetupHTTP()
defer th.TeardownHTTP()
th.Mux.HandleFunc("/flavors/12345", func(w http.ResponseWriter, r *http.Request) {
th.TestMethod(t, r, "GET")
th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
w.Header().Add("Content-Type", "application/json")
fmt.Fprintf(w, `
{
"flavor": {
"id": "1",
"name": "m1.tiny",
"disk": 1,
"ram": 512,
"vcpus": 1,
"rxtx_factor": 1
}
}
`)
})
actual, err := Get(fake.ServiceClient(), "12345").Extract()
if err != nil {
t.Fatalf("Unable to get flavor: %v", err)
}
expected := &Flavor{
ID: "1",
Name: "m1.tiny",
Disk: 1,
RAM: 512,
VCPUs: 1,
RxTxFactor: 1,
}
if !reflect.DeepEqual(expected, actual) {
t.Errorf("Expected %#v, but was %#v", expected, actual)
}
}
|