github.com/gophercloud/gophercloud@v1.11.0/openstack/identity/v3/credentials/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/credentials"
     9  	th "github.com/gophercloud/gophercloud/testhelper"
    10  	"github.com/gophercloud/gophercloud/testhelper/client"
    11  )
    12  
    13  const userID = "bb5476fd12884539b41d5a88f838d773"
    14  const credentialID = "3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
    15  const projectID = "731fc6f265cd486d900f16e84c5cb594"
    16  
    17  // ListOutput provides a single page of Credential results.
    18  const ListOutput = `
    19  {
    20      "credentials": [
    21          {
    22              "user_id": "bb5476fd12884539b41d5a88f838d773",
    23              "links": {
    24                  "self": "http://identity/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
    25              },
    26              "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
    27              "project_id": "731fc6f265cd486d900f16e84c5cb594",
    28              "type": "ec2",
    29              "id": "3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
    30          },
    31          {
    32              "user_id": "6f556708d04b4ea6bc72d7df2296b71a",
    33              "links": {
    34                  "self": "http://identity/v3/credentials/2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609"
    35              },
    36              "blob": "{\"access\":\"7da79ff0aa364e1396f067e352b9b79a\",\"secret\":\"7a18d68ba8834b799d396f3ff6f1e98c\"}",
    37              "project_id": "1a1d14690f3c4ec5bf5f321c5fde3c16",
    38              "type": "ec2",
    39              "id": "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609"
    40          }
    41  	],
    42      "links": {
    43          "self": "http://identity/v3/credentials",
    44          "previous": null,
    45          "next": null
    46      }
    47  }
    48  `
    49  
    50  // GetOutput provides a Get result.
    51  const GetOutput = `
    52  {
    53      "credential": {
    54          "user_id": "bb5476fd12884539b41d5a88f838d773",
    55          "links": {
    56              "self": "http://identity/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
    57          },
    58          "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
    59          "project_id": "731fc6f265cd486d900f16e84c5cb594",
    60          "type": "ec2",
    61          "id": "3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510"
    62      }
    63  }
    64  `
    65  
    66  // CreateRequest provides the input to a Create request.
    67  const CreateRequest = `
    68  {
    69      "credential": {
    70          "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
    71          "project_id": "731fc6f265cd486d900f16e84c5cb594",
    72          "type": "ec2",
    73          "user_id": "bb5476fd12884539b41d5a88f838d773"
    74      }
    75  }
    76  `
    77  
    78  // UpdateRequest provides the input to as Update request.
    79  const UpdateRequest = `
    80  {
    81      "credential": {
    82          "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
    83          "project_id": "731fc6f265cd486d900f16e84c5cb594",
    84          "type": "ec2",
    85          "user_id": "bb5476fd12884539b41d5a88f838d773"
    86      }
    87  }
    88  `
    89  
    90  // UpdateOutput provides an update result.
    91  const UpdateOutput = `
    92  {
    93      "credential": {
    94          "user_id": "bb5476fd12884539b41d5a88f838d773",
    95          "links": {
    96              "self": "http://identity/v3/credentials/2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609"
    97          },
    98          "blob": "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
    99          "project_id": "731fc6f265cd486d900f16e84c5cb594",
   100          "type": "ec2",
   101          "id": "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609"
   102      }
   103  }
   104  `
   105  
   106  var Credential = credentials.Credential{
   107  	ID:        credentialID,
   108  	ProjectID: projectID,
   109  	Type:      "ec2",
   110  	UserID:    userID,
   111  	Blob:      "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
   112  	Links: map[string]interface{}{
   113  		"self": "http://identity/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510",
   114  	},
   115  }
   116  
   117  var FirstCredential = credentials.Credential{
   118  	ID:        credentialID,
   119  	ProjectID: projectID,
   120  	Type:      "ec2",
   121  	UserID:    userID,
   122  	Blob:      "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
   123  	Links: map[string]interface{}{
   124  		"self": "http://identity/v3/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510",
   125  	},
   126  }
   127  
   128  var SecondCredential = credentials.Credential{
   129  	ID:        "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609",
   130  	ProjectID: "1a1d14690f3c4ec5bf5f321c5fde3c16",
   131  	Type:      "ec2",
   132  	UserID:    "6f556708d04b4ea6bc72d7df2296b71a",
   133  	Blob:      "{\"access\":\"7da79ff0aa364e1396f067e352b9b79a\",\"secret\":\"7a18d68ba8834b799d396f3ff6f1e98c\"}",
   134  	Links: map[string]interface{}{
   135  		"self": "http://identity/v3/credentials/2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609",
   136  	},
   137  }
   138  
   139  // SecondCredentialUpdated is how SecondCredential should look after an Update.
   140  var SecondCredentialUpdated = credentials.Credential{
   141  	ID:        "2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609",
   142  	ProjectID: projectID,
   143  	Type:      "ec2",
   144  	UserID:    userID,
   145  	Blob:      "{\"access\":\"181920\",\"secret\":\"secretKey\"}",
   146  	Links: map[string]interface{}{
   147  		"self": "http://identity/v3/credentials/2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609",
   148  	},
   149  }
   150  
   151  // ExpectedCredentialsSlice is the slice of credentials expected to be returned from ListOutput.
   152  var ExpectedCredentialsSlice = []credentials.Credential{FirstCredential, SecondCredential}
   153  
   154  // HandleListCredentialsSuccessfully creates an HTTP handler at `/credentials` on the
   155  // test handler mux that responds with a list of two credentials.
   156  func HandleListCredentialsSuccessfully(t *testing.T) {
   157  	th.Mux.HandleFunc("/credentials", func(w http.ResponseWriter, r *http.Request) {
   158  		th.TestMethod(t, r, "GET")
   159  		th.TestHeader(t, r, "Accept", "application/json")
   160  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   161  
   162  		w.Header().Set("Content-Type", "application/json")
   163  		w.WriteHeader(http.StatusOK)
   164  		fmt.Fprintf(w, ListOutput)
   165  	})
   166  }
   167  
   168  // HandleGetCredentialSuccessfully creates an HTTP handler at `/credentials` on the
   169  // test handler mux that responds with a single credential.
   170  func HandleGetCredentialSuccessfully(t *testing.T) {
   171  	th.Mux.HandleFunc("/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510", func(w http.ResponseWriter, r *http.Request) {
   172  		th.TestMethod(t, r, "GET")
   173  		th.TestHeader(t, r, "Accept", "application/json")
   174  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   175  
   176  		w.Header().Set("Content-Type", "application/json")
   177  		w.WriteHeader(http.StatusOK)
   178  		fmt.Fprintf(w, GetOutput)
   179  	})
   180  }
   181  
   182  // HandleCreateCredentialSuccessfully creates an HTTP handler at `/credentials` on the
   183  // test handler mux that tests credential creation.
   184  func HandleCreateCredentialSuccessfully(t *testing.T) {
   185  	th.Mux.HandleFunc("/credentials", func(w http.ResponseWriter, r *http.Request) {
   186  		th.TestMethod(t, r, "POST")
   187  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   188  		th.TestJSONRequest(t, r, CreateRequest)
   189  
   190  		w.WriteHeader(http.StatusCreated)
   191  		fmt.Fprintf(w, GetOutput)
   192  	})
   193  }
   194  
   195  // HandleDeleteCredentialSuccessfully creates an HTTP handler at `/credentials` on the
   196  // test handler mux that tests credential deletion.
   197  func HandleDeleteCredentialSuccessfully(t *testing.T) {
   198  	th.Mux.HandleFunc("/credentials/3d3367228f9c7665266604462ec60029bcd83ad89614021a80b2eb879c572510", func(w http.ResponseWriter, r *http.Request) {
   199  		th.TestMethod(t, r, "DELETE")
   200  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   201  
   202  		w.WriteHeader(http.StatusNoContent)
   203  	})
   204  }
   205  
   206  // HandleUpdateCredentialsSuccessfully creates an HTTP handler at `/credentials` on the
   207  // test handler mux that tests credentials update.
   208  func HandleUpdateCredentialSuccessfully(t *testing.T) {
   209  	th.Mux.HandleFunc("/credentials/2441494e52ab6d594a34d74586075cb299489bdd1e9389e3ab06467a4f460609", 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  }