github.com/vnpaycloud-console/gophercloud/v2@v2.0.5/openstack/loadbalancer/v2/flavors/testing/requests_test.go (about) 1 package testing 2 3 import ( 4 "context" 5 "fmt" 6 "net/http" 7 "testing" 8 9 "github.com/vnpaycloud-console/gophercloud/v2/openstack/loadbalancer/v2/flavors" 10 "github.com/vnpaycloud-console/gophercloud/v2/pagination" 11 12 fake "github.com/vnpaycloud-console/gophercloud/v2/openstack/loadbalancer/v2/testhelper" 13 th "github.com/vnpaycloud-console/gophercloud/v2/testhelper" 14 "github.com/vnpaycloud-console/gophercloud/v2/testhelper/client" 15 ) 16 17 func TestListFlavors(t *testing.T) { 18 th.SetupHTTP() 19 defer th.TeardownHTTP() 20 HandleFlavorListSuccessfully(t) 21 22 pages := 0 23 err := flavors.List(fake.ServiceClient(), flavors.ListOpts{}).EachPage(context.TODO(), func(_ context.Context, page pagination.Page) (bool, error) { 24 pages++ 25 26 actual, err := flavors.ExtractFlavors(page) 27 if err != nil { 28 return false, err 29 } 30 31 if len(actual) != 2 { 32 t.Fatalf("Expected 2 flavors, got %d", len(actual)) 33 } 34 th.CheckDeepEquals(t, FlavorBasic, actual[0]) 35 th.CheckDeepEquals(t, FlavorAdvance, actual[1]) 36 37 return true, nil 38 }) 39 40 th.AssertNoErr(t, err) 41 42 if pages != 1 { 43 t.Errorf("Expected 1 page, saw %d", pages) 44 } 45 } 46 47 func TestListFlavorsEnabled(t *testing.T) { 48 th.SetupHTTP() 49 defer th.TeardownHTTP() 50 51 func() { 52 testCases := []string{ 53 "true", 54 "false", 55 "", 56 } 57 58 cases := 0 59 th.Mux.HandleFunc("/v2.0/lbaas/flavors", func(w http.ResponseWriter, r *http.Request) { 60 th.TestMethod(t, r, "GET") 61 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 62 63 w.Header().Add("Content-Type", "application/json") 64 if err := r.ParseForm(); err != nil { 65 t.Errorf("Failed to parse request form %v", err) 66 } 67 enabled := r.Form.Get("enabled") 68 if enabled != testCases[cases] { 69 t.Errorf("Expected enabled=%s got %q", testCases[cases], enabled) 70 } 71 cases++ 72 fmt.Fprint(w, `{"flavorprofiles":[]}`) 73 }) 74 }() 75 76 var nilBool *bool 77 enabled := true 78 filters := []*bool{ 79 &enabled, 80 new(bool), 81 nilBool, 82 } 83 for _, filter := range filters { 84 allPages, err := flavors.List(fake.ServiceClient(), flavors.ListOpts{Enabled: filter}).AllPages(context.TODO()) 85 th.AssertNoErr(t, err) 86 _, err = flavors.ExtractFlavors(allPages) 87 th.AssertNoErr(t, err) 88 } 89 } 90 91 func TestListAllFlavors(t *testing.T) { 92 th.SetupHTTP() 93 defer th.TeardownHTTP() 94 HandleFlavorListSuccessfully(t) 95 96 allPages, err := flavors.List(fake.ServiceClient(), flavors.ListOpts{}).AllPages(context.TODO()) 97 th.AssertNoErr(t, err) 98 actual, err := flavors.ExtractFlavors(allPages) 99 th.AssertNoErr(t, err) 100 th.CheckDeepEquals(t, FlavorBasic, actual[0]) 101 th.CheckDeepEquals(t, FlavorAdvance, actual[1]) 102 } 103 104 func TestCreateFlavor(t *testing.T) { 105 th.SetupHTTP() 106 defer th.TeardownHTTP() 107 HandleFlavorCreationSuccessfully(t, SingleFlavorBody) 108 109 actual, err := flavors.Create(context.TODO(), fake.ServiceClient(), flavors.CreateOpts{ 110 Name: "Basic", 111 Description: "A basic standalone Octavia load balancer.", 112 Enabled: true, 113 FlavorProfileId: "9daa2768-74e7-4d13-bf5d-1b8e0dc239e1", 114 }).Extract() 115 th.AssertNoErr(t, err) 116 117 th.CheckDeepEquals(t, FlavorDb, *actual) 118 } 119 120 func TestRequiredCreateOpts(t *testing.T) { 121 res := flavors.Create(context.TODO(), fake.ServiceClient(), flavors.CreateOpts{}) 122 if res.Err == nil { 123 t.Fatalf("Expected error, got none") 124 } 125 } 126 127 func TestGetFlavor(t *testing.T) { 128 th.SetupHTTP() 129 defer th.TeardownHTTP() 130 HandleFlavorGetSuccessfully(t) 131 132 client := fake.ServiceClient() 133 actual, err := flavors.Get(context.TODO(), client, "5548c807-e6e8-43d7-9ea4-b38d34dd74a0").Extract() 134 if err != nil { 135 t.Fatalf("Unexpected Get error: %v", err) 136 } 137 138 th.CheckDeepEquals(t, FlavorDb, *actual) 139 } 140 141 func TestDeleteFlavor(t *testing.T) { 142 th.SetupHTTP() 143 defer th.TeardownHTTP() 144 HandleFlavorDeletionSuccessfully(t) 145 146 res := flavors.Delete(context.TODO(), fake.ServiceClient(), "5548c807-e6e8-43d7-9ea4-b38d34dd74a0") 147 th.AssertNoErr(t, res.Err) 148 } 149 150 func TestUpdateFlavor(t *testing.T) { 151 th.SetupHTTP() 152 defer th.TeardownHTTP() 153 HandleFlavorUpdateSuccessfully(t) 154 155 client := fake.ServiceClient() 156 actual, err := flavors.Update(context.TODO(), client, "5548c807-e6e8-43d7-9ea4-b38d34dd74a0", flavors.UpdateOpts{ 157 Name: "Basic v2", 158 Description: "Rename flavor", 159 Enabled: true, 160 }).Extract() 161 if err != nil { 162 t.Fatalf("Unexpected Update error: %v", err) 163 } 164 165 th.CheckDeepEquals(t, FlavorUpdated, *actual) 166 }