-
Notifications
You must be signed in to change notification settings - Fork 3
/
fixed_plans_test.go
227 lines (214 loc) · 7.78 KB
/
fixed_plans_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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
package rediscloud_api
import (
"context"
"net/http/httptest"
"testing"
"github.com/RedisLabs/rediscloud-go-api/redis"
"github.com/RedisLabs/rediscloud-go-api/service/fixed/plans"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
const response = `{
"plans": [
{
"id": 34944,
"name": "Single-Zone_1GB",
"size": 1,
"sizeMeasurementUnit": "GB",
"provider": "AWS",
"region": "us-west-1",
"regionId": 2,
"price": 23,
"priceCurrency": "USD",
"pricePeriod": "Month",
"maximumDatabases": 1,
"maximumThroughput": 2000,
"maximumBandwidthGB": 200,
"availability": "Single-zone",
"connections": "1024",
"cidrAllowRules": 8,
"supportDataPersistence": false,
"supportInstantAndDailyBackups": true,
"supportReplication": true,
"supportClustering": false,
"supportedAlerts": [
"datasets-size",
"throughput-higher-than",
"latency",
"throughput-lower-than",
"connections-limit"
],
"customerSupport": "Standard",
"links": []
},
{
"id": 34947,
"name": "Single-Zone_1GB",
"size": 1,
"sizeMeasurementUnit": "GB",
"provider": "AWS",
"region": "eu-west-1",
"regionId": 4,
"price": 23,
"priceCurrency": "USD",
"pricePeriod": "Month",
"maximumDatabases": 1,
"maximumThroughput": 2000,
"maximumBandwidthGB": 200,
"availability": "Single-zone",
"connections": "1024",
"cidrAllowRules": 8,
"supportDataPersistence": false,
"supportInstantAndDailyBackups": true,
"supportReplication": true,
"supportClustering": false,
"supportedAlerts": [
"datasets-size",
"throughput-higher-than",
"latency",
"throughput-lower-than",
"connections-limit"
],
"customerSupport": "Standard",
"links": []
}
],
"links": [
{
"href": "https://api-staging.qa.redislabs.com/v1/fixed/plans",
"rel": "self",
"type": "GET"
}
]
}`
func Test_List(t *testing.T) {
s := httptest.NewServer(
testServer("apiKey", "secret",
getRequest(
t,
"/fixed/plans",
response,
),
),
)
subject, err := clientFromTestServer(s, "apiKey", "secret")
require.NoError(t, err)
list, err := subject.FixedPlans.List(context.TODO())
require.NoError(t, err)
assert.Equal(t, []*plans.GetPlanResponse{
{
ID: redis.Int(34944),
Name: redis.String("Single-Zone_1GB"),
Size: redis.Float64(1),
SizeMeasurementUnit: redis.String("GB"),
Provider: redis.String("AWS"),
Region: redis.String("us-west-1"),
RegionID: redis.Int(2),
Price: redis.Int(23),
PriceCurrency: redis.String("USD"),
PricePeriod: redis.String("Month"),
MaximumDatabases: redis.Int(1),
MaximumThroughput: redis.Int(2000),
MaximumBandwidthGB: redis.Int(200),
Availability: redis.String("Single-zone"),
Connections: redis.String("1024"),
CidrAllowRules: redis.Int(8),
SupportDataPersistence: redis.Bool(false),
SupportInstantAndDailyBackups: redis.Bool(true),
SupportReplication: redis.Bool(true),
SupportClustering: redis.Bool(false),
SupportedAlerts: redis.StringSlice("datasets-size", "throughput-higher-than", "latency", "throughput-lower-than", "connections-limit"),
CustomerSupport: redis.String("Standard"),
},
{
ID: redis.Int(34947),
Name: redis.String("Single-Zone_1GB"),
Size: redis.Float64(1),
SizeMeasurementUnit: redis.String("GB"),
Provider: redis.String("AWS"),
Region: redis.String("eu-west-1"),
RegionID: redis.Int(4),
Price: redis.Int(23),
PriceCurrency: redis.String("USD"),
PricePeriod: redis.String("Month"),
MaximumDatabases: redis.Int(1),
MaximumThroughput: redis.Int(2000),
MaximumBandwidthGB: redis.Int(200),
Availability: redis.String("Single-zone"),
Connections: redis.String("1024"),
CidrAllowRules: redis.Int(8),
SupportDataPersistence: redis.Bool(false),
SupportInstantAndDailyBackups: redis.Bool(true),
SupportReplication: redis.Bool(true),
SupportClustering: redis.Bool(false),
SupportedAlerts: redis.StringSlice("datasets-size", "throughput-higher-than", "latency", "throughput-lower-than", "connections-limit"),
CustomerSupport: redis.String("Standard"),
},
}, list)
}
func Test_ListWithProvider(t *testing.T) {
s := httptest.NewServer(
testServer("apiKey", "secret",
getRequestWithQuery(
t,
"/fixed/plans",
map[string][]string{"provider": {"AWS"}},
response,
),
),
)
subject, err := clientFromTestServer(s, "apiKey", "secret")
require.NoError(t, err)
list, err := subject.FixedPlans.ListWithProvider(context.TODO(), "AWS")
require.NoError(t, err)
assert.Equal(t, []*plans.GetPlanResponse{
{
ID: redis.Int(34944),
Name: redis.String("Single-Zone_1GB"),
Size: redis.Float64(1),
SizeMeasurementUnit: redis.String("GB"),
Provider: redis.String("AWS"),
Region: redis.String("us-west-1"),
RegionID: redis.Int(2),
Price: redis.Int(23),
PriceCurrency: redis.String("USD"),
PricePeriod: redis.String("Month"),
MaximumDatabases: redis.Int(1),
MaximumThroughput: redis.Int(2000),
MaximumBandwidthGB: redis.Int(200),
Availability: redis.String("Single-zone"),
Connections: redis.String("1024"),
CidrAllowRules: redis.Int(8),
SupportDataPersistence: redis.Bool(false),
SupportInstantAndDailyBackups: redis.Bool(true),
SupportReplication: redis.Bool(true),
SupportClustering: redis.Bool(false),
SupportedAlerts: redis.StringSlice("datasets-size", "throughput-higher-than", "latency", "throughput-lower-than", "connections-limit"),
CustomerSupport: redis.String("Standard"),
},
{
ID: redis.Int(34947),
Name: redis.String("Single-Zone_1GB"),
Size: redis.Float64(1),
SizeMeasurementUnit: redis.String("GB"),
Provider: redis.String("AWS"),
Region: redis.String("eu-west-1"),
RegionID: redis.Int(4),
Price: redis.Int(23),
PriceCurrency: redis.String("USD"),
PricePeriod: redis.String("Month"),
MaximumDatabases: redis.Int(1),
MaximumThroughput: redis.Int(2000),
MaximumBandwidthGB: redis.Int(200),
Availability: redis.String("Single-zone"),
Connections: redis.String("1024"),
CidrAllowRules: redis.Int(8),
SupportDataPersistence: redis.Bool(false),
SupportInstantAndDailyBackups: redis.Bool(true),
SupportReplication: redis.Bool(true),
SupportClustering: redis.Bool(false),
SupportedAlerts: redis.StringSlice("datasets-size", "throughput-higher-than", "latency", "throughput-lower-than", "connections-limit"),
CustomerSupport: redis.String("Standard"),
},
}, list)
}