github.com/huaweicloud/golangsdk@v0.0.0-20210831081626-d823fe11ceba/openstack/identity/v3/groups/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/groups"
     9  	th "github.com/huaweicloud/golangsdk/testhelper"
    10  	"github.com/huaweicloud/golangsdk/testhelper/client"
    11  )
    12  
    13  // ListOutput provides a single page of Group results.
    14  const ListOutput = `
    15  {
    16      "links": {
    17          "next": null,
    18          "previous": null,
    19          "self": "http://example.com/identity/v3/groups"
    20      },
    21      "groups": [
    22          {
    23              "domain_id": "default",
    24              "id": "2844b2a08be147a08ef58317d6471f1f",
    25              "description": "group for internal support users",
    26              "links": {
    27                  "self": "http://example.com/identity/v3/groups/2844b2a08be147a08ef58317d6471f1f"
    28              },
    29              "name": "internal support",
    30              "extra": {
    31                  "email": "support@localhost"
    32              }
    33          },
    34          {
    35              "domain_id": "1789d1",
    36              "id": "9fe1d3",
    37              "description": "group for support users",
    38              "links": {
    39                  "self": "https://example.com/identity/v3/groups/9fe1d3"
    40              },
    41              "name": "support",
    42              "extra": {
    43                  "email": "support@example.com"
    44              }
    45          }
    46      ]
    47  }
    48  `
    49  
    50  // GetOutput provides a Get result.
    51  const GetOutput = `
    52  {
    53      "group": {
    54          "domain_id": "1789d1",
    55          "id": "9fe1d3",
    56          "description": "group for support users",
    57          "links": {
    58              "self": "https://example.com/identity/v3/groups/9fe1d3"
    59          },
    60          "name": "support",
    61          "extra": {
    62              "email": "support@example.com"
    63          }
    64      }
    65  }
    66  `
    67  
    68  // CreateRequest provides the input to a Create request.
    69  const CreateRequest = `
    70  {
    71      "group": {
    72          "domain_id": "1789d1",
    73          "name": "support",
    74          "description": "group for support users",
    75          "email": "support@example.com"
    76      }
    77  }
    78  `
    79  
    80  // UpdateRequest provides the input to as Update request.
    81  const UpdateRequest = `
    82  {
    83      "group": {
    84          "description": "L2 Support Team",
    85          "email": "supportteam@example.com"
    86      }
    87  }
    88  `
    89  
    90  // UpdateOutput provides an update result.
    91  const UpdateOutput = `
    92  {
    93      "group": {
    94          "domain_id": "1789d1",
    95          "id": "9fe1d3",
    96          "links": {
    97              "self": "https://example.com/identity/v3/groups/9fe1d3"
    98          },
    99          "name": "support",
   100          "description": "L2 Support Team",
   101          "extra": {
   102              "email": "supportteam@example.com"
   103          }
   104      }
   105  }
   106  `
   107  
   108  // FirstGroup is the first group in the List request.
   109  var FirstGroup = groups.Group{
   110  	DomainID: "default",
   111  	ID:       "2844b2a08be147a08ef58317d6471f1f",
   112  	Links: map[string]interface{}{
   113  		"self": "http://example.com/identity/v3/groups/2844b2a08be147a08ef58317d6471f1f",
   114  	},
   115  	Name:        "internal support",
   116  	Description: "group for internal support users",
   117  	Extra: map[string]interface{}{
   118  		"email": "support@localhost",
   119  	},
   120  }
   121  
   122  // SecondGroup is the second group in the List request.
   123  var SecondGroup = groups.Group{
   124  	DomainID: "1789d1",
   125  	ID:       "9fe1d3",
   126  	Links: map[string]interface{}{
   127  		"self": "https://example.com/identity/v3/groups/9fe1d3",
   128  	},
   129  	Name:        "support",
   130  	Description: "group for support users",
   131  	Extra: map[string]interface{}{
   132  		"email": "support@example.com",
   133  	},
   134  }
   135  
   136  // SecondGroupUpdated is how SecondGroup should look after an Update.
   137  var SecondGroupUpdated = groups.Group{
   138  	DomainID: "1789d1",
   139  	ID:       "9fe1d3",
   140  	Links: map[string]interface{}{
   141  		"self": "https://example.com/identity/v3/groups/9fe1d3",
   142  	},
   143  	Name:        "support",
   144  	Description: "L2 Support Team",
   145  	Extra: map[string]interface{}{
   146  		"email": "supportteam@example.com",
   147  	},
   148  }
   149  
   150  // ExpectedGroupsSlice is the slice of groups expected to be returned from ListOutput.
   151  var ExpectedGroupsSlice = []groups.Group{FirstGroup, SecondGroup}
   152  
   153  // HandleListGroupsSuccessfully creates an HTTP handler at `/groups` on the
   154  // test handler mux that responds with a list of two groups.
   155  func HandleListGroupsSuccessfully(t *testing.T) {
   156  	th.Mux.HandleFunc("/groups", func(w http.ResponseWriter, r *http.Request) {
   157  		th.TestMethod(t, r, "GET")
   158  		th.TestHeader(t, r, "Accept", "application/json")
   159  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   160  
   161  		w.Header().Set("Content-Type", "application/json")
   162  		w.WriteHeader(http.StatusOK)
   163  		fmt.Fprintf(w, ListOutput)
   164  	})
   165  }
   166  
   167  // HandleGetGroupSuccessfully creates an HTTP handler at `/groups` on the
   168  // test handler mux that responds with a single group.
   169  func HandleGetGroupSuccessfully(t *testing.T) {
   170  	th.Mux.HandleFunc("/groups/9fe1d3", func(w http.ResponseWriter, r *http.Request) {
   171  		th.TestMethod(t, r, "GET")
   172  		th.TestHeader(t, r, "Accept", "application/json")
   173  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   174  
   175  		w.Header().Set("Content-Type", "application/json")
   176  		w.WriteHeader(http.StatusOK)
   177  		fmt.Fprintf(w, GetOutput)
   178  	})
   179  }
   180  
   181  // HandleCreateGroupSuccessfully creates an HTTP handler at `/groups` on the
   182  // test handler mux that tests group creation.
   183  func HandleCreateGroupSuccessfully(t *testing.T) {
   184  	th.Mux.HandleFunc("/groups", func(w http.ResponseWriter, r *http.Request) {
   185  		th.TestMethod(t, r, "POST")
   186  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   187  		th.TestJSONRequest(t, r, CreateRequest)
   188  
   189  		w.WriteHeader(http.StatusCreated)
   190  		fmt.Fprintf(w, GetOutput)
   191  	})
   192  }
   193  
   194  // HandleUpdateGroupSuccessfully creates an HTTP handler at `/groups` on the
   195  // test handler mux that tests group update.
   196  func HandleUpdateGroupSuccessfully(t *testing.T) {
   197  	th.Mux.HandleFunc("/groups/9fe1d3", func(w http.ResponseWriter, r *http.Request) {
   198  		th.TestMethod(t, r, "PATCH")
   199  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   200  		th.TestJSONRequest(t, r, UpdateRequest)
   201  
   202  		w.WriteHeader(http.StatusOK)
   203  		fmt.Fprintf(w, UpdateOutput)
   204  	})
   205  }
   206  
   207  // HandleDeleteGroupSuccessfully creates an HTTP handler at `/groups` on the
   208  // test handler mux that tests group deletion.
   209  func HandleDeleteGroupSuccessfully(t *testing.T) {
   210  	th.Mux.HandleFunc("/groups/9fe1d3", func(w http.ResponseWriter, r *http.Request) {
   211  		th.TestMethod(t, r, "DELETE")
   212  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   213  
   214  		w.WriteHeader(http.StatusNoContent)
   215  	})
   216  }