github.com/huaweicloud/golangsdk@v0.0.0-20210831081626-d823fe11ceba/openstack/compute/v2/extensions/secgroups/testing/fixtures.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 th "github.com/huaweicloud/golangsdk/testhelper" 9 fake "github.com/huaweicloud/golangsdk/testhelper/client" 10 ) 11 12 const rootPath = "/os-security-groups" 13 14 const listGroupsJSON = ` 15 { 16 "security_groups": [ 17 { 18 "description": "default", 19 "id": "{groupID}", 20 "name": "default", 21 "rules": [], 22 "tenant_id": "openstack" 23 } 24 ] 25 } 26 ` 27 28 func mockListGroupsResponse(t *testing.T) { 29 th.Mux.HandleFunc(rootPath, func(w http.ResponseWriter, r *http.Request) { 30 th.TestMethod(t, r, "GET") 31 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 32 33 w.Header().Add("Content-Type", "application/json") 34 w.WriteHeader(http.StatusOK) 35 36 fmt.Fprintf(w, listGroupsJSON) 37 }) 38 } 39 40 func mockListGroupsByServerResponse(t *testing.T, serverID string) { 41 url := fmt.Sprintf("/servers/%s%s", serverID, rootPath) 42 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 43 th.TestMethod(t, r, "GET") 44 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 45 46 w.Header().Add("Content-Type", "application/json") 47 w.WriteHeader(http.StatusOK) 48 49 fmt.Fprintf(w, listGroupsJSON) 50 }) 51 } 52 53 func mockCreateGroupResponse(t *testing.T) { 54 th.Mux.HandleFunc(rootPath, func(w http.ResponseWriter, r *http.Request) { 55 th.TestMethod(t, r, "POST") 56 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 57 58 th.TestJSONRequest(t, r, ` 59 { 60 "security_group": { 61 "name": "test", 62 "description": "something" 63 } 64 } 65 `) 66 67 w.Header().Add("Content-Type", "application/json") 68 w.WriteHeader(http.StatusOK) 69 70 fmt.Fprintf(w, ` 71 { 72 "security_group": { 73 "description": "something", 74 "id": "{groupID}", 75 "name": "test", 76 "rules": [], 77 "tenant_id": "openstack" 78 } 79 } 80 `) 81 }) 82 } 83 84 func mockUpdateGroupResponse(t *testing.T, groupID string) { 85 url := fmt.Sprintf("%s/%s", rootPath, groupID) 86 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 87 th.TestMethod(t, r, "PUT") 88 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 89 90 th.TestJSONRequest(t, r, ` 91 { 92 "security_group": { 93 "name": "new_name", 94 "description": "new_desc" 95 } 96 } 97 `) 98 99 w.Header().Add("Content-Type", "application/json") 100 w.WriteHeader(http.StatusOK) 101 102 fmt.Fprintf(w, ` 103 { 104 "security_group": { 105 "description": "something", 106 "id": "{groupID}", 107 "name": "new_name", 108 "rules": [], 109 "tenant_id": "openstack" 110 } 111 } 112 `) 113 }) 114 } 115 116 func mockGetGroupsResponse(t *testing.T, groupID string) { 117 url := fmt.Sprintf("%s/%s", rootPath, groupID) 118 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 119 th.TestMethod(t, r, "GET") 120 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 121 122 w.Header().Add("Content-Type", "application/json") 123 w.WriteHeader(http.StatusOK) 124 125 fmt.Fprintf(w, ` 126 { 127 "security_group": { 128 "description": "default", 129 "id": "{groupID}", 130 "name": "default", 131 "rules": [ 132 { 133 "from_port": 80, 134 "group": { 135 "tenant_id": "openstack", 136 "name": "default" 137 }, 138 "ip_protocol": "TCP", 139 "to_port": 85, 140 "parent_group_id": "{groupID}", 141 "ip_range": { 142 "cidr": "0.0.0.0" 143 }, 144 "id": "{ruleID}" 145 } 146 ], 147 "tenant_id": "openstack" 148 } 149 } 150 `) 151 }) 152 } 153 154 func mockGetNumericIDGroupResponse(t *testing.T, groupID int) { 155 url := fmt.Sprintf("%s/%d", rootPath, groupID) 156 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 157 th.TestMethod(t, r, "GET") 158 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 159 160 w.Header().Add("Content-Type", "application/json") 161 w.WriteHeader(http.StatusOK) 162 163 fmt.Fprintf(w, ` 164 { 165 "security_group": { 166 "id": %d 167 } 168 } 169 `, groupID) 170 }) 171 } 172 173 func mockGetNumericIDGroupRuleResponse(t *testing.T, groupID int) { 174 url := fmt.Sprintf("%s/%d", rootPath, groupID) 175 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 176 th.TestMethod(t, r, "GET") 177 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 178 179 w.Header().Add("Content-Type", "application/json") 180 w.WriteHeader(http.StatusOK) 181 182 fmt.Fprintf(w, ` 183 { 184 "security_group": { 185 "id": %d, 186 "rules": [ 187 { 188 "parent_group_id": %d, 189 "id": %d 190 } 191 ] 192 } 193 } 194 `, groupID, groupID, groupID) 195 }) 196 } 197 198 func mockDeleteGroupResponse(t *testing.T, groupID string) { 199 url := fmt.Sprintf("%s/%s", rootPath, groupID) 200 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 201 th.TestMethod(t, r, "DELETE") 202 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 203 w.Header().Add("Content-Type", "application/json") 204 w.WriteHeader(http.StatusAccepted) 205 }) 206 } 207 208 func mockAddRuleResponse(t *testing.T) { 209 th.Mux.HandleFunc("/os-security-group-rules", func(w http.ResponseWriter, r *http.Request) { 210 th.TestMethod(t, r, "POST") 211 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 212 213 th.TestJSONRequest(t, r, ` 214 { 215 "security_group_rule": { 216 "from_port": 22, 217 "ip_protocol": "TCP", 218 "to_port": 22, 219 "parent_group_id": "{groupID}", 220 "cidr": "0.0.0.0/0" 221 } 222 } `) 223 224 w.Header().Add("Content-Type", "application/json") 225 w.WriteHeader(http.StatusOK) 226 227 fmt.Fprintf(w, ` 228 { 229 "security_group_rule": { 230 "from_port": 22, 231 "group": {}, 232 "ip_protocol": "TCP", 233 "to_port": 22, 234 "parent_group_id": "{groupID}", 235 "ip_range": { 236 "cidr": "0.0.0.0/0" 237 }, 238 "id": "{ruleID}" 239 } 240 }`) 241 }) 242 } 243 244 func mockAddRuleResponseICMPZero(t *testing.T) { 245 th.Mux.HandleFunc("/os-security-group-rules", func(w http.ResponseWriter, r *http.Request) { 246 th.TestMethod(t, r, "POST") 247 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 248 249 th.TestJSONRequest(t, r, ` 250 { 251 "security_group_rule": { 252 "from_port": 0, 253 "ip_protocol": "ICMP", 254 "to_port": 0, 255 "parent_group_id": "{groupID}", 256 "cidr": "0.0.0.0/0" 257 } 258 } `) 259 260 w.Header().Add("Content-Type", "application/json") 261 w.WriteHeader(http.StatusOK) 262 263 fmt.Fprintf(w, ` 264 { 265 "security_group_rule": { 266 "from_port": 0, 267 "group": {}, 268 "ip_protocol": "ICMP", 269 "to_port": 0, 270 "parent_group_id": "{groupID}", 271 "ip_range": { 272 "cidr": "0.0.0.0/0" 273 }, 274 "id": "{ruleID}" 275 } 276 }`) 277 }) 278 } 279 280 func mockDeleteRuleResponse(t *testing.T, ruleID string) { 281 url := fmt.Sprintf("/os-security-group-rules/%s", ruleID) 282 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 283 th.TestMethod(t, r, "DELETE") 284 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 285 w.Header().Add("Content-Type", "application/json") 286 w.WriteHeader(http.StatusAccepted) 287 }) 288 } 289 290 func mockAddServerToGroupResponse(t *testing.T, serverID string) { 291 url := fmt.Sprintf("/servers/%s/action", serverID) 292 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 293 th.TestMethod(t, r, "POST") 294 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 295 296 th.TestJSONRequest(t, r, ` 297 { 298 "addSecurityGroup": { 299 "name": "test" 300 } 301 } 302 `) 303 304 w.Header().Add("Content-Type", "application/json") 305 w.WriteHeader(http.StatusAccepted) 306 }) 307 } 308 309 func mockRemoveServerFromGroupResponse(t *testing.T, serverID string) { 310 url := fmt.Sprintf("/servers/%s/action", serverID) 311 th.Mux.HandleFunc(url, func(w http.ResponseWriter, r *http.Request) { 312 th.TestMethod(t, r, "POST") 313 th.TestHeader(t, r, "X-Auth-Token", fake.TokenID) 314 315 th.TestJSONRequest(t, r, ` 316 { 317 "removeSecurityGroup": { 318 "name": "test" 319 } 320 } 321 `) 322 323 w.Header().Add("Content-Type", "application/json") 324 w.WriteHeader(http.StatusAccepted) 325 }) 326 }