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  }