-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathclient_test.go
134 lines (123 loc) · 3.53 KB
/
client_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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
package poeapi
import (
"testing"
"time"
)
func TestNewAPIClient(t *testing.T) {
_, err := NewAPIClient(DefaultClientOptions)
if err != nil {
t.Fatalf("failed to create client: %v", err)
}
}
func TestNewAPIClientWithInvalidOptions(t *testing.T) {
var (
opts = ClientOptions{
Host: "google.com",
}
)
_, err := NewAPIClient(opts)
if err != ErrInvalidHost {
t.Fatal("failed to detect invalid options")
}
}
func TestValidateOptions(t *testing.T) {
opts := DefaultClientOptions
if err := validateClientOptions(opts); err != nil {
t.Fatalf("failed to validate options: %v", err)
}
}
func TestValidateOptionsInvalidHost(t *testing.T) {
opts := ClientOptions{
Host: "google.com",
NinjaHost: DefaultNinjaHost,
RateLimit: DefaultRateLimit,
StashRateLimit: DefaultStashRateLimit,
RequestTimeout: DefaultRequestTimeout,
}
if err := validateClientOptions(opts); err != ErrInvalidHost {
t.Fatal("failed to detect invalid host option")
}
}
func TestValidateOptionsInvalidNinjaHost(t *testing.T) {
opts := ClientOptions{
Host: DefaultHost,
NinjaHost: "",
RateLimit: DefaultRateLimit,
StashRateLimit: DefaultStashRateLimit,
RequestTimeout: DefaultRequestTimeout,
}
if err := validateClientOptions(opts); err != ErrInvalidNinjaHost {
t.Fatal("failed to detect invalid ninja host option")
}
}
func TestValidateOptionsInvalidCacheSize(t *testing.T) {
opts := ClientOptions{
Host: DefaultHost,
NinjaHost: DefaultNinjaHost,
UseCache: true,
CacheSize: 0,
RateLimit: DefaultRateLimit,
StashRateLimit: DefaultStashRateLimit,
RequestTimeout: DefaultRequestTimeout,
}
if err := validateClientOptions(opts); err != ErrInvalidCacheSize {
t.Fatal("failed to detect invalid cache size")
}
}
func TestValidateOptionsInvalidRateLimit(t *testing.T) {
opts := ClientOptions{
Host: DefaultHost,
NinjaHost: DefaultNinjaHost,
CacheSize: DefaultCacheSize,
RateLimit: -1,
StashRateLimit: DefaultStashRateLimit,
RequestTimeout: DefaultRequestTimeout,
}
if err := validateClientOptions(opts); err != ErrInvalidRateLimit {
t.Fatal("failed to detect invalid rate limit option")
}
}
func TestValidateOptionsInvalidStashRateLimit(t *testing.T) {
opts := ClientOptions{
Host: DefaultHost,
NinjaHost: DefaultNinjaHost,
CacheSize: DefaultCacheSize,
RateLimit: DefaultRateLimit,
StashRateLimit: -1,
RequestTimeout: DefaultRequestTimeout,
}
if err := validateClientOptions(opts); err != ErrInvalidStashRateLimit {
t.Fatal("failed to detect invalid stash rate limit option")
}
}
func TestValidateOptionsInvalidRequestTimeout(t *testing.T) {
opts := ClientOptions{
Host: DefaultHost,
NinjaHost: DefaultNinjaHost,
CacheSize: DefaultCacheSize,
RateLimit: DefaultRateLimit,
StashRateLimit: DefaultStashRateLimit,
RequestTimeout: 0 * time.Millisecond,
}
if err := validateClientOptions(opts); err != ErrInvalidRequestTimeout {
t.Fatal("failed to detect invalid request timeout option")
}
}
func TestClientDNSDialer(t *testing.T) {
c, err := NewAPIClient(ClientOptions{
Host: testHost,
NinjaHost: testHost,
UseSSL: false,
UseCache: false,
UseDNSCache: true,
RateLimit: UnlimitedRate,
StashRateLimit: UnlimitedRate,
RequestTimeout: testTimeout,
})
if err != nil {
t.Fatalf("failed to create client: %v", err)
}
if _, err := c.GetLeagueRules(); err != nil {
t.Fatalf("failed to get http with dns caching: %v", err)
}
}