From a97e3973191882afbc4a3e5fe8177d7010f221ed Mon Sep 17 00:00:00 2001 From: Ashwani Date: Thu, 28 Nov 2024 02:40:50 +0530 Subject: [PATCH] Updated list ipv6 response (#762) * updated list ipv6 response * updated create/get response * updated List response * addressed review comments --- reserved_ipv6.go | 33 ++++++++++++++++++--------------- reserved_ipv6_test.go | 23 ++++++++++++----------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/reserved_ipv6.go b/reserved_ipv6.go index aa265635..119c6bde 100644 --- a/reserved_ipv6.go +++ b/reserved_ipv6.go @@ -34,6 +34,15 @@ type ReservedIPV6 struct { ReservedAt time.Time `json:"reserved_at"` Droplet *Droplet `json:"droplet,omitempty"` } +type reservedIPV6Root struct { + ReservedIPV6 *ReservedIPV6 `json:"reserved_ipv6"` +} + +type reservedIPV6sRoot struct { + ReservedIPV6s []ReservedIPV6 `json:"reserved_ipv6s"` + Links *Links `json:"links"` + Meta *Meta `json:"meta"` +} func (f ReservedIPV6) String() string { return Stringify(f) @@ -44,12 +53,6 @@ func (f ReservedIPV6) URN() string { return ToURN(resourceV6Type, f.IP) } -type reservedIPV6sRoot struct { - ReservedIPs []ReservedIPV6 `json:"reserved_ips"` - Links *Links `json:"links"` - Meta *Meta `json:"meta"` -} - // ReservedIPV6CreateRequest represents a request to reserve a reserved IP. type ReservedIPV6CreateRequest struct { Region string `json:"region_slug,omitempty"` @@ -73,14 +76,14 @@ func (r *ReservedIPV6sServiceOp) List(ctx context.Context, opt *ListOptions) ([] if err != nil { return nil, nil, err } - if l := root.Links; l != nil { - resp.Links = l + if root.Meta != nil { + resp.Meta = root.Meta } - if m := root.Meta; m != nil { - resp.Meta = m + if root.Links != nil { + resp.Links = root.Links } - return root.ReservedIPs, resp, err + return root.ReservedIPV6s, resp, err } // Get an individual reserved IPv6. @@ -92,13 +95,13 @@ func (r *ReservedIPV6sServiceOp) Get(ctx context.Context, ip string) (*ReservedI return nil, nil, err } - root := new(ReservedIPV6) + root := new(reservedIPV6Root) resp, err := r.client.Do(ctx, req, root) if err != nil { return nil, resp, err } - return root, resp, err + return root.ReservedIPV6, resp, err } // Create a new IPv6 @@ -110,13 +113,13 @@ func (r *ReservedIPV6sServiceOp) Create(ctx context.Context, reserveRequest *Res return nil, nil, err } - root := new(ReservedIPV6) + root := new(reservedIPV6Root) resp, err := r.client.Do(ctx, req, root) if err != nil { return nil, resp, err } - return root, resp, err + return root.ReservedIPV6, resp, err } // Delete a reserved IPv6. diff --git a/reserved_ipv6_test.go b/reserved_ipv6_test.go index a7351690..d6f36f33 100644 --- a/reserved_ipv6_test.go +++ b/reserved_ipv6_test.go @@ -30,7 +30,7 @@ func TestReservedIPV6s_Create(t *testing.T) { t.Errorf("Request body = %+v, expected %+v", v, reserveRequest) } - fmt.Fprint(w, `{"ip":"2604:a880:800:14::42c3:d000","region_slug":"nyc3","reserved_at":"`+nowTime.Format(time.RFC3339Nano)+`"}`) + fmt.Fprint(w, `{"reserved_ipv6":{"ip":"2604:a880:800:14::42c3:d000","region_slug":"nyc3","reserved_at":"`+nowTime.Format(time.RFC3339Nano)+`"}}`) }) reservedIP, _, err := client.ReservedIPV6s.Create(ctx, reserveRequest) @@ -38,10 +38,10 @@ func TestReservedIPV6s_Create(t *testing.T) { t.Errorf("ReservedIPV6s.Create returned error: %v", err) } - expected := &ReservedIPV6{RegionSlug: "nyc3", IP: "2604:a880:800:14::42c3:d000", ReservedAt: nowTime} + expected := &reservedIPV6Root{ReservedIPV6: &ReservedIPV6{RegionSlug: "nyc3", IP: "2604:a880:800:14::42c3:d000", ReservedAt: nowTime}} - if !equalReserveIPv6Objects(reservedIP, expected) { - t.Errorf("ReservedIPs.Create returned %+v, expected %+v", reservedIP, expected) + if !equalReserveIPv6Objects(reservedIP, expected.ReservedIPV6) { + t.Errorf("ReservedIPV6s.Create returned %+v, expected %+v", reservedIP, expected) } } @@ -58,11 +58,11 @@ func TestReservedIPV6s_List(t *testing.T) { mux.HandleFunc("/v2/reserved_ipv6", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) - fmt.Fprint(w, `{"reserved_ips": [ + fmt.Fprint(w, `{"reserved_ipv6s": [ {"region_slug":"nyc3","droplet":{"id":1},"ip":"2604:a880:800:14::42c3:d000"}, {"region_slug":"nyc3","droplet":{"id":2},"ip":"2604:a880:800:14::42c3:d001"} ], - "meta":{"total":2} + "meta": {"total": 2} }`) }) @@ -75,6 +75,7 @@ func TestReservedIPV6s_List(t *testing.T) { {RegionSlug: "nyc3", Droplet: &Droplet{ID: 1}, IP: "2604:a880:800:14::42c3:d000"}, {RegionSlug: "nyc3", Droplet: &Droplet{ID: 2}, IP: "2604:a880:800:14::42c3:d001"}, } + if !reflect.DeepEqual(reservedIPs, expectedReservedIPs) { t.Errorf("ReservedIPV6s.List returned reserved IPs %+v, expected %+v", reservedIPs, expectedReservedIPs) } @@ -83,7 +84,7 @@ func TestReservedIPV6s_List(t *testing.T) { Total: 2, } if !reflect.DeepEqual(resp.Meta, expectedMeta) { - t.Errorf("ReservedIPs.List returned meta %+v, expected %+v", resp.Meta, expectedMeta) + t.Errorf("ReservedIPV6s.List returned meta %+v, expected %+v", resp.Meta, expectedMeta) } } @@ -93,7 +94,7 @@ func TestReservedIPV6s_ListReservedIPsMultiplePages(t *testing.T) { mux.HandleFunc("/v2/reserved_ipv6", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) - fmt.Fprint(w, `{"reserved_ips": [ + fmt.Fprint(w, `{"reserved_ipv6s": [ {"region_slug":"nyc3","droplet":{"id":1},"ip":"2604:a880:800:14::42c3:d001"}, {"region":{"slug":"nyc3"},"droplet":{"id":2},"ip":"2604:a880:800:14::42c3:d002"}], "links":{"pages":{"next":"http://example.com/v2/reserved_ipv6/?page=2"}}} @@ -114,7 +115,7 @@ func TestReservedIPV6s_Get(t *testing.T) { nowTime := time.Now() mux.HandleFunc("/v2/reserved_ipv6/2604:a880:800:14::42c3:d001", func(w http.ResponseWriter, r *http.Request) { testMethod(t, r, http.MethodGet) - fmt.Fprint(w, `{"region_slug":"nyc3","droplet":{"id":1},"ip":"2604:a880:800:14::42c3:d001", "reserved_at":"`+nowTime.Format(time.RFC3339Nano)+`"}`) + fmt.Fprint(w, `{"reserved_ipv6":{"region_slug":"nyc3","droplet":{"id":1},"ip":"2604:a880:800:14::42c3:d001", "reserved_at":"`+nowTime.Format(time.RFC3339Nano)+`"}}`) }) reservedIP, _, err := client.ReservedIPV6s.Get(ctx, "2604:a880:800:14::42c3:d001") @@ -122,8 +123,8 @@ func TestReservedIPV6s_Get(t *testing.T) { t.Errorf("ReservedIPV6s.Get returned error: %v", err) } - expected := &ReservedIPV6{RegionSlug: "nyc3", Droplet: &Droplet{ID: 1}, IP: "2604:a880:800:14::42c3:d001", ReservedAt: nowTime} - if !equalReserveIPv6Objects(reservedIP, expected) { + expected := &reservedIPV6Root{ReservedIPV6: &ReservedIPV6{RegionSlug: "nyc3", Droplet: &Droplet{ID: 1}, IP: "2604:a880:800:14::42c3:d001", ReservedAt: nowTime}} + if !equalReserveIPv6Objects(reservedIP, expected.ReservedIPV6) { t.Errorf("ReservedIPV6s.Get returned %+v, expected %+v", reservedIP, expected) } }