kong/spec/03-plugins/31-proxy-cache/01-schema_spec.lua (101 lines of code) (raw):

local proxy_cache_schema = require "kong.plugins.proxy-cache.schema" local v = require("spec.helpers").validate_plugin_config_schema describe("proxy-cache schema", function() it("accepts a minimal config", function() local entity, err = v({ strategy = "memory", }, proxy_cache_schema) assert.is_nil(err) assert.is_truthy(entity) end) it("defines default content-type values", function() local config = {strategy = "memory"} local entity, err = v(config, proxy_cache_schema) assert.is_nil(err) assert.is_truthy(entity) assert.same(entity.config.content_type, {"text/plain", "application/json"}) end) it("accepts a config with custom values", function() local entity, err = v({ strategy = "memory", response_code = { 200, 301 }, request_method = { "GET" }, content_type = { "application/json" }, }, proxy_cache_schema) assert.is_nil(err) assert.is_truthy(entity) end) it("accepts an array of numbers as strings", function() local entity, err = v({ strategy = "memory", response_code = {123, 200}, }, proxy_cache_schema) assert.is_nil(err) assert.is_truthy(entity) end) it("errors with invalid response_code", function() local entity, err = v({ strategy = "memory", response_code = { 99 }, }, proxy_cache_schema) assert.same({ "value should be between 100 and 900" }, err.config.response_code) assert.is_falsy(entity) end) it("errors if response_code is an empty array", function() local entity, err = v({ strategy = "memory", response_code = {}, }, proxy_cache_schema) assert.same("length must be at least 1", err.config.response_code) assert.is_falsy(entity) end) it("errors if response_code is a string", function() local entity, err = v({ strategy = "memory", response_code = "", }, proxy_cache_schema) assert.same("expected an array", err.config.response_code) assert.is_falsy(entity) end) it("errors if response_code has non-numeric values", function() local entity, err = v({ strategy = "memory", response_code = {true, "alo", 123}, }, proxy_cache_schema) assert.same({ "expected an integer", "expected an integer" }, err.config.response_code) assert.is_falsy(entity) end) it("errors if response_code has float value", function() local entity, err = v({ strategy = "memory", response_code = {123.5}, }, proxy_cache_schema) assert.same({ "expected an integer" }, err.config.response_code) assert.is_falsy(entity) end) it("errors with invalid ttl", function() local entity, err = v({ strategy = "memory", cache_ttl = -1 }, proxy_cache_schema) assert.same("value must be greater than 0", err.config.cache_ttl) assert.is_falsy(entity) end) it("supports vary_query_params values", function() local entity, err = v({ strategy = "memory", vary_query_params = { "foo" }, }, proxy_cache_schema) assert.is_nil(err) assert.is_truthy(entity) end) it("supports vary_headers values", function() local entity, err = v({ strategy = "memory", vary_headers = { "foo" }, }, proxy_cache_schema) assert.is_nil(err) assert.is_truthy(entity) end) end)