github.com/chnsz/golangsdk@v0.0.0-20240506093406-85a3fbfa605b/openstack/networking/v2/peerings/testing/requests_test.go (about)

     1  package testing
     2  
     3  import (
     4  	"fmt"
     5  	"net/http"
     6  	"testing"
     7  
     8  	fake "github.com/chnsz/golangsdk/openstack/networking/v2/common"
     9  	"github.com/chnsz/golangsdk/openstack/networking/v2/peerings"
    10  	th "github.com/chnsz/golangsdk/testhelper"
    11  )
    12  
    13  func TestListVpcPeerings(t *testing.T) {
    14  	th.SetupHTTP()
    15  	defer th.TeardownHTTP()
    16  
    17  	th.Mux.HandleFunc("/v2.0/vpc/peerings", func(w http.ResponseWriter, r *http.Request) {
    18  		th.TestMethod(t, r, "GET")
    19  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
    20  
    21  		w.Header().Add("Content-Type", "application/json")
    22  		w.WriteHeader(http.StatusOK)
    23  
    24  		fmt.Fprintf(w, `
    25  {
    26      "peerings": [
    27          {
    28              "status": "PENDING_ACCEPTANCE",
    29              "accept_vpc_info": {
    30                  "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25",
    31                  "tenant_id": "17fbda95add24720a4038ba4b1c705ed"
    32              },
    33              "request_vpc_info": {
    34                  "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf",
    35                  "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
    36              },
    37              "name": "test_peering",
    38              "description": "this is a description",
    39              "id": "22a3e5b1-1150-408e-99f7-5e25a391cead"
    40          },
    41          {
    42              "status": "ACTIVE",
    43              "accept_vpc_info": {
    44                  "vpc_id": "93e94d8e-31a6-4c22-bdf7-8b23c7b67329",
    45                  "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
    46              },
    47              "request_vpc_info": {
    48                  "vpc_id": "b0d686e5-312c-4279-b69c-eedbc779ae69",
    49                  "tenant_id": "bf74229f30c0421fae270386a43315ee"
    50              },
    51              "name": "peering-7750-sunway",
    52              "id": "283aabd7-dab4-409d-96ff-6c878b9a0219"
    53          },
    54          {
    55              "status": "ACTIVE",
    56              "accept_vpc_info": {
    57                  "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf",
    58                  "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
    59              },
    60              "request_vpc_info": {
    61                  "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c",
    62                  "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
    63              },
    64              "name": "test",
    65              "id": "71d64714-bd4e-44c4-917a-d8d1239e5292"
    66          }
    67      ]
    68  }`)
    69  	})
    70  
    71  	//count := 0
    72  	actual, err := peerings.List(fake.ServiceClient(), peerings.ListOpts{})
    73  
    74  	if err != nil {
    75  		t.Errorf("Failed to extract vpc_peering_connections: %v", err)
    76  	}
    77  
    78  	expected := []peerings.Peering{
    79  		{
    80  			ID:             "22a3e5b1-1150-408e-99f7-5e25a391cead",
    81  			Name:           "test_peering",
    82  			Status:         "PENDING_ACCEPTANCE",
    83  			Description:    "this is a description",
    84  			RequestVpcInfo: peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"},
    85  			AcceptVpcInfo:  peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"},
    86  		},
    87  		{
    88  			ID:             "283aabd7-dab4-409d-96ff-6c878b9a0219",
    89  			Name:           "peering-7750-sunway",
    90  			Status:         "ACTIVE",
    91  			RequestVpcInfo: peerings.VpcInfo{VpcId: "b0d686e5-312c-4279-b69c-eedbc779ae69", TenantId: "bf74229f30c0421fae270386a43315ee"},
    92  			AcceptVpcInfo:  peerings.VpcInfo{VpcId: "93e94d8e-31a6-4c22-bdf7-8b23c7b67329", TenantId: "87a56a48977e42068f70ad3280c50f0e"},
    93  		},
    94  		{
    95  			ID:             "71d64714-bd4e-44c4-917a-d8d1239e5292",
    96  			Name:           "test",
    97  			Status:         "ACTIVE",
    98  			RequestVpcInfo: peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c", TenantId: "87a56a48977e42068f70ad3280c50f0e"},
    99  			AcceptVpcInfo:  peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"},
   100  		},
   101  	}
   102  
   103  	th.AssertDeepEquals(t, expected, actual)
   104  }
   105  
   106  func TestCreateVpcPeeringConnection(t *testing.T) {
   107  	th.SetupHTTP()
   108  	defer th.TeardownHTTP()
   109  
   110  	th.Mux.HandleFunc("/v2.0/vpc/peerings", func(w http.ResponseWriter, r *http.Request) {
   111  		th.TestMethod(t, r, "POST")
   112  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   113  		th.TestHeader(t, r, "Content-Type", "application/json")
   114  		th.TestHeader(t, r, "Accept", "application/json")
   115  		th.TestJSONRequest(t, r, `
   116  {
   117      "peering": {
   118          "name": "test",
   119          "description": "this is a test",
   120          "request_vpc_info": {
   121             "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c"
   122          },
   123          "accept_vpc_info": {
   124              "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25",
   125              "tenant_id": "17fbda95add24720a4038ba4b1c705ed"
   126          }
   127      }
   128  }`)
   129  
   130  		w.Header().Add("Content-Type", "application/json")
   131  		w.WriteHeader(http.StatusCreated)
   132  
   133  		fmt.Fprintf(w, `
   134  {
   135      "peering": {
   136          "status": "PENDING_ACCEPTANCE",
   137          "accept_vpc_info": {
   138               "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25",
   139               "tenant_id": "17fbda95add24720a4038ba4b1c705ed"
   140          },
   141          "request_vpc_info": {
   142              "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c",
   143              "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
   144          },
   145          "name": "test",
   146          "description": "this is a test",
   147          "id": "4e6ca99d-8344-4eb2-b2c9-b77368db3704"
   148      }
   149  }`)
   150  	})
   151  
   152  	options := peerings.CreateOpts{
   153  		Name:           "test",
   154  		Description:    "this is a test",
   155  		RequestVpcInfo: peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c"},
   156  		AcceptVpcInfo:  peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"},
   157  	}
   158  	n, err := peerings.Create(fake.ServiceClient(), options).Extract()
   159  	th.AssertNoErr(t, err)
   160  	th.AssertEquals(t, "test", n.Name)
   161  	th.AssertEquals(t, "this is a test", n.Description)
   162  	th.AssertEquals(t, "4e6ca99d-8344-4eb2-b2c9-b77368db3704", n.ID)
   163  	th.AssertEquals(t, peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo)
   164  	th.AssertEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo)
   165  	th.AssertEquals(t, "PENDING_ACCEPTANCE", n.Status)
   166  }
   167  
   168  func TestUpdateVpcPeeringConnection(t *testing.T) {
   169  	th.SetupHTTP()
   170  	defer th.TeardownHTTP()
   171  
   172  	th.Mux.HandleFunc("/v2.0/vpc/peerings/4e6ca99d-8344-4eb2-b2c9-b77368db3704", func(w http.ResponseWriter, r *http.Request) {
   173  		th.TestMethod(t, r, "PUT")
   174  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   175  		th.TestHeader(t, r, "Content-Type", "application/json")
   176  		th.TestHeader(t, r, "Accept", "application/json")
   177  		th.TestJSONRequest(t, r, `
   178  {
   179      "peering": {
   180          "name": "test2",
   181          "description": "this is a test2"
   182      }
   183  }`)
   184  
   185  		w.Header().Add("Content-Type", "application/json")
   186  		w.WriteHeader(http.StatusOK)
   187  
   188  		fmt.Fprintf(w, `
   189  {
   190      "peering": {
   191          "status": "PENDING_ACCEPTANCE",
   192          "accept_vpc_info": {
   193              "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25",
   194               "tenant_id": "17fbda95add24720a4038ba4b1c705ed"
   195          },
   196          "request_vpc_info": {
   197              "vpc_id": "4117d38e-4c8f-4624-a505-bd96b97d024c",
   198              "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
   199          },
   200          "name": "test2",
   201          "description": "this is a test2",
   202          "id": "4e6ca99d-8344-4eb2-b2c9-b77368db3704"
   203      }
   204  }`)
   205  	})
   206  
   207  	desc := "this is a test2"
   208  	options := peerings.UpdateOpts{
   209  		Name:        "test2",
   210  		Description: &desc,
   211  	}
   212  
   213  	n, err := peerings.Update(fake.ServiceClient(), "4e6ca99d-8344-4eb2-b2c9-b77368db3704", options).Extract()
   214  	th.AssertNoErr(t, err)
   215  	th.AssertEquals(t, "test2", n.Name)
   216  	th.AssertEquals(t, desc, n.Description)
   217  	th.AssertEquals(t, "4e6ca99d-8344-4eb2-b2c9-b77368db3704", n.ID)
   218  	th.AssertEquals(t, peerings.VpcInfo{VpcId: "4117d38e-4c8f-4624-a505-bd96b97d024c", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo)
   219  	th.AssertEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo)
   220  	th.AssertEquals(t, "PENDING_ACCEPTANCE", n.Status)
   221  }
   222  
   223  func TestDeleteVpcPeeringConnection(t *testing.T) {
   224  	th.SetupHTTP()
   225  	defer th.TeardownHTTP()
   226  
   227  	th.Mux.HandleFunc("/v2.0/vpc/peerings/4e6ca99d-8344-4eb2-b2c9-b77368db3704", func(w http.ResponseWriter, r *http.Request) {
   228  		th.TestMethod(t, r, "DELETE")
   229  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   230  		w.WriteHeader(http.StatusNoContent)
   231  	})
   232  
   233  	res := peerings.Delete(fake.ServiceClient(), "4e6ca99d-8344-4eb2-b2c9-b77368db3704")
   234  	th.AssertNoErr(t, res.Err)
   235  }
   236  
   237  func TestAcceptVpcPeering(t *testing.T) {
   238  
   239  	th.SetupHTTP()
   240  	defer th.TeardownHTTP()
   241  
   242  	th.Mux.HandleFunc("/v2.0/vpc/peerings/22a3e5b1-1150-408e-99f7-5e25a391cead/accept", func(w http.ResponseWriter, r *http.Request) {
   243  		th.TestMethod(t, r, "PUT")
   244  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   245  		th.TestHeader(t, r, "Accept", "application/json")
   246  
   247  		w.Header().Add("Content-Type", "application/json")
   248  		w.WriteHeader(http.StatusOK)
   249  
   250  		fmt.Fprintf(w, ` {
   251      "status": "ACTIVE",
   252      "name": "test_peering",
   253      "tenant_id": "17fbda95add24720a4038ba4b1c705ed",
   254      "request_vpc_info": {
   255          "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf",
   256          "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
   257      },
   258      "accept_vpc_info": {
   259          "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25",
   260          "tenant_id": "17fbda95add24720a4038ba4b1c705ed"
   261      },
   262      "id": "22a3e5b1-1150-408e-99f7-5e25a391cead"
   263       }
   264  		`)
   265  	})
   266  
   267  	n, err := peerings.Accept(fake.ServiceClient(), "22a3e5b1-1150-408e-99f7-5e25a391cead").ExtractResult()
   268  	th.AssertNoErr(t, err)
   269  	th.AssertEquals(t, "22a3e5b1-1150-408e-99f7-5e25a391cead", n.ID)
   270  	th.AssertEquals(t, "test_peering", n.Name)
   271  	th.AssertEquals(t, "ACTIVE", n.Status)
   272  	th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo)
   273  	th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo)
   274  
   275  }
   276  
   277  func TestRejectVpcPeering(t *testing.T) {
   278  
   279  	th.SetupHTTP()
   280  	defer th.TeardownHTTP()
   281  
   282  	th.Mux.HandleFunc("/v2.0/vpc/peerings/22a3e5b1-1150-408e-99f7-5e25a391cead/reject", func(w http.ResponseWriter, r *http.Request) {
   283  		th.TestMethod(t, r, "PUT")
   284  		th.TestHeader(t, r, "X-Auth-Token", fake.TokenID)
   285  		th.TestHeader(t, r, "Accept", "application/json")
   286  
   287  		w.Header().Add("Content-Type", "application/json")
   288  		w.WriteHeader(http.StatusOK)
   289  
   290  		fmt.Fprintf(w, ` {
   291      "status": "ACTIVE",
   292      "name": "test_peering",
   293      "tenant_id": "17fbda95add24720a4038ba4b1c705ed",
   294      "request_vpc_info": {
   295          "vpc_id": "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf",
   296          "tenant_id": "87a56a48977e42068f70ad3280c50f0e"
   297      },
   298      "accept_vpc_info": {
   299          "vpc_id": "c6efbdb7-dca4-4178-b3ec-692f125c1e25",
   300          "tenant_id": "17fbda95add24720a4038ba4b1c705ed"
   301      },
   302      "id": "22a3e5b1-1150-408e-99f7-5e25a391cead"
   303       }
   304  		`)
   305  	})
   306  
   307  	n, err := peerings.Reject(fake.ServiceClient(), "22a3e5b1-1150-408e-99f7-5e25a391cead").ExtractResult()
   308  	th.AssertNoErr(t, err)
   309  	th.AssertEquals(t, "22a3e5b1-1150-408e-99f7-5e25a391cead", n.ID)
   310  	th.AssertEquals(t, "test_peering", n.Name)
   311  	th.AssertEquals(t, "ACTIVE", n.Status)
   312  	th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "c6efbdb7-dca4-4178-b3ec-692f125c1e25", TenantId: "17fbda95add24720a4038ba4b1c705ed"}, n.AcceptVpcInfo)
   313  	th.AssertDeepEquals(t, peerings.VpcInfo{VpcId: "3127e30b-5f8e-42d1-a3cc-fdadf412c5bf", TenantId: "87a56a48977e42068f70ad3280c50f0e"}, n.RequestVpcInfo)
   314  
   315  }