github.com/gophercloud/gophercloud@v1.11.0/openstack/identity/v3/registeredlimits/testing/fixtures_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/gophercloud/gophercloud/openstack/identity/v3/registeredlimits" 9 th "github.com/gophercloud/gophercloud/testhelper" 10 "github.com/gophercloud/gophercloud/testhelper/client" 11 ) 12 13 // ListOutput provides a single page of List results. 14 const ListOutput = ` 15 { 16 "links": { 17 "self": "http://10.3.150.25/identity/v3/registered_limits", 18 "previous": null, 19 "next": null 20 }, 21 "registered_limits": [ 22 { 23 "resource_name": "volume", 24 "region_id": "RegionOne", 25 "links": { 26 "self": "http://10.3.150.25/identity/v3/registered_limits/25a04c7a065c430590881c646cdcdd58" 27 }, 28 "service_id": "9408080f1970482aa0e38bc2d4ea34b7", 29 "id": "25a04c7a065c430590881c646cdcdd58", 30 "default_limit": 11, 31 "description": "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7" 32 }, 33 { 34 "resource_name": "snapshot", 35 "region_id": "RegionOne", 36 "links": { 37 "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05" 38 }, 39 "service_id": "9408080f1970482aa0e38bc2d4ea34b7", 40 "id": "3229b3849f584faea483d6851f7aab05", 41 "default_limit": 5, 42 "description": null 43 } 44 ] 45 } 46 ` 47 48 // GetOutput provides a Get result. 49 const GetOutput = ` 50 { 51 "registered_limit": { 52 "id": "3229b3849f584faea483d6851f7aab05", 53 "service_id": "9408080f1970482aa0e38bc2d4ea34b7", 54 "region_id": "RegionOne", 55 "resource_name": "snapshot", 56 "default_limit": 5, 57 "description": null, 58 "links": { 59 "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05" 60 } 61 } 62 } 63 ` 64 65 const CreateRequest = ` 66 { 67 "registered_limits":[ 68 { 69 "service_id": "9408080f1970482aa0e38bc2d4ea34b7", 70 "region_id": "RegionOne", 71 "resource_name": "snapshot", 72 "default_limit": 5 73 }, 74 { 75 "service_id": "9408080f1970482aa0e38bc2d4ea34b7", 76 "region_id": "RegionOne", 77 "resource_name": "volume", 78 "default_limit": 11, 79 "description": "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7" 80 } 81 ] 82 } 83 ` 84 85 // UpdateRequest provides the input to an Update request. 86 const UpdateRequest = ` 87 { 88 "registered_limit": { 89 "service_id": "9408080f1970482aa0e38bc2d4ea34b7", 90 "default_limit": 15, 91 "resource_name": "volumes" 92 } 93 } 94 ` 95 96 // UpdateOutput provides an Update response. 97 const UpdateOutput = ` 98 { 99 "registered_limit": { 100 "id": "3229b3849f584faea483d6851f7aab05", 101 "service_id": "9408080f1970482aa0e38bc2d4ea34b7", 102 "region_id": "RegionOne", 103 "resource_name": "volumes", 104 "default_limit": 15, 105 "description": "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7", 106 "links": { 107 "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05" 108 } 109 } 110 } 111 ` 112 113 const CreateOutput = ListOutput 114 115 // FirstLimit is the first limit in the List request. 116 var FirstRegisteredLimit = registeredlimits.RegisteredLimit{ 117 ResourceName: "volume", 118 RegionID: "RegionOne", 119 Links: map[string]interface{}{ 120 "self": "http://10.3.150.25/identity/v3/registered_limits/25a04c7a065c430590881c646cdcdd58", 121 }, 122 ServiceID: "9408080f1970482aa0e38bc2d4ea34b7", 123 ID: "25a04c7a065c430590881c646cdcdd58", 124 DefaultLimit: 11, 125 Description: "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7", 126 } 127 128 // SecondLimit is the second limit in the List request. 129 var SecondRegisteredLimit = registeredlimits.RegisteredLimit{ 130 ResourceName: "snapshot", 131 RegionID: "RegionOne", 132 Links: map[string]interface{}{ 133 "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05", 134 }, 135 ServiceID: "9408080f1970482aa0e38bc2d4ea34b7", 136 ID: "3229b3849f584faea483d6851f7aab05", 137 DefaultLimit: 5, 138 } 139 140 // UpdatedSecondRegisteredLimit is a Registered Limit Fixture. 141 var UpdatedSecondRegisteredLimit = registeredlimits.RegisteredLimit{ 142 ResourceName: "volumes", 143 RegionID: "RegionOne", 144 Links: map[string]interface{}{ 145 "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05", 146 }, 147 ServiceID: "9408080f1970482aa0e38bc2d4ea34b7", 148 ID: "3229b3849f584faea483d6851f7aab05", 149 DefaultLimit: 15, 150 Description: "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7", 151 } 152 153 // ExpectedRegisteredLimitsSlice is the slice of registered_limits expected to be returned from ListOutput. 154 var ExpectedRegisteredLimitsSlice = []registeredlimits.RegisteredLimit{FirstRegisteredLimit, SecondRegisteredLimit} 155 156 // HandleListRegisteredLimitsSuccessfully creates an HTTP handler at `/registered_limits` on the 157 // test handler mux that responds with a list of two registered limits. 158 func HandleListRegisteredLimitsSuccessfully(t *testing.T) { 159 th.Mux.HandleFunc("/registered_limits", func(w http.ResponseWriter, r *http.Request) { 160 th.TestMethod(t, r, "GET") 161 th.TestHeader(t, r, "Accept", "application/json") 162 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 163 164 w.Header().Set("Content-Type", "application/json") 165 w.WriteHeader(http.StatusOK) 166 fmt.Fprintf(w, ListOutput) 167 }) 168 } 169 170 // HandleGetRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the 171 // test handler mux that responds with a single project. 172 func HandleGetRegisteredLimitSuccessfully(t *testing.T) { 173 th.Mux.HandleFunc("/registered_limits/3229b3849f584faea483d6851f7aab05", func(w http.ResponseWriter, r *http.Request) { 174 th.TestMethod(t, r, "GET") 175 th.TestHeader(t, r, "Accept", "application/json") 176 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 177 178 w.Header().Set("Content-Type", "application/json") 179 w.WriteHeader(http.StatusOK) 180 fmt.Fprintf(w, GetOutput) 181 }) 182 } 183 184 // HandleCreateRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the 185 // test handler mux that tests registered limit creation. 186 func HandleCreateRegisteredLimitSuccessfully(t *testing.T) { 187 th.Mux.HandleFunc("/registered_limits", func(w http.ResponseWriter, r *http.Request) { 188 th.TestMethod(t, r, "POST") 189 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 190 th.TestJSONRequest(t, r, CreateRequest) 191 192 w.WriteHeader(http.StatusCreated) 193 fmt.Fprintf(w, CreateOutput) 194 }) 195 } 196 197 // HandleDeleteRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the 198 // test handler mux that tests registered_limit deletion. 199 func HandleDeleteRegisteredLimitSuccessfully(t *testing.T) { 200 th.Mux.HandleFunc("/registered_limits/3229b3849f584faea483d6851f7aab05", func(w http.ResponseWriter, r *http.Request) { 201 th.TestMethod(t, r, "DELETE") 202 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 203 204 w.WriteHeader(http.StatusNoContent) 205 }) 206 } 207 208 // HandleUpdateRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the 209 // test handler mux that tests registered limits updates. 210 func HandleUpdateRegisteredLimitSuccessfully(t *testing.T) { 211 th.Mux.HandleFunc("/registered_limits/3229b3849f584faea483d6851f7aab05", func(w http.ResponseWriter, r *http.Request) { 212 th.TestMethod(t, r, "PATCH") 213 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 214 th.TestJSONRequest(t, r, UpdateRequest) 215 216 w.WriteHeader(http.StatusOK) 217 fmt.Fprintf(w, UpdateOutput) 218 }) 219 }