-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapi_test.go
107 lines (78 loc) · 2.7 KB
/
api_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
package main
import (
"net/http"
"testing"
"time"
"github.com/jarcoal/httpmock"
"github.com/stretchr/testify/assert"
)
func TestApiClient_Login(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
httpmock.RegisterResponder("POST", "http://brevisone.local/api/signin",
httpmock.NewStringResponder(200, `{"jwt":"abc123","expireAt":0}`))
ac := NewApiClient("brevisone.local")
err := ac.Login("admin", "password")
assert.NoError(t, err)
assert.Equal(t, "abc123", ac.Token)
}
func TestApiClient_LoginTimeout(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
httpmock.RegisterResponder("POST", "http://brevisone.local/api/signin",
func(req *http.Request) (*http.Response, error) {
resp := httpmock.NewStringResponse(200, `{"jwt":"abc123","expireAt":0}`)
time.Sleep(3 * time.Second)
return resp, nil
},
)
ac := NewApiClient("brevisone.local")
ac.Timeout = 1 * time.Second
err := ac.Login("admin", "password")
// Validate that the error message is what we defined
assert.ErrorContains(t, err, "timeout during HTTP request")
}
func TestApiClient_LoginErr(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
httpmock.RegisterResponder("POST", "https://brevisone.local/api/signin",
httpmock.NewStringResponder(401, `{}`))
ac := NewApiClient("brevisone.local")
err := ac.Login("admin", "password")
assert.Error(t, err)
}
func TestApiClient_UnmarshalErr(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
httpmock.RegisterResponder("POST", "https://brevisone.local/api/signin",
httpmock.NewStringResponder(200, `{`))
ac := NewApiClient("brevisone.local")
err := ac.Login("admin", "password")
assert.Error(t, err)
}
func TestApiClient_DoRequest(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
httpmock.RegisterResponder("POST", "http://brevisone.local/api/test",
httpmock.NewStringResponder(200, `{"test":true}`))
ac := NewApiClient("brevisone.local")
ac.Token = "abc1234"
response, err := ac.DoRequest("test", nil)
assert.NoError(t, err)
assert.Equal(t, `{"test":true}`, string(response))
}
func TestApiClient_DoLegacyRequest(t *testing.T) {
httpmock.Activate()
defer httpmock.DeactivateAndReset()
httpmock.RegisterResponder("GET", "http://brevisone.local/api.php?mode=number&password=password&text=text&to=to&username=username",
httpmock.NewStringResponder(200, `{"test":true}`))
ac := NewApiClient("brevisone.local")
ac.Token = "abc1234"
err := ac.DoLegacyRequest("test", "to", "text", "username", "password")
assert.NoError(t, err)
}
func TestApiClient_DoRequestErr(t *testing.T) {
ac := NewApiClient("local")
_, err := ac.DoRequest("test", nil)
assert.Error(t, err)
}