You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@apisix.apache.org by sp...@apache.org on 2021/05/23 11:16:55 UTC
[apisix] branch master updated: fix: invalid schema field for
plugin `fault-injection` (#4291)
This is an automated email from the ASF dual-hosted git repository.
spacewander pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new 52cb592 fix: invalid schema field for plugin `fault-injection` (#4291)
52cb592 is described below
commit 52cb59213de546052718f740eafddd47fa57e7f7
Author: nic-chen <33...@users.noreply.github.com>
AuthorDate: Sun May 23 19:16:48 2021 +0800
fix: invalid schema field for plugin `fault-injection` (#4291)
---
apisix/plugins/fault-injection.lua | 4 +-
t/plugin/fault-injection.t | 144 +++++++++++++++++++++++++++++--------
2 files changed, 116 insertions(+), 32 deletions(-)
diff --git a/apisix/plugins/fault-injection.lua b/apisix/plugins/fault-injection.lua
index eb699c3..9089b41 100644
--- a/apisix/plugins/fault-injection.lua
+++ b/apisix/plugins/fault-injection.lua
@@ -36,7 +36,7 @@ local schema = {
vars = {
type = "array",
maxItems = 20,
- item = {
+ items = {
type = "array",
},
}
@@ -51,7 +51,7 @@ local schema = {
vars = {
type = "array",
maxItems = 20,
- item = {
+ items = {
type = "array",
},
}
diff --git a/t/plugin/fault-injection.t b/t/plugin/fault-injection.t
index 9ae71dd..a4fa97c 100644
--- a/t/plugin/fault-injection.t
+++ b/t/plugin/fault-injection.t
@@ -303,7 +303,91 @@ qr/invalid request body/
-=== TEST 8: set route(delay 1 seconds)
+=== TEST 8: set route(invalid vars in the delay property)
+--- config
+ location /t {
+ content_by_lua_block {
+ local t = require("lib.test_admin").test
+ local code, body = t('/apisix/admin/routes/1',
+ ngx.HTTP_PUT,
+ [[{
+ "plugins": {
+ "fault-injection": {
+ "delay": {
+ "duration": 0.1,
+ "vars": {
+ "a",
+ "b"
+ }
+ },
+ },
+ "proxy-rewrite": {
+ "uri": "/hello"
+ }
+ },
+ "uri": "/hello"
+ }]]
+ )
+
+ if code >= 300 then
+ ngx.status = code
+ end
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- error_code: 400
+--- response_body eval
+qr/invalid request body/
+--- error_log eval
+qr/invalid request body/
+
+
+
+=== TEST 9: set route(invalid vars in in the abort property)
+--- config
+ location /t {
+ content_by_lua_block {
+ local t = require("lib.test_admin").test
+ local code, body = t('/apisix/admin/routes/1',
+ ngx.HTTP_PUT,
+ [[{
+ "plugins": {
+ "fault-injection": {
+ "abort": {
+ "http_status": 200,
+ "vars": {
+ "a",
+ "b"
+ }
+ }
+ },
+ "proxy-rewrite": {
+ "uri": "/hello"
+ }
+ },
+ "uri": "/hello"
+ }]]
+ )
+
+ if code >= 300 then
+ ngx.status = code
+ end
+ ngx.say(body)
+ }
+ }
+--- request
+GET /t
+--- error_code: 400
+--- response_body eval
+qr/invalid request body/
+--- error_log eval
+qr/invalid request body/
+
+
+
+=== TEST 10: set route(delay 1 seconds)
--- config
location /t {
content_by_lua_block {
@@ -347,7 +431,7 @@ passed
-=== TEST 9: hit route(delay 1 seconds and return hello world)
+=== TEST 11: hit route(delay 1 seconds and return hello world)
--- request
GET /hello HTTP/1.1
--- response_body
@@ -357,7 +441,7 @@ hello world
-=== TEST 10: set route(abort with http status 200 and return "Fault Injection!\n")
+=== TEST 12: set route(abort with http status 200 and return "Fault Injection!\n")
--- config
location /t {
content_by_lua_block {
@@ -402,7 +486,7 @@ passed
-=== TEST 11: hit route(abort with http code 200 and return "Fault Injection!\n")
+=== TEST 13: hit route(abort with http code 200 and return "Fault Injection!\n")
--- request
GET /hello HTTP/1.1
--- error_code: 200
@@ -413,7 +497,7 @@ Fault Injection!
-=== TEST 12: set route(abort with http status 405 and return "Fault Injection!\n")
+=== TEST 14: set route(abort with http status 405 and return "Fault Injection!\n")
--- config
location /t {
content_by_lua_block {
@@ -458,7 +542,7 @@ passed
-=== TEST 13: hit route(abort with http status 405 and return "Fault Injection!\n")
+=== TEST 15: hit route(abort with http status 405 and return "Fault Injection!\n")
--- request
GET /hello HTTP/1.1
--- error_code: 405
@@ -469,7 +553,7 @@ Fault Injection!
-=== TEST 14: set route(play with redirect plugin)
+=== TEST 16: set route(play with redirect plugin)
--- config
location /t {
content_by_lua_block {
@@ -515,7 +599,7 @@ passed
-=== TEST 15: hit route(abort with http status 200 and return "Fault Injection!\n")
+=== TEST 17: hit route(abort with http status 200 and return "Fault Injection!\n")
--- request
GET /hello HTTP/1.1
--- error_code: 200
@@ -526,7 +610,7 @@ Fault Injection!
-=== TEST 16: set route (abort injection but with zero percentage)
+=== TEST 18: set route (abort injection but with zero percentage)
--- config
location /t {
content_by_lua_block {
@@ -573,7 +657,7 @@ passed
-=== TEST 17: hit route (redirect)
+=== TEST 19: hit route (redirect)
--- request
GET /hello HTTP/1.1
--- error_code: 302
@@ -582,7 +666,7 @@ GET /hello HTTP/1.1
-=== TEST 18: set route (delay injection but with zero percentage)
+=== TEST 20: set route (delay injection but with zero percentage)
--- config
location /t {
content_by_lua_block {
@@ -627,7 +711,7 @@ passed
-=== TEST 19: hit route (no wait and return hello1 world)
+=== TEST 21: hit route (no wait and return hello1 world)
--- request
GET /hello HTTP/1.1
--- error_code: 200
@@ -638,7 +722,7 @@ hello1 world
-=== TEST 20: set route(body with var)
+=== TEST 22: set route(body with var)
--- config
location /t {
content_by_lua_block {
@@ -682,7 +766,7 @@ passed
-=== TEST 21: hit route(body with var)
+=== TEST 23: hit route(body with var)
--- request
GET /hello
--- response_body
@@ -692,7 +776,7 @@ client addr: 127.0.0.1
-=== TEST 22: set route(abort without body)
+=== TEST 24: set route(abort without body)
--- config
location /t {
content_by_lua_block {
@@ -735,7 +819,7 @@ passed
-=== TEST 23: hit route(abort without body)
+=== TEST 25: hit route(abort without body)
--- request
GET /hello
--- response_body
@@ -744,7 +828,7 @@ GET /hello
-=== TEST 24: vars schema validation passed
+=== TEST 26: vars schema validation passed
--- config
location /t {
content_by_lua_block {
@@ -792,7 +876,7 @@ done
-=== TEST 25: vars schema validation failed(abort failed)
+=== TEST 27: vars schema validation failed(abort failed)
--- config
location /t {
content_by_lua_block {
@@ -835,7 +919,7 @@ qr/failed to create vars expression:.*/
-=== TEST 26: set route and configure the vars rule in abort
+=== TEST 28: set route and configure the vars rule in abort
--- config
location /t {
content_by_lua_block {
@@ -885,7 +969,7 @@ passed
-=== TEST 27: hit the route (all vars rules pass), execute abort
+=== TEST 29: hit the route (all vars rules pass), execute abort
--- request
GET /hello?name=jack&age=18
--- more_headers
@@ -898,7 +982,7 @@ Fault Injection!
-=== TEST 28: hit the route (missing apikey), execute abort
+=== TEST 30: hit the route (missing apikey), execute abort
--- request
GET /hello?name=jack&age=20
--- error_code: 403
@@ -909,7 +993,7 @@ Fault Injection!
-=== TEST 29: hit the route (missing request parameters), execute abort
+=== TEST 31: hit the route (missing request parameters), execute abort
--- request
GET /hello
--- more_headers
@@ -922,7 +1006,7 @@ Fault Injection!
-=== TEST 30: hit route(`vars` do not match, `age` is missing)
+=== TEST 32: hit route(`vars` do not match, `age` is missing)
--- request
GET /hello?name=allen
--- response_body
@@ -932,7 +1016,7 @@ hello world
-=== TEST 31: hit route(all `vars` do not match)
+=== TEST 33: hit route(all `vars` do not match)
--- request
GET /hello
--- response_body
@@ -942,7 +1026,7 @@ hello world
-=== TEST 32: set route and configure the vars rule in delay
+=== TEST 34: set route and configure the vars rule in delay
--- config
location /t {
content_by_lua_block {
@@ -988,7 +1072,7 @@ passed
-=== TEST 33: hit route(delay 2 seconds and return hello world)
+=== TEST 35: hit route(delay 2 seconds and return hello world)
--- request
GET /hello?name=jack&age=22
--- response_body
@@ -998,7 +1082,7 @@ hello world
-=== TEST 34: hit route (no wait and return hello1 world)
+=== TEST 36: hit route (no wait and return hello1 world)
--- request
GET /hello HTTP/1.1
--- error_code: 200
@@ -1009,7 +1093,7 @@ hello world
-=== TEST 35: set route and configure the vars rule in abort and delay
+=== TEST 37: set route and configure the vars rule in abort and delay
--- config
location /t {
content_by_lua_block {
@@ -1064,7 +1148,7 @@ passed
-=== TEST 36: hit the route (all vars rules are passed), execute abort and delay
+=== TEST 38: hit the route (all vars rules are passed), execute abort and delay
--- request
GET /hello?name=jack&age=18
--- more_headers
@@ -1077,7 +1161,7 @@ Fault Injection!
-=== TEST 37: hit the route (abort rule does not match), only execute delay
+=== TEST 39: hit the route (abort rule does not match), only execute delay
--- request
GET /hello?name=jack&age=16
--- more_headers