-
Notifications
You must be signed in to change notification settings - Fork 112
/
Copy pathallof_test.go
118 lines (113 loc) · 2.86 KB
/
allof_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
package schema_test
import (
"testing"
"github.com/rs/rest-layer/schema"
)
func TestAllOfValidatorCompile(t *testing.T) {
cases := []referenceCompilerTestCase{
{
Name: "{String}",
Compiler: &schema.AllOf{&schema.String{}},
},
{
Name: "{String{Regexp:invalid}}",
Compiler: &schema.AllOf{&schema.String{Regexp: "[invalid re"}},
Error: "invalid regexp: error parsing regexp: missing closing ]: `[invalid re`",
},
}
for i := range cases {
cases[i].Run(t)
}
}
func TestAllOfValidator(t *testing.T) {
cases := []fieldValidatorTestCase{
{
Name: "{String}.Validate(true)",
Validator: schema.AllOf{&schema.Bool{}, &schema.Bool{}},
Input: true,
Expect: true,
},
{
Name: `{Bool, String}.Validate("")`,
Validator: schema.AllOf{&schema.Bool{}, &schema.String{}},
Input: "",
Error: "not a Boolean",
},
{
Name: "{Bool, String}.Validate(true)",
Validator: schema.AllOf{&schema.Bool{}, &schema.String{}},
Input: true,
Error: "not a string",
},
{
Name: `{Reference{Path:"foo"},Reference{Path:"bar"}}.Validate(validFooReference)`,
Validator: schema.AllOf{
&schema.Reference{Path: "foo"},
&schema.Reference{Path: "bar"},
},
ReferenceChecker: fakeReferenceChecker{
"foo": {
IDs: []interface{}{"foo1"},
Validator: &schema.String{},
SchemaValidator: &schema.Schema{},
},
"bar": {
IDs: []interface{}{"bar1", "bar2", "bar3"},
Validator: &schema.String{},
SchemaValidator: &schema.Schema{},
},
},
Input: "foo1",
Error: "not found",
},
}
for i := range cases {
cases[i].Run(t)
}
}
func TestAllOfQueryValidator(t *testing.T) {
cases := []fieldQueryValidatorTestCase{
{
Name: "{String}.Validate(true)",
Validator: schema.AllOf{&schema.Bool{}, &schema.Bool{}},
Input: true,
Expect: true,
},
{
Name: `{Bool, String}.Validate("")`,
Validator: schema.AllOf{&schema.Bool{}, &schema.String{}},
Input: "",
Error: "not a Boolean",
},
{
Name: "{Bool, String}.Validate(true)",
Validator: schema.AllOf{&schema.Bool{}, &schema.String{}},
Input: true,
Error: "not a string",
},
{
Name: `{Reference{Path:"foo"},Reference{Path:"bar"}}.Validate(validFooReference)`,
Validator: schema.AllOf{
&schema.Reference{Path: "foo"},
&schema.Reference{Path: "bar"},
},
ReferenceChecker: fakeReferenceChecker{
"foo": {
IDs: []interface{}{"foo1"},
Validator: &schema.String{},
SchemaValidator: &schema.Schema{},
},
"bar": {
IDs: []interface{}{"bar1", "bar2", "bar3"},
Validator: &schema.String{},
SchemaValidator: &schema.Schema{},
},
},
Input: "foo1",
Error: "not found",
},
}
for i := range cases {
cases[i].Run(t)
}
}