github.com/gophercloud/gophercloud@v1.11.0/openstack/identity/v3/registeredlimits/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/registeredlimits"
     9  	th "github.com/gophercloud/gophercloud/testhelper"
    10  	"github.com/gophercloud/gophercloud/testhelper/client"
    11  )
    12  
    13  // ListOutput provides a single page of List results.
    14  const ListOutput = `
    15  {
    16      "links": {
    17          "self": "http://10.3.150.25/identity/v3/registered_limits",
    18          "previous": null,
    19          "next": null
    20      },
    21      "registered_limits": [
    22          {
    23              "resource_name": "volume",
    24              "region_id": "RegionOne",
    25              "links": {
    26                  "self": "http://10.3.150.25/identity/v3/registered_limits/25a04c7a065c430590881c646cdcdd58"
    27              },
    28              "service_id": "9408080f1970482aa0e38bc2d4ea34b7",
    29              "id": "25a04c7a065c430590881c646cdcdd58",
    30              "default_limit": 11,
    31              "description": "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7"
    32          },
    33          {
    34              "resource_name": "snapshot",
    35              "region_id": "RegionOne",
    36              "links": {
    37                  "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05"
    38              },
    39              "service_id": "9408080f1970482aa0e38bc2d4ea34b7",
    40              "id": "3229b3849f584faea483d6851f7aab05",
    41              "default_limit": 5,
    42              "description": null
    43          }
    44      ]
    45  }
    46  `
    47  
    48  // GetOutput provides a Get result.
    49  const GetOutput = `
    50  {
    51      "registered_limit": {
    52          "id": "3229b3849f584faea483d6851f7aab05",
    53          "service_id": "9408080f1970482aa0e38bc2d4ea34b7",
    54          "region_id": "RegionOne",
    55          "resource_name": "snapshot",
    56          "default_limit": 5,
    57          "description": null,
    58          "links": {
    59              "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05"
    60          }
    61  	}
    62  }
    63  `
    64  
    65  const CreateRequest = `
    66  {
    67      "registered_limits":[
    68          {
    69              "service_id": "9408080f1970482aa0e38bc2d4ea34b7",
    70              "region_id": "RegionOne",
    71              "resource_name": "snapshot",
    72              "default_limit": 5
    73          },
    74          {
    75              "service_id": "9408080f1970482aa0e38bc2d4ea34b7",
    76              "region_id": "RegionOne",
    77              "resource_name": "volume",
    78              "default_limit": 11,
    79              "description": "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7"
    80          }
    81      ]
    82  }
    83  `
    84  
    85  // UpdateRequest provides the input to an Update request.
    86  const UpdateRequest = `
    87  {
    88      "registered_limit": {
    89  	    "service_id": "9408080f1970482aa0e38bc2d4ea34b7",
    90  		"default_limit": 15,
    91  		"resource_name": "volumes"
    92      }
    93  }
    94  `
    95  
    96  // UpdateOutput provides an Update response.
    97  const UpdateOutput = `
    98  {
    99      "registered_limit": {
   100          "id": "3229b3849f584faea483d6851f7aab05",
   101          "service_id": "9408080f1970482aa0e38bc2d4ea34b7",
   102          "region_id": "RegionOne",
   103          "resource_name": "volumes",
   104          "default_limit": 15,
   105          "description": "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7",
   106          "links": {
   107              "self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05"
   108          }
   109      }
   110  }
   111  `
   112  
   113  const CreateOutput = ListOutput
   114  
   115  // FirstLimit is the first limit in the List request.
   116  var FirstRegisteredLimit = registeredlimits.RegisteredLimit{
   117  	ResourceName: "volume",
   118  	RegionID:     "RegionOne",
   119  	Links: map[string]interface{}{
   120  		"self": "http://10.3.150.25/identity/v3/registered_limits/25a04c7a065c430590881c646cdcdd58",
   121  	},
   122  	ServiceID:    "9408080f1970482aa0e38bc2d4ea34b7",
   123  	ID:           "25a04c7a065c430590881c646cdcdd58",
   124  	DefaultLimit: 11,
   125  	Description:  "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7",
   126  }
   127  
   128  // SecondLimit is the second limit in the List request.
   129  var SecondRegisteredLimit = registeredlimits.RegisteredLimit{
   130  	ResourceName: "snapshot",
   131  	RegionID:     "RegionOne",
   132  	Links: map[string]interface{}{
   133  		"self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05",
   134  	},
   135  	ServiceID:    "9408080f1970482aa0e38bc2d4ea34b7",
   136  	ID:           "3229b3849f584faea483d6851f7aab05",
   137  	DefaultLimit: 5,
   138  }
   139  
   140  // UpdatedSecondRegisteredLimit is a Registered Limit Fixture.
   141  var UpdatedSecondRegisteredLimit = registeredlimits.RegisteredLimit{
   142  	ResourceName: "volumes",
   143  	RegionID:     "RegionOne",
   144  	Links: map[string]interface{}{
   145  		"self": "http://10.3.150.25/identity/v3/registered_limits/3229b3849f584faea483d6851f7aab05",
   146  	},
   147  	ServiceID:    "9408080f1970482aa0e38bc2d4ea34b7",
   148  	ID:           "3229b3849f584faea483d6851f7aab05",
   149  	DefaultLimit: 15,
   150  	Description:  "Number of volumes for service 9408080f1970482aa0e38bc2d4ea34b7",
   151  }
   152  
   153  // ExpectedRegisteredLimitsSlice is the slice of registered_limits expected to be returned from ListOutput.
   154  var ExpectedRegisteredLimitsSlice = []registeredlimits.RegisteredLimit{FirstRegisteredLimit, SecondRegisteredLimit}
   155  
   156  // HandleListRegisteredLimitsSuccessfully creates an HTTP handler at `/registered_limits` on the
   157  // test handler mux that responds with a list of two registered limits.
   158  func HandleListRegisteredLimitsSuccessfully(t *testing.T) {
   159  	th.Mux.HandleFunc("/registered_limits", func(w http.ResponseWriter, r *http.Request) {
   160  		th.TestMethod(t, r, "GET")
   161  		th.TestHeader(t, r, "Accept", "application/json")
   162  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   163  
   164  		w.Header().Set("Content-Type", "application/json")
   165  		w.WriteHeader(http.StatusOK)
   166  		fmt.Fprintf(w, ListOutput)
   167  	})
   168  }
   169  
   170  // HandleGetRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the
   171  // test handler mux that responds with a single project.
   172  func HandleGetRegisteredLimitSuccessfully(t *testing.T) {
   173  	th.Mux.HandleFunc("/registered_limits/3229b3849f584faea483d6851f7aab05", func(w http.ResponseWriter, r *http.Request) {
   174  		th.TestMethod(t, r, "GET")
   175  		th.TestHeader(t, r, "Accept", "application/json")
   176  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   177  
   178  		w.Header().Set("Content-Type", "application/json")
   179  		w.WriteHeader(http.StatusOK)
   180  		fmt.Fprintf(w, GetOutput)
   181  	})
   182  }
   183  
   184  // HandleCreateRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the
   185  // test handler mux that tests registered limit creation.
   186  func HandleCreateRegisteredLimitSuccessfully(t *testing.T) {
   187  	th.Mux.HandleFunc("/registered_limits", func(w http.ResponseWriter, r *http.Request) {
   188  		th.TestMethod(t, r, "POST")
   189  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   190  		th.TestJSONRequest(t, r, CreateRequest)
   191  
   192  		w.WriteHeader(http.StatusCreated)
   193  		fmt.Fprintf(w, CreateOutput)
   194  	})
   195  }
   196  
   197  // HandleDeleteRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the
   198  // test handler mux that tests registered_limit deletion.
   199  func HandleDeleteRegisteredLimitSuccessfully(t *testing.T) {
   200  	th.Mux.HandleFunc("/registered_limits/3229b3849f584faea483d6851f7aab05", func(w http.ResponseWriter, r *http.Request) {
   201  		th.TestMethod(t, r, "DELETE")
   202  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   203  
   204  		w.WriteHeader(http.StatusNoContent)
   205  	})
   206  }
   207  
   208  // HandleUpdateRegisteredLimitSuccessfully creates an HTTP handler at `/registered_limits` on the
   209  // test handler mux that tests registered limits updates.
   210  func HandleUpdateRegisteredLimitSuccessfully(t *testing.T) {
   211  	th.Mux.HandleFunc("/registered_limits/3229b3849f584faea483d6851f7aab05", func(w http.ResponseWriter, r *http.Request) {
   212  		th.TestMethod(t, r, "PATCH")
   213  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   214  		th.TestJSONRequest(t, r, UpdateRequest)
   215  
   216  		w.WriteHeader(http.StatusOK)
   217  		fmt.Fprintf(w, UpdateOutput)
   218  	})
   219  }