github.com/IBM-Cloud/bluemix-go@v0.0.0-20240423071914-9e96525baef4/api/container/containerv1/subnets_test.go (about) 1 package containerv1 2 3 import ( 4 "log" 5 "net/http" 6 7 bluemix "github.com/IBM-Cloud/bluemix-go" 8 "github.com/IBM-Cloud/bluemix-go/client" 9 bluemixHttp "github.com/IBM-Cloud/bluemix-go/http" 10 "github.com/IBM-Cloud/bluemix-go/session" 11 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 "github.com/onsi/gomega/ghttp" 15 ) 16 17 var _ = Describe("Subnets", func() { 18 var server *ghttp.Server 19 Describe("Add", func() { 20 Context("When adding a subnet is successful", func() { 21 BeforeEach(func() { 22 server = ghttp.NewServer() 23 server.AppendHandlers( 24 ghttp.CombineHandlers( 25 ghttp.VerifyRequest(http.MethodPut, "/v1/clusters/test/subnets/1109876"), 26 ghttp.RespondWith(http.StatusCreated, `{}`), 27 ), 28 ) 29 }) 30 31 It("should return subnet added to cluster", func() { 32 target := ClusterTargetHeader{ 33 OrgID: "abc", 34 SpaceID: "def", 35 AccountID: "ghi", 36 } 37 err := newSubnet(server.URL()).AddSubnet("test", "1109876", target) 38 Expect(err).NotTo(HaveOccurred()) 39 }) 40 }) 41 Context("When adding subnet is unsuccessful", func() { 42 BeforeEach(func() { 43 server = ghttp.NewServer() 44 server.SetAllowUnhandledRequests(true) 45 server.AppendHandlers( 46 ghttp.CombineHandlers( 47 ghttp.VerifyRequest(http.MethodPut, "/v1/clusters/test/subnets/1109876"), 48 ghttp.RespondWith(http.StatusInternalServerError, `Failed to add subnet to cluster`), 49 ), 50 ) 51 }) 52 53 It("should return error during add subnet to cluster", func() { 54 target := ClusterTargetHeader{ 55 OrgID: "abc", 56 SpaceID: "def", 57 AccountID: "ghi", 58 } 59 err := newSubnet(server.URL()).AddSubnet("test", "1109876", target) 60 Expect(err).To(HaveOccurred()) 61 }) 62 }) 63 }) 64 //List 65 Describe("List", func() { 66 Context("When retrieving available subnets is successful", func() { 67 BeforeEach(func() { 68 server = ghttp.NewServer() 69 server.AppendHandlers( 70 ghttp.CombineHandlers( 71 ghttp.VerifyRequest(http.MethodGet, "/v1/subnets"), 72 ghttp.RespondWith(http.StatusOK, `[{ 73 "ID": "535642", 74 "Type": "private", 75 "VlanID": "1565297", 76 "IPAddresses": ["10.98.25.2","10.98.25.3","10.98.25.4"], 77 "Properties": { 78 "CIDR": "26 ", 79 "NetworkIdentifier":"10.130.229.64", 80 "Note": "", 81 "SubnetType":"additional_primary", 82 "DisplayLabel":"", 83 "Gateway":"" 84 } 85 }]`), 86 ), 87 ) 88 }) 89 90 It("should return available subnets ", func() { 91 target := ClusterTargetHeader{ 92 OrgID: "abc", 93 SpaceID: "def", 94 AccountID: "ghi", 95 } 96 subnets, err := newSubnet(server.URL()).List(target) 97 Expect(err).NotTo(HaveOccurred()) 98 Expect(subnets).ShouldNot(BeNil()) 99 for _, sObj := range subnets { 100 Expect(sObj).ShouldNot(BeNil()) 101 Expect(sObj.ID).Should(Equal("535642")) 102 Expect(sObj.Type).Should(Equal("private")) 103 } 104 }) 105 }) 106 Context("When retrieving available subnets is unsuccessful", func() { 107 BeforeEach(func() { 108 server = ghttp.NewServer() 109 server.SetAllowUnhandledRequests(true) 110 server.AppendHandlers( 111 ghttp.CombineHandlers( 112 ghttp.VerifyRequest(http.MethodGet, "/v1/subnets"), 113 ghttp.RespondWith(http.StatusInternalServerError, `Failed to retrieve subnets`), 114 ), 115 ) 116 }) 117 118 It("should return error during retrieveing subnets", func() { 119 target := ClusterTargetHeader{ 120 OrgID: "abc", 121 SpaceID: "def", 122 AccountID: "ghi", 123 } 124 subnets, err := newSubnet(server.URL()).List(target) 125 Expect(err).To(HaveOccurred()) 126 Expect(subnets).Should(BeNil()) 127 }) 128 }) 129 }) 130 131 //AddClusterUserSubnet 132 Describe("AddClusterUserSubnet", func() { 133 Context("When adding a user subnet is successful", func() { 134 BeforeEach(func() { 135 server = ghttp.NewServer() 136 server.AppendHandlers( 137 ghttp.CombineHandlers( 138 ghttp.VerifyRequest(http.MethodPost, "/v1/clusters/test/usersubnets"), 139 ghttp.RespondWith(http.StatusCreated, `{}`), 140 ), 141 ) 142 }) 143 144 It("should return user subnet added to cluster", func() { 145 target := ClusterTargetHeader{ 146 OrgID: "abc", 147 SpaceID: "def", 148 AccountID: "ghi", 149 } 150 userSubnet := UserSubnet{ 151 CIDR: "9.0.0.1", 152 VLANID: "1156748", 153 } 154 err := newSubnet(server.URL()).AddClusterUserSubnet("test", userSubnet, target) 155 Expect(err).NotTo(HaveOccurred()) 156 }) 157 }) 158 Context("When adding user subnet is unsuccessful", func() { 159 BeforeEach(func() { 160 server = ghttp.NewServer() 161 server.SetAllowUnhandledRequests(true) 162 server.AppendHandlers( 163 ghttp.CombineHandlers( 164 ghttp.VerifyRequest(http.MethodPost, "/v1/clusters/test/usersubnets"), 165 ghttp.RespondWith(http.StatusInternalServerError, `Failed to add user subnet to cluster`), 166 ), 167 ) 168 }) 169 170 It("should return error during adding user subnet to cluster", func() { 171 target := ClusterTargetHeader{ 172 OrgID: "abc", 173 SpaceID: "def", 174 AccountID: "ghi", 175 } 176 userSubnet := UserSubnet{ 177 CIDR: "9.0.0.1", 178 VLANID: "1156748", 179 } 180 err := newSubnet(server.URL()).AddClusterUserSubnet("test", userSubnet, target) 181 Expect(err).To(HaveOccurred()) 182 }) 183 }) 184 }) 185 186 //ListClusterUserSubnets 187 Describe("ListClusterUserSubnets", func() { 188 Context("When retrieving available user subnets is successful", func() { 189 BeforeEach(func() { 190 server = ghttp.NewServer() 191 server.AppendHandlers( 192 ghttp.CombineHandlers( 193 ghttp.VerifyRequest(http.MethodGet, "/v1/clusters/test/usersubnets"), 194 ghttp.RespondWith(http.StatusOK, `[{ 195 "ID": "177453", 196 "Subnets": [ 197 { 198 "Cidr": "159.8.226.208/29", 199 "ID": "1541737", 200 "Ips": ["159.8.226.210"], 201 "Is_ByOIP": false, 202 "Is_Public": true 203 }] 204 }]`), 205 ), 206 ) 207 }) 208 209 It("should return available subnets ", func() { 210 target := ClusterTargetHeader{ 211 OrgID: "abc", 212 SpaceID: "def", 213 AccountID: "ghi", 214 } 215 subnets, err := newSubnet(server.URL()).ListClusterUserSubnets("test", target) 216 Expect(err).NotTo(HaveOccurred()) 217 Expect(subnets).ShouldNot(BeNil()) 218 for _, sObj := range subnets { 219 Expect(sObj).ShouldNot(BeNil()) 220 } 221 }) 222 }) 223 Context("When retrieving available user subnets is unsuccessful", func() { 224 BeforeEach(func() { 225 server = ghttp.NewServer() 226 server.SetAllowUnhandledRequests(true) 227 server.AppendHandlers( 228 ghttp.CombineHandlers( 229 ghttp.VerifyRequest(http.MethodGet, "/v1/clusters/test/usersubnets"), 230 ghttp.RespondWith(http.StatusInternalServerError, `Failed to retrieve user subnets`), 231 ), 232 ) 233 }) 234 235 It("should return error during retrieveing user subnets", func() { 236 target := ClusterTargetHeader{ 237 OrgID: "abc", 238 SpaceID: "def", 239 AccountID: "ghi", 240 } 241 subnets, err := newSubnet(server.URL()).ListClusterUserSubnets("test", target) 242 Expect(err).To(HaveOccurred()) 243 Expect(subnets).Should(BeNil()) 244 }) 245 }) 246 }) 247 248 //DeleteClusterUserSubnet 249 Describe("DeleteClusterUserSubnet", func() { 250 Context("When delete of cluster user subnet is successful", func() { 251 BeforeEach(func() { 252 server = ghttp.NewServer() 253 server.AppendHandlers( 254 ghttp.CombineHandlers( 255 ghttp.VerifyRequest(http.MethodDelete, "/v1/clusters/test/usersubnets/110976/vlans/174991"), 256 ghttp.RespondWith(http.StatusOK, `{ 257 }`), 258 ), 259 ) 260 }) 261 262 It("should delete cluster", func() { 263 target := ClusterTargetHeader{ 264 OrgID: "abc", 265 SpaceID: "def", 266 AccountID: "ghi", 267 } 268 err := newSubnet(server.URL()).DeleteClusterUserSubnet("test", "110976", "174991", target) 269 Expect(err).NotTo(HaveOccurred()) 270 }) 271 }) 272 Context("When cluster user subnet delete is failed", func() { 273 BeforeEach(func() { 274 server = ghttp.NewServer() 275 server.SetAllowUnhandledRequests(true) 276 server.AppendHandlers( 277 ghttp.CombineHandlers( 278 ghttp.VerifyRequest(http.MethodDelete, "/v1/clusters/test/usersubnets/110976/vlans/174991"), 279 ghttp.RespondWith(http.StatusInternalServerError, `Failed to delete cluster user subnet`), 280 ), 281 ) 282 }) 283 284 It("should return error deleting user subnet", func() { 285 target := ClusterTargetHeader{ 286 OrgID: "abc", 287 SpaceID: "def", 288 AccountID: "ghi", 289 } 290 err := newSubnet(server.URL()).DeleteClusterUserSubnet("test", "110976", "174991", target) 291 Expect(err).To(HaveOccurred()) 292 }) 293 }) 294 }) 295 }) 296 297 func newSubnet(url string) Subnets { 298 299 sess, err := session.New() 300 if err != nil { 301 log.Fatal(err) 302 } 303 conf := sess.Config.Copy() 304 conf.HTTPClient = bluemixHttp.NewHTTPClient(conf) 305 conf.Endpoint = &url 306 307 client := client.Client{ 308 Config: conf, 309 ServiceName: bluemix.MccpService, 310 } 311 return newSubnetAPI(&client) 312 }