github.com/gophercloud/gophercloud@v1.11.0/openstack/keymanager/v1/secrets/testing/fixtures_test.go (about) 1 package testing 2 3 import ( 4 "fmt" 5 "net/http" 6 "testing" 7 "time" 8 9 "github.com/gophercloud/gophercloud/openstack/keymanager/v1/secrets" 10 th "github.com/gophercloud/gophercloud/testhelper" 11 "github.com/gophercloud/gophercloud/testhelper/client" 12 ) 13 14 // ListResponse provides a single page of RESOURCE results. 15 const ListResponse = ` 16 { 17 "secrets": [ 18 { 19 "algorithm": "aes", 20 "bit_length": 256, 21 "content_types": { 22 "default": "text/plain" 23 }, 24 "created": "2018-06-21T02:49:48", 25 "creator_id": "5c70d99f4a8641c38f8084b32b5e5c0e", 26 "expiration": null, 27 "mode": "cbc", 28 "name": "mysecret", 29 "secret_ref": "http://barbican:9311/v1/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", 30 "secret_type": "opaque", 31 "status": "ACTIVE", 32 "updated": "2018-06-21T02:49:48" 33 }, 34 { 35 "algorithm": "aes", 36 "bit_length": 256, 37 "content_types": { 38 "default": "text/plain" 39 }, 40 "created": "2018-06-21T05:18:45", 41 "creator_id": "5c70d99f4a8641c38f8084b32b5e5c0e", 42 "expiration": null, 43 "mode": "cbc", 44 "name": "anothersecret", 45 "secret_ref": "http://barbican:9311/v1/secrets/1b12b69a-8822-442e-a303-da24ade648ac", 46 "secret_type": "opaque", 47 "status": "ACTIVE", 48 "updated": "2018-06-21T05:18:45" 49 } 50 ], 51 "total": 2 52 }` 53 54 // GetResponse provides a Get result. 55 const GetResponse = ` 56 { 57 "algorithm": "aes", 58 "bit_length": 256, 59 "content_types": { 60 "default": "text/plain" 61 }, 62 "created": "2018-06-21T02:49:48", 63 "creator_id": "5c70d99f4a8641c38f8084b32b5e5c0e", 64 "expiration": null, 65 "mode": "cbc", 66 "name": "mysecret", 67 "secret_ref": "http://barbican:9311/v1/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", 68 "secret_type": "opaque", 69 "status": "ACTIVE", 70 "updated": "2018-06-21T02:49:48" 71 }` 72 73 // GetPayloadResponse provides a payload result. 74 const GetPayloadResponse = `foobar` 75 76 // CreateRequest provides the input to a Create request. 77 const CreateRequest = ` 78 { 79 "algorithm": "aes", 80 "bit_length": 256, 81 "mode": "cbc", 82 "name": "mysecret", 83 "payload": "foobar", 84 "payload_content_type": "text/plain", 85 "secret_type": "opaque", 86 "expiration": "2028-06-21T02:49:48" 87 }` 88 89 // CreateResponse provides a Create result. 90 const CreateResponse = ` 91 { 92 "secret_ref": "http://barbican:9311/v1/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c" 93 }` 94 95 // UpdateRequest provides the input to as Update request. 96 const UpdateRequest = `foobar` 97 98 // FirstSecret is the first secret in the List request. 99 var FirstSecret = secrets.Secret{ 100 Algorithm: "aes", 101 BitLength: 256, 102 ContentTypes: map[string]string{ 103 "default": "text/plain", 104 }, 105 Created: time.Date(2018, 6, 21, 2, 49, 48, 0, time.UTC), 106 CreatorID: "5c70d99f4a8641c38f8084b32b5e5c0e", 107 Mode: "cbc", 108 Name: "mysecret", 109 SecretRef: "http://barbican:9311/v1/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", 110 SecretType: "opaque", 111 Status: "ACTIVE", 112 Updated: time.Date(2018, 6, 21, 2, 49, 48, 0, time.UTC), 113 } 114 115 // SecondSecret is the second secret in the List request. 116 var SecondSecret = secrets.Secret{ 117 Algorithm: "aes", 118 BitLength: 256, 119 ContentTypes: map[string]string{ 120 "default": "text/plain", 121 }, 122 Created: time.Date(2018, 6, 21, 5, 18, 45, 0, time.UTC), 123 CreatorID: "5c70d99f4a8641c38f8084b32b5e5c0e", 124 Mode: "cbc", 125 Name: "anothersecret", 126 SecretRef: "http://barbican:9311/v1/secrets/1b12b69a-8822-442e-a303-da24ade648ac", 127 SecretType: "opaque", 128 Status: "ACTIVE", 129 Updated: time.Date(2018, 6, 21, 5, 18, 45, 0, time.UTC), 130 } 131 132 // ExpectedSecretsSlice is the slice of secrets expected to be returned from ListResponse. 133 var ExpectedSecretsSlice = []secrets.Secret{FirstSecret, SecondSecret} 134 135 // ExpectedCreateResult is the result of a create request 136 var ExpectedCreateResult = secrets.Secret{ 137 SecretRef: "http://barbican:9311/v1/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", 138 } 139 140 const GetMetadataResponse = ` 141 { 142 "metadata": { 143 "foo": "bar", 144 "something": "something else" 145 } 146 }` 147 148 // ExpectedMetadata is the result of a Get or Create request. 149 var ExpectedMetadata = map[string]string{ 150 "foo": "bar", 151 "something": "something else", 152 } 153 154 const CreateMetadataRequest = ` 155 { 156 "metadata": { 157 "foo": "bar", 158 "something": "something else" 159 } 160 }` 161 162 const CreateMetadataResponse = ` 163 { 164 "metadata_ref": "http://barbican:9311/v1/secrets/1b12b69a-8822-442e-a303-da24ade648ac/metadata" 165 }` 166 167 // ExpectedCreateMetadataResult is the result of a Metadata create request. 168 var ExpectedCreateMetadataResult = map[string]string{ 169 "metadata_ref": "http://barbican:9311/v1/secrets/1b12b69a-8822-442e-a303-da24ade648ac/metadata", 170 } 171 172 const MetadatumRequest = ` 173 { 174 "key": "foo", 175 "value": "bar" 176 }` 177 178 const MetadatumResponse = ` 179 { 180 "key": "foo", 181 "value": "bar" 182 }` 183 184 // ExpectedMetadatum is the result of a Metadatum Get, Create, or Update 185 // request 186 var ExpectedMetadatum = secrets.Metadatum{ 187 Key: "foo", 188 Value: "bar", 189 } 190 191 // HandleListSecretsSuccessfully creates an HTTP handler at `/secrets` on the 192 // test handler mux that responds with a list of two secrets. 193 func HandleListSecretsSuccessfully(t *testing.T) { 194 th.Mux.HandleFunc("/secrets", func(w http.ResponseWriter, r *http.Request) { 195 th.TestMethod(t, r, "GET") 196 th.TestHeader(t, r, "Accept", "application/json") 197 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 198 199 w.Header().Set("Content-Type", "application/json") 200 w.WriteHeader(http.StatusOK) 201 fmt.Fprintf(w, ListResponse) 202 }) 203 } 204 205 // HandleGetSecretSuccessfully creates an HTTP handler at `/secrets` on the 206 // test handler mux that responds with a single secret. 207 func HandleGetSecretSuccessfully(t *testing.T) { 208 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", func(w http.ResponseWriter, r *http.Request) { 209 th.TestMethod(t, r, "GET") 210 th.TestHeader(t, r, "Accept", "application/json") 211 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 212 213 w.Header().Set("Content-Type", "application/json") 214 w.WriteHeader(http.StatusOK) 215 fmt.Fprintf(w, GetResponse) 216 }) 217 } 218 219 // HandleGetPayloadSuccessfully creates an HTTP handler at `/secrets` on the 220 // test handler mux that responds with a single secret. 221 func HandleGetPayloadSuccessfully(t *testing.T) { 222 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c/payload", func(w http.ResponseWriter, r *http.Request) { 223 th.TestMethod(t, r, "GET") 224 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 225 226 w.Header().Set("Content-Type", "text/plain") 227 w.WriteHeader(http.StatusOK) 228 fmt.Fprintf(w, GetPayloadResponse) 229 }) 230 } 231 232 // HandleCreateSecretSuccessfully creates an HTTP handler at `/secrets` on the 233 // test handler mux that tests secret creation. 234 func HandleCreateSecretSuccessfully(t *testing.T) { 235 th.Mux.HandleFunc("/secrets", func(w http.ResponseWriter, r *http.Request) { 236 th.TestMethod(t, r, "POST") 237 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 238 th.TestJSONRequest(t, r, CreateRequest) 239 240 w.WriteHeader(http.StatusCreated) 241 fmt.Fprintf(w, CreateResponse) 242 }) 243 } 244 245 // HandleDeleteSecretSuccessfully creates an HTTP handler at `/secrets` on the 246 // test handler mux that tests secret deletion. 247 func HandleDeleteSecretSuccessfully(t *testing.T) { 248 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", func(w http.ResponseWriter, r *http.Request) { 249 th.TestMethod(t, r, "DELETE") 250 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 251 252 w.WriteHeader(http.StatusNoContent) 253 }) 254 } 255 256 // HandleUpdateSecretSuccessfully creates an HTTP handler at `/secrets` on the 257 // test handler mux that tests secret updates. 258 func HandleUpdateSecretSuccessfully(t *testing.T) { 259 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c", func(w http.ResponseWriter, r *http.Request) { 260 th.TestMethod(t, r, "PUT") 261 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 262 th.TestBody(t, r, `foobar`) 263 264 w.Header().Set("Content-Type", "text/plain") 265 w.WriteHeader(http.StatusNoContent) 266 }) 267 } 268 269 // HandleGetMetadataSuccessfully creates an HTTP handler at 270 // `/secrets/uuid/metadata` on the test handler mux that responds with 271 // retrieved metadata. 272 func HandleGetMetadataSuccessfully(t *testing.T) { 273 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c/metadata", func(w http.ResponseWriter, r *http.Request) { 274 th.TestMethod(t, r, "GET") 275 th.TestHeader(t, r, "Accept", "application/json") 276 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 277 278 w.Header().Set("Content-Type", "application/json") 279 w.WriteHeader(http.StatusOK) 280 fmt.Fprintf(w, GetMetadataResponse) 281 }) 282 } 283 284 // HandleCreateMetadataSuccessfully creates an HTTP handler at 285 // `/secrets/uuid/metadata` on the test handler mux that responds with 286 // a metadata reference URL. 287 func HandleCreateMetadataSuccessfully(t *testing.T) { 288 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c/metadata", func(w http.ResponseWriter, r *http.Request) { 289 th.TestMethod(t, r, "PUT") 290 th.TestHeader(t, r, "Accept", "application/json") 291 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 292 th.TestJSONRequest(t, r, CreateMetadataRequest) 293 294 w.Header().Set("Content-Type", "application/json") 295 w.WriteHeader(http.StatusCreated) 296 fmt.Fprintf(w, CreateMetadataResponse) 297 }) 298 } 299 300 // HandleGetMetadatumSuccessfully creates an HTTP handler at 301 // `/secrets/uuid/metadata/foo` on the test handler mux that responds with a 302 // single metadatum. 303 func HandleGetMetadatumSuccessfully(t *testing.T) { 304 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c/metadata/foo", func(w http.ResponseWriter, r *http.Request) { 305 th.TestMethod(t, r, "GET") 306 th.TestHeader(t, r, "Accept", "application/json") 307 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 308 309 w.Header().Set("Content-Type", "application/json") 310 w.WriteHeader(http.StatusOK) 311 fmt.Fprintf(w, MetadatumResponse) 312 }) 313 } 314 315 // HandleCreateMetadatumSuccessfully creates an HTTP handler at 316 // `/secrets/uuid/metadata` on the test handler mux that responds with 317 // a single created metadata. 318 func HandleCreateMetadatumSuccessfully(t *testing.T) { 319 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c/metadata", func(w http.ResponseWriter, r *http.Request) { 320 th.TestMethod(t, r, "POST") 321 th.TestHeader(t, r, "Accept", "application/json") 322 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 323 th.TestJSONRequest(t, r, MetadatumRequest) 324 325 w.Header().Set("Content-Type", "application/json") 326 w.WriteHeader(http.StatusCreated) 327 fmt.Fprintf(w, MetadatumResponse) 328 }) 329 } 330 331 // HandleUpdateMetadatumSuccessfully creates an HTTP handler at 332 // `/secrets/uuid/metadata/foo` on the test handler mux that responds with a 333 // single updated metadatum. 334 func HandleUpdateMetadatumSuccessfully(t *testing.T) { 335 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c/metadata/foo", func(w http.ResponseWriter, r *http.Request) { 336 th.TestMethod(t, r, "PUT") 337 th.TestHeader(t, r, "Accept", "application/json") 338 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 339 th.TestJSONRequest(t, r, MetadatumRequest) 340 341 w.Header().Set("Content-Type", "application/json") 342 w.WriteHeader(http.StatusOK) 343 fmt.Fprintf(w, MetadatumResponse) 344 }) 345 } 346 347 // HandleDeleteMetadatumSuccessfully creates an HTTP handler at 348 // `/secrets/uuid/metadata/key` on the test handler mux that tests metadata 349 // deletion. 350 func HandleDeleteMetadatumSuccessfully(t *testing.T) { 351 th.Mux.HandleFunc("/secrets/1b8068c4-3bb6-4be6-8f1e-da0d1ea0b67c/metadata/foo", func(w http.ResponseWriter, r *http.Request) { 352 th.TestMethod(t, r, "DELETE") 353 th.TestHeader(t, r, "X-Auth-Token", client.TokenID) 354 355 w.WriteHeader(http.StatusNoContent) 356 }) 357 }