@@ -1265,8 +1265,6 @@ public class SwaggerTest inherits QUnit::Test {
1265
1265
assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1266
1266
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "boolean"}};
1267
1267
assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1268
- p = base.parameters + {"a": {"name": "a", "in": "query", "type": "file"}};
1269
- assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1270
1268
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "integer"}};
1271
1269
assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1272
1270
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "number"}};
@@ -1333,22 +1331,24 @@ public class SwaggerTest inherits QUnit::Test {
1333
1331
1334
1332
# default checks
1335
1333
1334
+ p = base.parameters + {"a": {"name": "a", "in": "formData", "type": "file"}};
1335
+ assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1336
+
1336
1337
# TODO
1337
- /*p = base.parameters + {"a": {"name": "a", "in": "query", "type": "array", "items": {"type": "string"}}};
1338
+ /*
1339
+ p = base.parameters + {"a": {"name": "a", "in": "query", "type": "array", "items": {"type": "string"}}};
1338
1340
assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1339
1341
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "array", "items": {"type": "string"}, "default": 5}};
1340
- assertThrows("INVALID-FIELD-TYPE", "default", loadyaml, my_make_yaml(base + {"parameters": p}));*/
1342
+ assertThrows("INVALID-FIELD-TYPE", "default", loadyaml, my_make_yaml(base + {"parameters": p}));
1343
+ */
1341
1344
1342
1345
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "boolean", "default": "true"}};
1343
1346
assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1344
1347
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "boolean", "default": 5}};
1345
1348
assertThrows("INVALID-FIELD-TYPE", "default", loadyaml, my_make_yaml(base + {"parameters": p}));
1346
1349
1347
- # TODO
1348
- /*p = base.parameters + {"a": {"name": "a", "in": "query", "type": "file"}};
1349
- assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
1350
1350
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "file"}};
1351
- assertThrows("INVALID-FIELD-TYPE ", "default ", loadyaml, my_make_yaml(base + {"parameters": p}));*/
1351
+ assertThrows("INVALID-FIELD-VALUE ", "invalid .* type ", loadyaml, my_make_yaml(base + {"parameters": p}));
1352
1352
1353
1353
p = base.parameters + {"a": {"name": "a", "in": "query", "type": "integer", "default": 5}};
1354
1354
assertTrue(loadyaml(my_make_yaml(base + {"parameters": p})));
@@ -2159,7 +2159,7 @@ public class SwaggerTest inherits QUnit::Test {
2159
2159
)
2160
2160
),
2161
2161
);
2162
- b.paths."/api/b2517" += (
2162
+ b.paths."/api/b2517" += {
2163
2163
"post": (
2164
2164
"responses": (
2165
2165
"200": ("description": "success",),
@@ -2177,7 +2177,46 @@ public class SwaggerTest inherits QUnit::Test {
2177
2177
},
2178
2178
)
2179
2179
),
2180
- );
2180
+ };
2181
+ b.paths."/api/unix-time" += {
2182
+ "get": {
2183
+ "responses": {
2184
+ "200": {"description": "success",},
2185
+ },
2186
+ #"produces": (MimeTypeJson,),
2187
+ "parameters": (
2188
+ {
2189
+ "in": "query",
2190
+ "name": "t",
2191
+ "type": "integer",
2192
+ "format": "unix-time",
2193
+ },
2194
+ )
2195
+ },
2196
+ "post": {
2197
+ "responses": {
2198
+ "200": {
2199
+ "description": "success",
2200
+ "schema": {
2201
+ "type": "integer",
2202
+ "format": "unix-time",
2203
+ }
2204
+ },
2205
+ },
2206
+ "consumes": (MimeTypeJson,),
2207
+ "produces": (MimeTypeJson,),
2208
+ "parameters": (
2209
+ {
2210
+ "in": "body",
2211
+ "name": "t",
2212
+ "schema": {
2213
+ "type": "integer",
2214
+ "format": "unix-time",
2215
+ },
2216
+ },
2217
+ )
2218
+ },
2219
+ };
2181
2220
2182
2221
remove b.parameters.a.type;
2183
2222
@@ -2596,6 +2635,114 @@ public class SwaggerTest inherits QUnit::Test {
2596
2635
assertThrows("SCHEMA-VALIDATION-ERROR", \so.parseResponse(), ("post", "/v2/api/b2507", 200,
2597
2636
"\"string\"", {"content-type": MimeTypeJson}));
2598
2637
}
2638
+
2639
+ h = so.processRequest("get", "/v1/api/unix-time?t=2024-09-30T12:35:52", NOTHING, NOTHING, MimeTypeJson);
2640
+ assertEq("/v1/api/unix-time?t=1727692552", h.uri_path);
2641
+ assertNothing(h.body);
2642
+ assertNothing(h.content);
2643
+ #printf("h: %y\n", h);
2644
+
2645
+ {
2646
+ hash hdr = ("content-type": h.content);
2647
+ hash<RestRequestServerInfo> sh = so.parseRequest("get", h.uri_path, h.body, \hdr);
2648
+ on_error printf("sh: %N\n", sh);
2649
+ assertEq("/api/unix-time", sh.path);
2650
+ assertEq(2024-09-30T12:35:52, sh.query.t);
2651
+ assertNothing(sh.body);
2652
+ }
2653
+
2654
+ h = so.processRequest("post", "/v1/api/unix-time", 2024-09-30T12:35:52, NOTHING, MimeTypeJson);
2655
+ assertEq("/v1/api/unix-time", h.uri_path);
2656
+ assertEq("1727692552", h.body);
2657
+ assertEq(MimeTypeJson, h.content);
2658
+ #printf("h: %y\n", h);
2659
+
2660
+ {
2661
+ hash<auto> hdr = ("content-type": h.content);
2662
+ hash<RestRequestServerInfo> sh = so.parseRequest("post", h.uri_path, h.body, \hdr);
2663
+ on_error printf("sh: %N\n", sh);
2664
+ assertEq("/api/unix-time", sh.path);
2665
+ assertEq(2024-09-30T12:35:52, sh.body);
2666
+ }
2667
+
2668
+ {
2669
+ hash<HttpResponseInfo> res = so.processResponse("post", "/api/unix-time", 200, 2024-09-30T12:35:52, NOTHING, MimeTypeJson);
2670
+ {
2671
+ on_error printf("res: %N\n", res);
2672
+ assertEq(200, res."code");
2673
+ assertEq(MimeTypeJson, res.hdr."Content-Type");
2674
+ assertEq("1727692552", res.body);
2675
+ }
2676
+
2677
+ hash<RestResponseClientInfo> cres = so.parseResponse("post", "/api/unix-time", res."code", res.body, res.hdr);
2678
+ assertEq(200, cres."code");
2679
+ assertEq(MimeTypeJson, cres.hdr."Content-Type");
2680
+ assertEq(2024-09-30T12:35:52, cres.body);
2681
+ }
2682
+ }
2683
+
2684
+ {
2685
+ hash b += ValidSwaggerSchema;
2686
+ b.paths."/api/query-object" += {
2687
+ "get": {
2688
+ "responses": {
2689
+ "200": {
2690
+ "description": "success",
2691
+ "schema": {
2692
+ "type": "string",
2693
+ }
2694
+ },
2695
+ },
2696
+ "produces": (MimeTypeJson,),
2697
+ "parameters": (
2698
+ {
2699
+ "in": "query",
2700
+ "name": "obj",
2701
+ "type": "object",
2702
+ },
2703
+ )
2704
+ },
2705
+ };
2706
+
2707
+ SwaggerSchema so("", b, {
2708
+ "parse_flags": LM_ACCEPT_QUERY_OBJECTS,
2709
+ });
2710
+
2711
+ hash<auto> hdr;
2712
+ hash<RestRequestServerInfo> sh = so.parseRequest("get", "api/query-object?a=1&b=2", NOTHING, \hdr);
2713
+ {
2714
+ on_error printf("sh: %N\n", sh);
2715
+ assertEq({"a": "1", "b": "2"}, sh.query.obj);
2716
+ assertNothing(sh.body);
2717
+ }
2718
+
2719
+ hash<RestRequestClientInfo> req = so.processRequest("get", "api/query-object?a=1&b=2", NOTHING,
2720
+ NOTHING, MimeTypeJson);
2721
+ {
2722
+ on_error printf("req: %N\n", req);
2723
+ assertEq("/api/query-object?a=1&b=2", req.uri_path);
2724
+ assertEq(MimeTypeJson, req.response_content[0]);
2725
+ }
2726
+
2727
+ hash<RestResponseClientInfo> rsh = so.parseResponse("get", "api/query-object?a=1&b=2", 200, "\"OK\"",
2728
+ {"content-type": MimeTypeJson});
2729
+ {
2730
+ on_error printf("rsh: %N\n", rsh);
2731
+ assertEq(200, rsh.code);
2732
+ assertEq(MimeTypeJson, rsh.hdr."content-type");
2733
+ assertEq("OK", rsh.body);
2734
+ assertThrows("SCHEMA-VALIDATION-ERROR", \so.parseResponse(), ("post", "/v2/api/b2507", 200,
2735
+ "\"string\"", {"content-type": MimeTypeJson}));
2736
+ }
2737
+
2738
+ {
2739
+ hash<HttpResponseInfo> res = so.processResponse("get", "api/query-object?a=1&b=2", 200, "OK", NOTHING,
2740
+ MimeTypeJson);
2741
+ on_error printf("res: %N\n", res);
2742
+ assertEq(200, res."code");
2743
+ assertEq(MimeTypeJson, res.hdr."Content-Type");
2744
+ assertEq("\"OK\"", res.body);
2745
+ }
2599
2746
}
2600
2747
2601
2748
{
@@ -2657,13 +2804,13 @@ public class SwaggerTest inherits QUnit::Test {
2657
2804
{
2658
2805
string uri = "/pet/findByTags?tags=tag1;tags=tag2";
2659
2806
hash<RestRequestClientInfo> req = so.processRequest("GET", uri);
2660
- assertEq(uri, req.uri_path);
2807
+ assertEq("/v2" + uri, req.uri_path);
2661
2808
}
2662
2809
2663
2810
{
2664
2811
string uri = "/pet/findByTags?tags=tag1&tags=tag2";
2665
2812
hash<RestRequestClientInfo> req = so.processRequest("GET", uri);
2666
- assertEq(uri, req.uri_path);
2813
+ assertEq("/v2" + uri, req.uri_path);
2667
2814
}
2668
2815
2669
2816
{
@@ -2781,7 +2928,8 @@ public class SwaggerTest inherits QUnit::Test {
2781
2928
assertEq(MimeTypeJson, res.hdr."Content-Type");
2782
2929
2783
2930
body.shipDate = 200;
2784
- assertThrows("SCHEMA-VALIDATION-ERROR", "shipDate", \so.processResponse(), ("post", "/store/order", 200, body, NOTHING, MimeTypeJson));
2931
+ assertThrows("SCHEMA-VALIDATION-ERROR", "shipDate", \so.processResponse(), ("post", "/store/order", 200,
2932
+ body, NOTHING, MimeTypeJson));
2785
2933
}
2786
2934
}
2787
2935
0 commit comments