Skip to content

Commit

Permalink
fix: the plugins bound on the service use the latest configuration (#…
Browse files Browse the repository at this point in the history
…8482)

Fixes #8481

Signed-off-by: spacewander <spacewanderlzx@gmail.com>
  • Loading branch information
tzssangglass authored and spacewander committed Jan 30, 2023
1 parent 39391dc commit e9a24d7
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 1 deletion.
2 changes: 1 addition & 1 deletion apisix/plugin.lua
Original file line number Diff line number Diff line change
Expand Up @@ -658,7 +658,7 @@ function _M.merge_consumer_route(route_conf, consumer_conf, api_ctx)

local flag = route_conf.value.id .. "#" .. route_conf.modifiedIndex
.. "#" .. consumer_conf.id .. "#" .. consumer_conf.modifiedIndex
local new_conf = merged_route(flag, nil,
local new_conf = merged_route(flag, api_ctx.conf_version,
merge_consumer_route, route_conf, consumer_conf)

api_ctx.conf_type = api_ctx.conf_type .. "&consumer"
Expand Down
114 changes: 114 additions & 0 deletions t/node/consumer-plugin.t
Original file line number Diff line number Diff line change
Expand Up @@ -407,3 +407,117 @@ passed
[error]
--- error_log
find consumer John_Doe



=== TEST 12: the plugins bound on the service should use the latest configuration
--- config
location /t {
content_by_lua_block {
local t = require("lib.test_admin").test
local code, body = t('/apisix/admin/consumers',
ngx.HTTP_PUT,
[[{
"username":"jack",
"plugins": {
"key-auth": {
"key": "auth-jack"
}
}
}]]
)
if code >= 300 then
ngx.status = code
ngx.say(body)
return
end

local code, body = t('/apisix/admin/services/1',
ngx.HTTP_PUT,
[[{
"plugins": {
"key-auth": {
"header": "Authorization"
},
"proxy-rewrite": {
"uri": "/hello1"
}
}
}]]
)
if code >= 300 then
ngx.status = code
ngx.say(body)
return
end

local code, body = t('/apisix/admin/routes/1',
ngx.HTTP_PUT,
[[{
"methods": [
"GET"
],
"uri": "/hello",
"service_id": "1",
"upstream": {
"nodes": {
"127.0.0.1:1980": 1
},
"type": "roundrobin"
}
}]]
)
if code >= 300 then
ngx.status = code
ngx.say(body)
return
end

local http = require "resty.http"
local uri = "http://127.0.0.1:" .. ngx.var.server_port .. "/hello"
local httpc = http.new()
local headers = {
["Authorization"] = "auth-jack"
}
local res, err = httpc:request_uri(uri, {headers = headers})
assert(res.status == 200)
if not res then
ngx.log(ngx.ERR, err)
return
end
ngx.print(res.body)

local code, body = t('/apisix/admin/services/1',
ngx.HTTP_PUT,
[[{
"plugins": {
"key-auth": {
"header": "Authorization"
},
"proxy-rewrite": {
"uri": "/server_port"
}
}
}]]
)
if code >= 300 then
ngx.status = code
ngx.say(body)
return
end
ngx.sleep(0.1)

local res, err = httpc:request_uri(uri, {headers = headers})
assert(res.status == 200)
if not res then
ngx.log(ngx.ERR, err)
return
end
ngx.say(res.body)
}
}
--- request
GET /t
--- response_body
hello1 world
1980

0 comments on commit e9a24d7

Please sign in to comment.