kong/spec/02-integration/04-admin_api/12-plugins-conf.lua (153 lines of code) (raw):

local helpers = require "spec.helpers" local cjson = require "cjson" local tablex = require "pl.tablex" local constants = require "kong.constants" describe("Plugins conf property" , function() describe("with 'plugins=bundled'", function() local client lazy_setup(function() helpers.get_db_utils(nil, {}) -- runs migrations assert(helpers.start_kong({ plugins = "bundled", })) client = helpers.admin_client() end) lazy_teardown(function() if client then client:close() end helpers.stop_kong() end) it("all bundled plugins are enabled", function() local res = assert(client:send { method = "GET", path = "/", }) local body = assert.res_status(200 , res) local json = assert(cjson.decode(body)) local bundled_plugins = constants.BUNDLED_PLUGINS assert.equal(tablex.size(bundled_plugins), tablex.size(json.plugins.available_on_server)) end) end) describe("with 'plugins=off'", function() local client lazy_setup(function() assert(helpers.start_kong({ plugins = "off", })) client = helpers.admin_client() end) lazy_teardown(function() if client then client:close() end helpers.stop_kong() end) it("no plugin is loaded", function() local res = assert(client:send { method = "GET", path = "/", }) local body = assert.res_status(200 , res) local json = assert(cjson.decode(body)) assert.equal(0, #json.plugins.available_on_server) end) end) describe("with 'plugins=off, key-auth'", function() local client lazy_setup(function() assert(helpers.start_kong({ plugins = "off, key-auth", })) client = helpers.admin_client() end) lazy_teardown(function() if client then client:close() end helpers.stop_kong() end) it("no plugin is loaded", function() local res = assert(client:send { method = "GET", path = "/", }) local body = assert.res_status(200 , res) local json = assert(cjson.decode(body)) assert.equal(0, #json.plugins.available_on_server) end) end) describe("with plugins='key-auth, off, basic-auth", function() local client lazy_setup(function() assert(helpers.start_kong({ plugins = "key-auth, off, basic-auth", })) client = helpers.admin_client() end) lazy_teardown(function() if client then client:close() end helpers.stop_kong() end) it("loads only key-auth and basic-auth plugins", function() local res = assert(client:send { method = "GET", path = "/", }) local body = assert.res_status(200 , res) local json = assert(cjson.decode(body)) assert.equal(2, tablex.size(json.plugins.available_on_server)) assert.True(json.plugins.available_on_server["key-auth"]) assert.True(json.plugins.available_on_server["basic-auth"]) end) end) describe("with a plugin list in conf, admin API" , function() local client lazy_setup(function() assert(helpers.start_kong({ plugins = "key-auth, basic-auth" })) client = helpers.admin_client() end) lazy_teardown(function() if client then client:close() end helpers.stop_kong() end) it("returns 201 for plugins included in the list" , function() local res = assert(client:send { method = "POST", path = "/plugins/", body = { name = "key-auth" }, headers = { ["Content-Type"] = "application/json" } }) assert.res_status(201 , res) local res = assert(client:send { method = "POST", path = "/plugins/", body = { name = "basic-auth" }, headers = { ["Content-Type"] = "application/json" } }) assert.res_status(201 , res) end) it("returns 400 for plugins not included in the list" , function() local res = assert(client:send { method = "POST", path = "/plugins/", body = { name = "rate-limiting" }, headers = { ["Content-Type"] = "application/json" } }) assert.res_status(400 , res) end) end) end)