Skip to content

Commit 701d534

Browse files
authored
Merge pull request #43 from zarianec/POD-155
POD-155: Fix remaining points command
2 parents d32dccc + 1c2938d commit 701d534

2 files changed

Lines changed: 35 additions & 17 deletions

File tree

perfops/dns.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ package perfops
1616
import (
1717
"context"
1818
"net/http"
19+
"reflect"
1920
)
2021

2122
type (
@@ -24,15 +25,21 @@ type (
2425
)
2526

2627
// RemainingCredits retrieves the ramining credits from the server.
27-
func (s *DNSService) RemainingCredits(ctx context.Context) (int, error) {
28+
func (s *DNSService) RemainingCredits(ctx context.Context) (interface{}, error) {
2829
u := s.client.BasePath + "/remaining-credits"
2930
req, _ := http.NewRequest("GET", u, nil)
3031
var v *struct {
31-
Val int `json:"remaining_credits"`
32+
Val interface{} `json:"remaining_credits"`
3233
}
3334
err := s.client.do(req, &v)
3435
if err != nil {
3536
return 0, err
3637
}
37-
return v.Val, nil
38+
39+
credits := v.Val
40+
if "float64" == reflect.TypeOf(v.Val).String() {
41+
credits = int(v.Val.(float64))
42+
}
43+
44+
return credits, nil
3845
}

perfops/dns_test.go

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,31 @@ import (
1717
"testing"
1818
)
1919

20-
func RemainingCredits(t *testing.T) {
21-
ctx := context.Background()
22-
const exp = 5
23-
const body = `{"remaining-credits": 5}`
24-
tr := &respondingTransport{resp: dummyResp(201, "GET", body)}
25-
c, err := newTestClient(tr)
26-
if err != nil {
27-
t.Fatalf("unexpected error %v", err)
28-
}
29-
got, err := c.DNS.RemainingCredits(ctx)
30-
if err != nil {
31-
t.Fatalf("unexpected error %v", err)
20+
func TestRemainingCredits(t *testing.T) {
21+
22+
testCases := map[string]struct {
23+
expected interface{}
24+
body string
25+
}{
26+
"numeric": {5, `{"remaining_credits": 5}`},
27+
"string": {"unlimited", `{"remaining_credits": "unlimited"}`},
3228
}
33-
if got != exp {
34-
t.Fatalf("expected %v; got %v", exp, got)
29+
30+
for name, tc := range testCases {
31+
t.Run(name, func(t *testing.T) {
32+
ctx := context.Background()
33+
tr := &respondingTransport{resp: dummyResp(201, "GET", tc.body)}
34+
c, err := newTestClient(tr)
35+
if err != nil {
36+
t.Fatalf("unexpected error %v", err)
37+
}
38+
got, err := c.DNS.RemainingCredits(ctx)
39+
if err != nil {
40+
t.Fatalf("unexpected error %v", err)
41+
}
42+
if got != tc.expected {
43+
t.Fatalf("expected %v; got %v", tc.expected, got)
44+
}
45+
})
3546
}
3647
}

0 commit comments

Comments
 (0)