Skip to content

Commit ae54f5f

Browse files
authored
fix(api): avoid round numbers in responses (#1387)
Signed-off-by: Salim Afiune Maya <[email protected]>
1 parent d9fbb5b commit ae54f5f

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

api/alerts_details_integrations_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,8 +55,7 @@ var alertIntegrationsJSON = `{
5555
},
5656
"IS_ORG": 0,
5757
"DATA": {
58-
"WEBHOOK_URL": "https://lars.run/alerts",
59-
"MIN_ALERT_SEVERITY": 3
58+
"WEBHOOK_URL": "https://lars.run/alerts"
6059
}
6160
},
6261
"alertIntegrationId": "d7b76b0a-a9d6-e953-3asdf-53595515953f",

api/http.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,9 @@ func (c *Client) DoDecoder(req *http.Request, v interface{}) (*http.Response, er
129129
_, err = io.Copy(w, resTee)
130130
return res, err
131131
}
132-
err = json.NewDecoder(resTee).Decode(v)
132+
dcoder := json.NewDecoder(resTee)
133+
dcoder.UseNumber()
134+
err = dcoder.Decode(v)
133135
}
134136

135137
return res, err

api/http_test.go

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ package api_test
2020

2121
import (
2222
"bytes"
23+
"fmt"
2324
"io"
2425
"net/http"
2526
"testing"
@@ -34,8 +35,30 @@ func TestNewRequest(t *testing.T) {
3435
// TODO @afiune to-be-implemented!
3536
}
3637

37-
func TestDoDecoder(t *testing.T) {
38-
// TODO @afiune to-be-implemented!
38+
func TestDoDecoderLooongNumbers(t *testing.T) {
39+
fakeServer := lacework.MockServer()
40+
fakeServer.MockAPI(
41+
"endpoint",
42+
func(w http.ResponseWriter, r *http.Request) {
43+
fmt.Fprint(w, `{"mid": 5016581821971911018}`)
44+
},
45+
)
46+
defer fakeServer.Close()
47+
48+
c, err := api.NewClient("foo",
49+
api.WithToken("TOKEN"),
50+
api.WithURL(fakeServer.URL()),
51+
)
52+
assert.Nil(t, err)
53+
request, _ := c.NewRequest("GET", "endpoint", nil)
54+
55+
var v interface{}
56+
res, err := c.DoDecoder(request, &v)
57+
defer res.Body.Close()
58+
assert.Nil(t, err)
59+
60+
m := v.(map[string]interface{})
61+
assert.Equal(t, "5016581821971911018", fmt.Sprint(m["mid"]))
3962
}
4063

4164
func TestDoDecoder204(t *testing.T) {
@@ -49,7 +72,11 @@ func TestDoDecoder204(t *testing.T) {
4972
)
5073
defer fakeServer.Close()
5174

52-
c, _ := api.NewClient("foo", api.WithURL(fakeServer.URL()), api.WithTokenFromKeys("KEY", "SECRET"), api.WithExpirationTime(-60))
75+
c, _ := api.NewClient("foo",
76+
api.WithURL(fakeServer.URL()),
77+
api.WithTokenFromKeys("KEY", "SECRET"),
78+
api.WithExpirationTime(-60),
79+
)
5380
request, _ := c.NewRequest("GET", "foo", nil)
5481

5582
var v interface{}

0 commit comments

Comments
 (0)