kong/spec/03-plugins/14-request-termination/03-integration_spec.lua (72 lines of code) (raw):

local helpers = require "spec.helpers" for _, strategy in helpers.each_strategy() do describe("Plugin: request-termination (integration) [#" .. strategy .. "]", function() local proxy_client local admin_client local consumer lazy_setup(function() local bp = helpers.get_db_utils(strategy, { "routes", "services", "plugins", "consumers", "keyauth_credentials", }) bp.routes:insert({ hosts = { "api1.request-termination.com" }, }) bp.plugins:insert { name = "key-auth", } consumer = bp.consumers:insert { username = "bob", } bp.keyauth_credentials:insert { key = "kong", consumer = { id = consumer.id }, } assert(helpers.start_kong({ database = strategy, nginx_conf = "spec/fixtures/custom_nginx.template", })) proxy_client = helpers.proxy_client() admin_client = helpers.admin_client() end) lazy_teardown(function() if proxy_client and admin_client then proxy_client:close() admin_client:close() end helpers.stop_kong() end) it("can be applied on a consumer", function() -- add the plugin to a consumer local res = assert(admin_client:send { method = "POST", path = "/plugins", headers = { ["Content-type"] = "application/json", }, body = { name = "request-termination", consumer = { id = consumer.id }, }, }) assert.response(res).has.status(201) -- verify access being blocked helpers.wait_until(function() res = assert(proxy_client:send { method = "GET", path = "/request", headers = { ["Host"] = "api1.request-termination.com", ["apikey"] = "kong", }, }) return pcall(function() assert.response(res).has.status(503) end) end, 10) local body = assert.response(res).has.jsonbody() assert.same({ message = "Service unavailable" }, body) end) end) end