@@ -9,6 +9,16 @@ import (
99 "github.com/stretchr/testify/require"
1010)
1111
12+ const (
13+ localSubnetSuccessBody = `{
14+ "result": {
15+ "network_uuid": "net1",
16+ "subnet": "192.168.1.0/24",
17+ "free": 1
18+ }
19+ }`
20+ )
21+
1222func TestServiceClient_Networks (t * testing.T ) {
1323 t .Run ("Success" , func (t * testing.T ) {
1424 // Prepare
@@ -250,6 +260,165 @@ func TestServiceClient_NetworkLocalSubnets(t *testing.T) {
250260 })
251261}
252262
263+ func TestServiceClient_GetNetworkLocalSubnet (t * testing.T ) {
264+ t .Run ("Success with networkID" , func (t * testing.T ) {
265+ fakeResp := httptest .NewFakeResponse (200 , localSubnetSuccessBody ) //nolint:bodyclose
266+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
267+
268+ subnet , respRes , err := client .GetNetworkLocalSubnet (context .Background (), "subnet1" )
269+ require .NoError (t , err )
270+ require .NotNil (t , respRes )
271+ require .NotNil (t , subnet )
272+ })
273+
274+ t .Run ("Success without networkID" , func (t * testing.T ) {
275+ fakeResp := httptest .NewFakeResponse (200 , localSubnetSuccessBody ) //nolint:bodyclose
276+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
277+
278+ subnet , respRes , err := client .GetNetworkLocalSubnet (context .Background (), "subnet1" )
279+ require .NoError (t , err )
280+ require .NotNil (t , respRes )
281+ require .NotNil (t , subnet )
282+ })
283+
284+ t .Run ("InvalidJSON" , func (t * testing.T ) {
285+ fakeResp := httptest .NewFakeResponse (200 , invalidJSONBody ) //nolint:bodyclose
286+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
287+
288+ subnet , respRes , err := client .GetNetworkLocalSubnet (context .Background (), "subnet1" )
289+ require .Error (t , err )
290+ require .Nil (t , subnet )
291+ require .NotNil (t , respRes )
292+ })
293+
294+ t .Run ("HTTPError" , func (t * testing.T ) {
295+ fakeResp := httptest .NewFakeResponse (404 , httpErrorBody ) //nolint:bodyclose
296+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
297+
298+ subnet , respRes , err := client .GetNetworkLocalSubnet (context .Background (), "subnet1" )
299+ require .Error (t , err )
300+ require .Nil (t , subnet )
301+ require .NotNil (t , respRes )
302+ require .EqualError (t , respRes .Err , httpErrorMessage )
303+ })
304+
305+ t .Run ("DoRequestError" , func (t * testing.T ) {
306+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (nil , errors .New ("network failure" )))
307+
308+ subnet , respRes , err := client .GetNetworkLocalSubnet (context .Background (), "subnet1" )
309+ require .Error (t , err )
310+ require .Nil (t , subnet )
311+ require .Nil (t , respRes )
312+ })
313+ }
314+
315+ func TestServiceClient_CreateNetworkLocalSubnet (t * testing.T ) {
316+ t .Run ("Success with locationID" , func (t * testing.T ) {
317+ fakeResp := httptest .NewFakeResponse (201 , localSubnetSuccessBody ) //nolint:bodyclose
318+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
319+
320+ subnet , respRes , err := client .CreateNetworkLocalSubnet (
321+ context .Background (),
322+ "net1" ,
323+ "192.168.1.0/24" ,
324+ )
325+
326+ require .NoError (t , err )
327+ require .NotNil (t , respRes )
328+ require .NotNil (t , subnet )
329+ require .Equal (t , "net1" , subnet .NetworkUUID )
330+ })
331+
332+ t .Run ("Success without locationID" , func (t * testing.T ) {
333+ fakeResp := httptest .NewFakeResponse (201 , localSubnetSuccessBody ) //nolint:bodyclose
334+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
335+
336+ subnet , respRes , err := client .CreateNetworkLocalSubnet (
337+ context .Background (),
338+ "net1" ,
339+ "192.168.1.0/24" ,
340+ )
341+
342+ require .NoError (t , err )
343+ require .NotNil (t , respRes )
344+ require .NotNil (t , subnet )
345+ })
346+
347+ t .Run ("InvalidJSON" , func (t * testing.T ) {
348+ fakeResp := httptest .NewFakeResponse (200 , invalidJSONBody ) //nolint:bodyclose
349+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
350+
351+ subnet , respRes , err := client .CreateNetworkLocalSubnet (
352+ context .Background (),
353+ "net1" ,
354+ "192.168.1.0/24" ,
355+ )
356+
357+ require .Error (t , err )
358+ require .Nil (t , subnet )
359+ require .NotNil (t , respRes )
360+ })
361+
362+ t .Run ("HTTPError" , func (t * testing.T ) {
363+ fakeResp := httptest .NewFakeResponse (404 , httpErrorBody ) //nolint:bodyclose
364+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
365+
366+ subnet , respRes , err := client .CreateNetworkLocalSubnet (
367+ context .Background (),
368+ "net1" ,
369+ "192.168.1.0/24" ,
370+ )
371+
372+ require .Error (t , err )
373+ require .Nil (t , subnet )
374+ require .NotNil (t , respRes )
375+ require .EqualError (t , respRes .Err , httpErrorMessage )
376+ })
377+
378+ t .Run ("DoRequestError" , func (t * testing.T ) {
379+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (nil , errors .New ("network failure" )))
380+
381+ subnet , respRes , err := client .CreateNetworkLocalSubnet (
382+ context .Background (),
383+ "net1" ,
384+ "192.168.1.0/24" ,
385+ )
386+
387+ require .Error (t , err )
388+ require .Nil (t , subnet )
389+ require .Nil (t , respRes )
390+ })
391+ }
392+
393+ func TestServiceClient_DeleteNetworkLocalSubnet (t * testing.T ) {
394+ t .Run ("Success" , func (t * testing.T ) {
395+ fakeResp := httptest .NewFakeResponse (204 , `{}` ) //nolint:bodyclose
396+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
397+
398+ respRes , err := client .DeleteNetworkLocalSubnet (context .Background (), "subnet1" )
399+ require .NoError (t , err )
400+ require .NotNil (t , respRes )
401+ })
402+
403+ t .Run ("HTTPError" , func (t * testing.T ) {
404+ fakeResp := httptest .NewFakeResponse (404 , httpErrorBody ) //nolint:bodyclose
405+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (fakeResp , nil ))
406+
407+ respRes , err := client .DeleteNetworkLocalSubnet (context .Background (), "subnet1" )
408+ require .Error (t , err )
409+ require .NotNil (t , respRes )
410+ require .EqualError (t , respRes .Err , httpErrorMessage )
411+ })
412+
413+ t .Run ("DoRequestError" , func (t * testing.T ) {
414+ client := newFakeClient ("http://fake" , httptest .NewFakeTransport (nil , errors .New ("network failure" )))
415+
416+ respRes , err := client .DeleteNetworkLocalSubnet (context .Background (), "subnet1" )
417+ require .Error (t , err )
418+ require .Nil (t , respRes )
419+ })
420+ }
421+
253422func TestServiceClient_NetworkSubnet (t * testing.T ) {
254423 t .Run ("Success" , func (t * testing.T ) {
255424 body := `{"result": {"uuid": "subnet1", "subnet": "192.168.1.0/24"}}`
0 commit comments