Getting API disabled in the current context when testing a plugin

Disclaimer: I’m a front-end developer and my only Lua experience was hearing about a Lua table data structure 10 years ago and adding that to MooTools (pre Map()).

I’m writing a plugin based on some prior “art” and am trying to write some tests for it. The meat of the plugin is the following:

function _M.execute (conf)
	local cookie = restycookie:new()	
	local allowedVars = template.getCommonAllowedVars(conf)

	local cookieName = template.apply(conf.cookie_name, nil, nil, allowedVars)
	local request_cookie_value = cookie:get(cookieName)

	if request_cookie_value == nil then
		local path = kong.request.get_path()
		if handle_route(conf.routes, path) then
			conf.protocol = conf.scheme
			conf.path = conf.path_prefix
			return dynamic_service_access.execute(conf)

Someone else on my team has mocked Kong (at least some of the methods) so we can mock requests in another plugin’s tests. With that in place when I call the execute method above in the test I get an error saying

/usr/local/share/lua/5.1/resty/cookie.lua:103: API disabled in the current context

stack traceback:
	/usr/local/openresty/lualib/resty/core/var.lua:73: in function '__index'
	/usr/local/share/lua/5.1/resty/cookie.lua:103: in function 'new'
	.../share/lua/5.1/kong/plugins/no-cookie-routing/access.lua:22: in function 'execute'
	test/access.lua:47: in function <test/access.lua:35>

I’d rather not mock the resty cookie, but even if I do that I start getting the same error about lua request due to the get_path() call. What is the appropriate way to test this and is there a way to mock the context/ctx on Kong?

Hi, I am getting a similar error when running the test for the response transformer plugin. How did you solve the issue?