Skip to content

Commit

Permalink
Updated list ipv6 response (#762)
Browse files Browse the repository at this point in the history
* updated list ipv6 response

* updated create/get response

* updated List response

* addressed review comments
  • Loading branch information
imaskm authored Nov 27, 2024
1 parent d1b5da3 commit a97e397
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 26 deletions.
33 changes: 18 additions & 15 deletions reserved_ipv6.go
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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"`
Expand All @@ -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.
Expand All @@ -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
Expand All @@ -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.
Expand Down
23 changes: 12 additions & 11 deletions reserved_ipv6_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,18 +30,18 @@ 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)
if err != nil {
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)
}
}

Expand All @@ -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}
}`)
})

Expand All @@ -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)
}
Expand All @@ -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)
}
}

Expand All @@ -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"}}}
Expand All @@ -114,16 +115,16 @@ 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")
if err != nil {
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)
}
}
Expand Down

0 comments on commit a97e397

Please sign in to comment.