-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathvalidators_test.go
More file actions
411 lines (405 loc) · 17.1 KB
/
validators_test.go
File metadata and controls
411 lines (405 loc) · 17.1 KB
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
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
package figtree
import (
"os"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestTree_WithValidator(t *testing.T) {
t.Run("CanDoDoubleValidationsOnSameKey", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringSubstring("love yahuah"))
fig = fig.WithValidator(t.Name(), AssureStringNotEmpty)
assert.NoError(t, fig.Parse())
})
t.Run("AssureListNotContainsError", func(t *testing.T) {
os.Args = []string{os.Args[0]}
var k = []string{"i", "love", "yahuah"}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewList(t.Name(), k, "usage")
fig = fig.WithValidator(t.Name(), AssureListNotContains("yahuah"))
assert.Error(t, fig.Parse())
})
t.Run("AssureListNotContains", func(t *testing.T) {
os.Args = []string{os.Args[0]}
var k = []string{"i", "love", "yahuah"}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewList(t.Name(), k, "usage")
fig = fig.WithValidator(t.Name(), AssureListNotContains("andrei"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringNotLengthError", func(t *testing.T) {
const k = "i love yahuah"
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), k, "usage")
fig = fig.WithValidator(t.Name(), AssureStringNotLength(len(k)))
assert.Error(t, fig.Parse())
})
t.Run("AssureStringNoPrefix", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNoPrefix("no"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringNoSuffix", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNoSuffix("no"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringHasPrefixes", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringHasPrefixes([]string{"yah", "ya"}))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringHasSuffixes", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringHasSuffixes([]string{"uah", "ah"}))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringNoPrefixes", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNoPrefixes([]string{"no"}))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringNoSuffixes", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNoSuffixes([]string{"no"}))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringNotLength", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNotLength(369))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringNotContainsError", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNotContains("yahuah"))
assert.Error(t, fig.Parse())
})
t.Run("AssureStringNotContains", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNotContains("andrei"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringLengthLessThan", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringLengthLessThan(99))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringLengthGreaterThan", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringLengthGreaterThan(3))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringHasSuffix", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringHasSuffix("yahuah"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringHasPrefix", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringHasPrefix("i love"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringLength", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringLength(13))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringSubstring", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringSubstring("love yahuah"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringNotEmpty", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringNotEmpty)
assert.NoError(t, fig.Parse())
})
t.Run("AssureStringContains ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewString(t.Name(), "i love yahuah", "usage")
fig = fig.WithValidator(t.Name(), AssureStringContains("love yahuah"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureBoolTrue", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewBool(t.Name(), true, "usage")
fig = fig.WithValidator(t.Name(), AssureBoolTrue)
assert.NoError(t, fig.Parse())
})
t.Run("AssureBoolFalse", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewBool(t.Name(), false, "usage")
fig = fig.WithValidator(t.Name(), AssureBoolFalse)
assert.NoError(t, fig.Parse())
})
t.Run("AssureIntPositive ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt(t.Name(), 17, "usage")
fig = fig.WithValidator(t.Name(), AssureIntPositive)
assert.NoError(t, fig.Parse())
})
t.Run("AssureIntNegative ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt(t.Name(), -17, "usage")
fig = fig.WithValidator(t.Name(), AssureIntNegative)
assert.NoError(t, fig.Parse())
})
t.Run("AssureIntGreaterThan ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt(t.Name(), 17, "usage")
fig = fig.WithValidator(t.Name(), AssureIntGreaterThan(12))
assert.NoError(t, fig.Parse())
})
t.Run("AssureIntLessThan ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt(t.Name(), 17, "usage")
fig = fig.WithValidator(t.Name(), AssureIntLessThan(33))
assert.NoError(t, fig.Parse())
})
t.Run("AssureIntInRange ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt(t.Name(), 47, "usage")
fig = fig.WithValidator(t.Name(), AssureIntInRange(17, 76))
assert.NoError(t, fig.Parse())
})
t.Run("AssureInt64GreaterThan", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt64(t.Name(), 17, "usage")
fig = fig.WithValidator(t.Name(), AssureInt64GreaterThan(3))
assert.NoError(t, fig.Parse())
})
t.Run("AssureInt64LessThan ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt64(t.Name(), 17, "usage")
fig = fig.WithValidator(t.Name(), AssureInt64LessThan(33))
assert.NoError(t, fig.Parse())
})
t.Run("AssureInt64Positive ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt64(t.Name(), 17, "usage")
fig = fig.WithValidator(t.Name(), AssureInt64Positive)
assert.NoError(t, fig.Parse())
})
t.Run("AssureFloat64Positive ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewFloat64(t.Name(), 17.76, "usage")
fig = fig.WithValidator(t.Name(), AssureFloat64Positive)
assert.NoError(t, fig.Parse())
})
t.Run("AssureFloat64InRange ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewFloat64(t.Name(), 17.76, "usage")
fig = fig.WithValidator(t.Name(), AssureFloat64InRange(1.0, 20.0))
assert.NoError(t, fig.Parse())
})
t.Run("AssureFloat64GreaterThan ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewFloat64(t.Name(), 17.76, "usage")
fig = fig.WithValidator(t.Name(), AssureFloat64GreaterThan(3.69))
assert.NoError(t, fig.Parse())
})
t.Run("AssureFloat64LessThan ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewFloat64(t.Name(), 17.76, "usage")
fig = fig.WithValidator(t.Name(), AssureFloat64LessThan(33.33))
assert.NoError(t, fig.Parse())
})
t.Run("AssureDurationGreaterThan ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewDuration(t.Name(), 30*time.Second, "usage")
fig = fig.WithValidator(t.Name(), AssureDurationGreaterThan(10*time.Second))
assert.NoError(t, fig.Parse())
})
t.Run("AssureDurationLessThan ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewDuration(t.Name(), 30*time.Second, "usage")
fig = fig.WithValidator(t.Name(), AssureDurationLessThan(50*time.Second))
assert.NoError(t, fig.Parse())
})
t.Run("AssureDurationPositive ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewDuration(t.Name(), 30*time.Second, "usage")
fig = fig.WithValidator(t.Name(), AssureDurationPositive)
assert.NoError(t, fig.Parse())
})
t.Run("AssureDurationMax ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewDuration(t.Name(), 30*time.Second, "usage")
fig = fig.WithValidator(t.Name(), AssureDurationMax(1*time.Hour))
assert.NoError(t, fig.Parse())
})
t.Run("AssureListNotEmpty ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewList(t.Name(), []string{"yah", "i am", "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureListNotEmpty)
assert.NoError(t, fig.Parse())
})
t.Run("AssureListMinLength ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewList(t.Name(), []string{"yah", "i am", "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureListMinLength(3))
assert.NoError(t, fig.Parse())
})
t.Run("AssureMapNotEmpty ", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapNotEmpty)
assert.NoError(t, fig.Parse())
})
t.Run("AssureMapHasNoKeyError", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapHasNoKey("three"))
assert.Error(t, fig.Parse())
})
t.Run("AssureMapHasNoKey", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapHasNoKey("four"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureMapHasKey", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapHasKey("three"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureInt64InRange", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewInt64(t.Name(), 47, "usage")
fig = fig.WithValidator(t.Name(), AssureInt64InRange(17, 76))
assert.NoError(t, fig.Parse())
})
t.Run("AssureFloat64NotNaN", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewFloat64(t.Name(), 47.0, "usage")
fig = fig.WithValidator(t.Name(), AssureFloat64NotNaN)
assert.NoError(t, fig.Parse())
})
t.Run("AssureDurationMin", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewDuration(t.Name(), 30*time.Second, "usage")
fig = fig.WithValidator(t.Name(), AssureDurationMin(3*time.Second))
assert.NoError(t, fig.Parse())
})
t.Run("AssureListContains", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewList(t.Name(), []string{"yah", "i am", "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureListContains("yahuah"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureMapValueMatches", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapValueMatches("three", "yahuah"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureMapHasKeys", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapHasKeys([]string{"one", "two", "three"}))
assert.NoError(t, fig.Parse())
})
t.Run("AssureListContainsKey", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewList(t.Name(), []string{"yah", "i am", "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureListContainsKey("yahuah"))
assert.NoError(t, fig.Parse())
})
t.Run("AssureListLength", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewList(t.Name(), []string{"yah", "i am", "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureListLength(3))
assert.NoError(t, fig.Parse())
})
t.Run("AssureMapLength", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapLength(3))
assert.NoError(t, fig.Parse())
})
t.Run("AssureMapNotLengthError", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapNotLength(3))
assert.Error(t, fig.Parse())
})
t.Run("AssureMapNotLength", func(t *testing.T) {
os.Args = []string{os.Args[0]}
fig := With(Options{Germinate: true, Tracking: false})
fig = fig.NewMap(t.Name(), map[string]string{"one": "yah", "two": "i am", "three": "yahuah"}, "usage")
fig = fig.WithValidator(t.Name(), AssureMapNotLength(4))
assert.NoError(t, fig.Parse())
})
}