github.com/gophercloud/gophercloud@v1.11.0/openstack/blockstorage/extensions/volumetransfers/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"
    10  	"github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumetransfers"
    11  	th "github.com/gophercloud/gophercloud/testhelper"
    12  	"github.com/gophercloud/gophercloud/testhelper/client"
    13  )
    14  
    15  const ListOutput = `
    16  {
    17    "transfers": [
    18      {
    19        "created_at": "2020-02-28T12:44:28.051989",
    20        "volume_id": "2f6f1684-1ded-40db-8a49-7c87dedbc758",
    21        "id": "b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    22        "links": [
    23          {
    24            "href": "https://volume/v3/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    25            "rel": "self"
    26          },
    27          {
    28            "href": "https://volume/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    29            "rel": "bookmark"
    30          }
    31        ],
    32        "name": null
    33      }
    34    ]
    35  }
    36  `
    37  
    38  const GetOutput = `
    39  {
    40    "transfer": {
    41      "created_at": "2020-02-28T12:44:28.051989",
    42      "volume_id": "2f6f1684-1ded-40db-8a49-7c87dedbc758",
    43      "id": "b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    44      "links": [
    45        {
    46          "href": "https://volume/v3/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    47          "rel": "self"
    48        },
    49        {
    50          "href": "https://volume/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    51          "rel": "bookmark"
    52        }
    53      ],
    54      "name": null
    55    }
    56  }
    57  `
    58  
    59  const CreateRequest = `
    60  {
    61    "transfer": {
    62      "volume_id": "2f6f1684-1ded-40db-8a49-7c87dedbc758"
    63    }
    64  }
    65  `
    66  
    67  const CreateResponse = `
    68  {
    69    "transfer": {
    70      "auth_key": "cb67e0e7387d9eac",
    71      "created_at": "2020-02-28T12:44:28.051989",
    72      "id": "b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    73      "links": [
    74        {
    75          "href": "https://volume/v3/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    76          "rel": "self"
    77        },
    78        {
    79          "href": "https://volume/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
    80          "rel": "bookmark"
    81        }
    82      ],
    83      "name": null,
    84      "volume_id": "2f6f1684-1ded-40db-8a49-7c87dedbc758"
    85    }
    86  }
    87  `
    88  
    89  const AcceptTransferRequest = `
    90  {
    91      "accept": {
    92          "auth_key": "9266c59563c84664"
    93      }
    94  }
    95  `
    96  
    97  const AcceptTransferResponse = `
    98  {
    99    "transfer": {
   100      "id": "b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   101      "links": [
   102        {
   103          "href": "https://volume/v3/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   104          "rel": "self"
   105        },
   106        {
   107          "href": "https://volume/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   108          "rel": "bookmark"
   109        }
   110      ],
   111      "name": null,
   112      "volume_id": "2f6f1684-1ded-40db-8a49-7c87dedbc758"
   113    }
   114  }
   115  `
   116  
   117  var TransferRequest = volumetransfers.CreateOpts{
   118  	VolumeID: "2f6f1684-1ded-40db-8a49-7c87dedbc758",
   119  }
   120  
   121  var createdAt, _ = time.Parse(gophercloud.RFC3339MilliNoZ, "2020-02-28T12:44:28.051989")
   122  var TransferResponse = volumetransfers.Transfer{
   123  	ID:        "b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   124  	AuthKey:   "cb67e0e7387d9eac",
   125  	Name:      "",
   126  	VolumeID:  "2f6f1684-1ded-40db-8a49-7c87dedbc758",
   127  	CreatedAt: createdAt,
   128  	Links: []map[string]string{
   129  		{
   130  			"href": "https://volume/v3/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   131  			"rel":  "self",
   132  		},
   133  		{
   134  			"href": "https://volume/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   135  			"rel":  "bookmark",
   136  		},
   137  	},
   138  }
   139  
   140  var TransferListResponse = []volumetransfers.Transfer{TransferResponse}
   141  
   142  var AcceptRequest = volumetransfers.AcceptOpts{
   143  	AuthKey: "9266c59563c84664",
   144  }
   145  
   146  var AcceptResponse = volumetransfers.Transfer{
   147  	ID:       "b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   148  	Name:     "",
   149  	VolumeID: "2f6f1684-1ded-40db-8a49-7c87dedbc758",
   150  	Links: []map[string]string{
   151  		{
   152  			"href": "https://volume/v3/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   153  			"rel":  "self",
   154  		},
   155  		{
   156  			"href": "https://volume/53c2b94f63fb4f43a21b92d119ce549f/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f",
   157  			"rel":  "bookmark",
   158  		},
   159  	},
   160  }
   161  
   162  func HandleCreateTransfer(t *testing.T) {
   163  	th.Mux.HandleFunc("/os-volume-transfer", func(w http.ResponseWriter, r *http.Request) {
   164  		th.TestMethod(t, r, "POST")
   165  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   166  		w.Header().Add("Content-Type", "application/json")
   167  		th.TestJSONRequest(t, r, CreateRequest)
   168  
   169  		w.WriteHeader(http.StatusAccepted)
   170  		fmt.Fprintf(w, CreateResponse)
   171  	})
   172  }
   173  
   174  func HandleAcceptTransfer(t *testing.T) {
   175  	th.Mux.HandleFunc("/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f/accept", func(w http.ResponseWriter, r *http.Request) {
   176  		th.TestMethod(t, r, "POST")
   177  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   178  		w.Header().Add("Content-Type", "application/json")
   179  		th.TestJSONRequest(t, r, AcceptTransferRequest)
   180  
   181  		w.WriteHeader(http.StatusAccepted)
   182  		fmt.Fprintf(w, AcceptTransferResponse)
   183  	})
   184  }
   185  
   186  func HandleDeleteTransfer(t *testing.T) {
   187  	th.Mux.HandleFunc("/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f", func(w http.ResponseWriter, r *http.Request) {
   188  		th.TestMethod(t, r, "DELETE")
   189  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   190  
   191  		w.WriteHeader(http.StatusNoContent)
   192  	})
   193  }
   194  
   195  func HandleListTransfers(t *testing.T) {
   196  	th.Mux.HandleFunc("/os-volume-transfer/detail", func(w http.ResponseWriter, r *http.Request) {
   197  		th.TestMethod(t, r, "GET")
   198  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   199  		w.Header().Add("Content-Type", "application/json")
   200  		th.TestFormValues(t, r, map[string]string{"all_tenants": "true"})
   201  
   202  		w.WriteHeader(http.StatusOK)
   203  		fmt.Fprintf(w, ListOutput)
   204  	})
   205  }
   206  
   207  func HandleGetTransfer(t *testing.T) {
   208  	th.Mux.HandleFunc("/os-volume-transfer/b8913bfd-a4d3-4ec5-bd8b-fe2dbeef9f4f", func(w http.ResponseWriter, r *http.Request) {
   209  		th.TestMethod(t, r, "GET")
   210  		th.TestHeader(t, r, "X-Auth-Token", client.TokenID)
   211  		w.Header().Add("Content-Type", "application/json")
   212  
   213  		w.WriteHeader(http.StatusOK)
   214  		fmt.Fprintf(w, GetOutput)
   215  	})
   216  }