github.com/huaweicloud/golangsdk@v0.0.0-20210831081626-d823fe11ceba/openstack/identity/v3/regions/testing/fixtures.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 8 "github.com/huaweicloud/golangsdk/openstack/identity/v3/regions" 9 th "github.com/huaweicloud/golangsdk/testhelper" 10 "github.com/huaweicloud/golangsdk/testhelper/client" 11 ) 12 13 // ListOutput provides a single page of Region results. 14 const ListOutput = ` 15 { 16 "links": { 17 "next": null, 18 "previous": null, 19 "self": "http://example.com/identity/v3/regions" 20 }, 21 "regions": [ 22 { 23 "id": "RegionOne-East", 24 "description": "East sub-region of RegionOne", 25 "links": { 26 "self": "http://example.com/identity/v3/regions/RegionOne-East" 27 }, 28 "parent_region_id": "RegionOne" 29 }, 30 { 31 "id": "RegionOne-West", 32 "description": "West sub-region of RegionOne", 33 "links": { 34 "self": "https://example.com/identity/v3/regions/RegionOne-West" 35 }, 36 "extra": { 37 "email": "westsupport@example.com" 38 }, 39 "parent_region_id": "RegionOne" 40 } 41 ] 42 } 43 ` 44 45 // GetOutput provides a Get result. 46 const GetOutput = ` 47 { 48 "region": { 49 "id": "RegionOne-West", 50 "description": "West sub-region of RegionOne", 51 "links": { 52 "self": "https://example.com/identity/v3/regions/RegionOne-West" 53 }, 54 "name": "support", 55 "extra": { 56 "email": "westsupport@example.com" 57 }, 58 "parent_region_id": "RegionOne" 59 } 60 } 61 ` 62 63 // CreateRequest provides the input to a Create request. 64 const CreateRequest = ` 65 { 66 "region": { 67 "id": "RegionOne-West", 68 "description": "West sub-region of RegionOne", 69 "email": "westsupport@example.com", 70 "parent_region_id": "RegionOne" 71 } 72 } 73 ` 74 75 /* 76 // Due to a bug in Keystone, the Extra column of the Region table 77 // is not updatable, see: https://bugs.launchpad.net/keystone/+bug/1729933 78 // The following line should be added to region in UpdateRequest once the 79 // fix is merged. 80 81 "email": "1stwestsupport@example.com" 82 */ 83 // UpdateRequest provides the input to as Update request. 84 const UpdateRequest = ` 85 { 86 "region": { 87 "description": "First West sub-region of RegionOne" 88 } 89 } 90 ` 91 92 /* 93 // Due to a bug in Keystone, the Extra column of the Region table 94 // is not updatable, see: https://bugs.launchpad.net/keystone/+bug/1729933 95 // This following line should replace the email in UpdateOutput.extra once 96 // the fix is merged. 97 98 "email": "1stwestsupport@example.com" 99 */ 100 // UpdateOutput provides an update result. 101 const UpdateOutput = ` 102 { 103 "region": { 104 "id": "RegionOne-West", 105 "links": { 106 "self": "https://example.com/identity/v3/regions/RegionOne-West" 107 }, 108 "description": "First West sub-region of RegionOne", 109 "extra": { 110 "email": "westsupport@example.com" 111 }, 112 "parent_region_id": "RegionOne" 113 } 114 } 115 ` 116 117 // FirstRegion is the first region in the List request. 118 var FirstRegion = regions.Region{ 119 ID: "RegionOne-East", 120 Links: map[string]interface{}{ 121 "self": "http://example.com/identity/v3/regions/RegionOne-East", 122 }, 123 Description: "East sub-region of RegionOne", 124 Extra: map[string]interface{}{}, 125 ParentRegionID: "RegionOne", 126 } 127 128 // SecondRegion is the second region in the List request. 129 var SecondRegion = regions.Region{ 130 ID: "RegionOne-West", 131 Links: map[string]interface{}{ 132 "self": "https://example.com/identity/v3/regions/RegionOne-West", 133 }, 134 Description: "West sub-region of RegionOne", 135 Extra: map[string]interface{}{ 136 "email": "westsupport@example.com", 137 }, 138 ParentRegionID: "RegionOne", 139 } 140 141 /* 142 // Due to a bug in Keystone, the Extra column of the Region table 143 // is not updatable, see: https://bugs.launchpad.net/keystone/+bug/1729933 144 // This should replace the email in SecondRegionUpdated.Extra once the fix 145 // is merged. 146 147 "email": "1stwestsupport@example.com" 148 */ 149 // SecondRegionUpdated is the second region in the List request. 150 var SecondRegionUpdated = regions.Region{ 151 ID: "RegionOne-West", 152 Links: map[string]interface{}{ 153 "self": "https://example.com/identity/v3/regions/RegionOne-West", 154 }, 155 Description: "First West sub-region of RegionOne", 156 Extra: map[string]interface{}{ 157 "email": "westsupport@example.com", 158 }, 159 ParentRegionID: "RegionOne", 160 } 161 162 // ExpectedRegionsSlice is the slice of regions expected to be returned from ListOutput. 163 var ExpectedRegionsSlice = []regions.Region{FirstRegion, SecondRegion} 164 165 // HandleListRegionsSuccessfully creates an HTTP handler at `/regions` on the 166 // test handler mux that responds with a list of two regions. 167 func HandleListRegionsSuccessfully(t *testing.T) { 168 th.Mux.HandleFunc("/regions", func(w http.ResponseWriter, r *http.Request) { 169 th.TestMethod(t, r, "GET") 170 th.TestHeader(t, r, "Accept", "application/json") 171 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 172 173 w.Header().Set("Content-Type", "application/json") 174 w.WriteHeader(http.StatusOK) 175 fmt.Fprintf(w, ListOutput) 176 }) 177 } 178 179 // HandleGetRegionSuccessfully creates an HTTP handler at `/regions` on the 180 // test handler mux that responds with a single region. 181 func HandleGetRegionSuccessfully(t *testing.T) { 182 th.Mux.HandleFunc("/regions/RegionOne-West", func(w http.ResponseWriter, r *http.Request) { 183 th.TestMethod(t, r, "GET") 184 th.TestHeader(t, r, "Accept", "application/json") 185 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 186 187 w.Header().Set("Content-Type", "application/json") 188 w.WriteHeader(http.StatusOK) 189 fmt.Fprintf(w, GetOutput) 190 }) 191 } 192 193 // HandleCreateRegionSuccessfully creates an HTTP handler at `/regions` on the 194 // test handler mux that tests region creation. 195 func HandleCreateRegionSuccessfully(t *testing.T) { 196 th.Mux.HandleFunc("/regions", func(w http.ResponseWriter, r *http.Request) { 197 th.TestMethod(t, r, "POST") 198 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 199 th.TestJSONRequest(t, r, CreateRequest) 200 201 w.WriteHeader(http.StatusCreated) 202 fmt.Fprintf(w, GetOutput) 203 }) 204 } 205 206 // HandleUpdateRegionSuccessfully creates an HTTP handler at `/regions` on the 207 // test handler mux that tests region update. 208 func HandleUpdateRegionSuccessfully(t *testing.T) { 209 th.Mux.HandleFunc("/regions/RegionOne-West", func(w http.ResponseWriter, r *http.Request) { 210 th.TestMethod(t, r, "PATCH") 211 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 212 th.TestJSONRequest(t, r, UpdateRequest) 213 214 w.WriteHeader(http.StatusOK) 215 fmt.Fprintf(w, UpdateOutput) 216 }) 217 } 218 219 // HandleDeleteRegionSuccessfully creates an HTTP handler at `/regions` on the 220 // test handler mux that tests region deletion. 221 func HandleDeleteRegionSuccessfully(t *testing.T) { 222 th.Mux.HandleFunc("/regions/RegionOne-West", func(w http.ResponseWriter, r *http.Request) { 223 th.TestMethod(t, r, "DELETE") 224 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 225 226 w.WriteHeader(http.StatusNoContent) 227 }) 228 }