9 | 9 |
},
|
10 | 10 |
'getPets';
|
11 | 11 |
|
|
12 |
post '/pets' => sub {
|
|
13 |
my $c = shift->openapi->valid_input or return;
|
|
14 |
$c->render(openapi => $c->validation->output);
|
|
15 |
},
|
|
16 |
'postPets';
|
|
17 |
|
12 | 18 |
get '/pets/:id' => sub {
|
13 | 19 |
my $c = shift->openapi->valid_input or return;
|
14 | 20 |
$c->render(openapi => $c->validation->output);
|
15 | 21 |
},
|
16 | 22 |
'getPetsById';
|
17 | 23 |
|
18 | |
|
19 | 24 |
plugin OpenAPI => {url => 'data://main/discriminator.json'};
|
20 | 25 |
|
21 | 26 |
my $t = Test::Mojo->new;
|
|
34 | 39 |
|
35 | 40 |
# In path
|
36 | 41 |
$t->get_ok('/api/pets/ilm,a,r,i')->status_is(200)->json_is('/id', [qw(ilm a r i)]);
|
|
42 |
|
|
43 |
# In query
|
|
44 |
$t->post_ok('/api/pets?idq=ilm,a,r,i')->status_is(200)->json_is('/idq', [qw(ilm a r i)]);
|
|
45 |
$t->post_ok("/api/pets?idq-tsv=ilm\ta\tr\ti")->status_is(200)->json_is('/idq-tsv', [qw(ilm a r i)]);
|
|
46 |
$t->post_ok('/api/pets?idq-ssv=ilm a r i')->status_is(200)->json_is('/idq-ssv', [qw(ilm a r i)]);
|
|
47 |
$t->post_ok('/api/pets?idq-pipes=ilm|a|r|i')->status_is(200)
|
|
48 |
->json_is('/idq-pipes', [qw(ilm a r i)]);
|
|
49 |
|
|
50 |
# In formData
|
|
51 |
$t->post_ok('/api/pets' => form => {idf => 'ilm,a,r,i'})->status_is(200)
|
|
52 |
->json_is('/idf', [qw(ilm a r i)]);
|
|
53 |
$t->post_ok('/api/pets' => form => {'idf-tsv' => "ilm\ta\tr\ti"})->status_is(200)
|
|
54 |
->json_is('/idf-tsv', [qw(ilm a r i)]);
|
|
55 |
$t->post_ok('/api/pets' => form => {'idf-ssv' => 'ilm a r i'})->status_is(200)
|
|
56 |
->json_is('/idf-ssv', [qw(ilm a r i)]);
|
|
57 |
$t->post_ok('/api/pets' => form => {'idf-pipes' => 'ilm|a|r|i', 'a' => 'b'})->status_is(200)
|
|
58 |
->json_is('/idf-pipes', [qw(ilm a r i)]);
|
|
59 |
$t->post_ok('/api/pets' => {'Content-Type' => 'application/x-www-form-urlencoded'} =>
|
|
60 |
'idf-multi=ilm&idf-multi=a')->status_is(200)->json_is('/idf-multi', [qw(ilm a)]);
|
37 | 61 |
|
38 | 62 |
done_testing;
|
39 | 63 |
|
|
102 | 126 |
"schema": { "type": "object" }
|
103 | 127 |
}
|
104 | 128 |
}
|
|
129 |
},
|
|
130 |
"post" : {
|
|
131 |
"operationId" : "postPets",
|
|
132 |
"parameters" : [
|
|
133 |
{
|
|
134 |
"name":"idq",
|
|
135 |
"in":"query",
|
|
136 |
"type":"array",
|
|
137 |
"collectionFormat":"csv",
|
|
138 |
"items":{"type":"string"},
|
|
139 |
"minItems":0,
|
|
140 |
"required":false
|
|
141 |
},
|
|
142 |
{
|
|
143 |
"name":"idq-tsv",
|
|
144 |
"in":"query",
|
|
145 |
"type":"array",
|
|
146 |
"collectionFormat":"tsv",
|
|
147 |
"items":{"type":"string"},
|
|
148 |
"minItems":0,
|
|
149 |
"required":false
|
|
150 |
},
|
|
151 |
{
|
|
152 |
"name":"idq-ssv",
|
|
153 |
"in":"query",
|
|
154 |
"type":"array",
|
|
155 |
"collectionFormat":"ssv",
|
|
156 |
"items":{"type":"string"},
|
|
157 |
"minItems":0,
|
|
158 |
"required":false
|
|
159 |
},
|
|
160 |
{
|
|
161 |
"name":"idq-pipes",
|
|
162 |
"in":"query",
|
|
163 |
"type":"array",
|
|
164 |
"collectionFormat":"pipes",
|
|
165 |
"items":{"type":"string"},
|
|
166 |
"minItems":0,
|
|
167 |
"required":false
|
|
168 |
},
|
|
169 |
{
|
|
170 |
"name":"idf",
|
|
171 |
"in":"formData",
|
|
172 |
"type":"array",
|
|
173 |
"collectionFormat":"csv",
|
|
174 |
"items":{"type":"string"},
|
|
175 |
"minItems":0,
|
|
176 |
"required":false
|
|
177 |
},
|
|
178 |
{
|
|
179 |
"name":"idf-tsv",
|
|
180 |
"in":"formData",
|
|
181 |
"type":"array",
|
|
182 |
"collectionFormat":"tsv",
|
|
183 |
"items":{"type":"string"},
|
|
184 |
"minItems":0,
|
|
185 |
"required":false
|
|
186 |
},
|
|
187 |
{
|
|
188 |
"name":"idf-ssv",
|
|
189 |
"in":"formData",
|
|
190 |
"type":"array",
|
|
191 |
"collectionFormat":"ssv",
|
|
192 |
"items":{"type":"string"},
|
|
193 |
"minItems":0,
|
|
194 |
"required":false
|
|
195 |
},
|
|
196 |
{
|
|
197 |
"name":"idf-pipes",
|
|
198 |
"in":"formData",
|
|
199 |
"type":"array",
|
|
200 |
"collectionFormat":"pipes",
|
|
201 |
"items":{"type":"string"},
|
|
202 |
"minItems":0,
|
|
203 |
"required":false
|
|
204 |
},
|
|
205 |
{
|
|
206 |
"name":"idf-multi",
|
|
207 |
"in":"formData",
|
|
208 |
"type":"array",
|
|
209 |
"collectionFormat":"multi",
|
|
210 |
"items":{"type":"string"},
|
|
211 |
"minItems":0,
|
|
212 |
"required":false
|
|
213 |
}
|
|
214 |
],
|
|
215 |
"responses" : {
|
|
216 |
"200": {
|
|
217 |
"description": "pet response",
|
|
218 |
"schema": { "type": "object" }
|
|
219 |
}
|
|
220 |
}
|
105 | 221 |
}
|
106 | 222 |
}
|
107 | 223 |
}
|