kong/spec/03-plugins/29-acme/02-kong_storage_spec.lua (164 lines of code) (raw):

local storage = require("kong.plugins.acme.storage.kong") local helpers = require "spec.helpers" for _, strategy in helpers.each_strategy() do describe("Plugin: acme (storage.kong) [#" .. strategy .. "]", function() local _, db lazy_setup(function() _, db = helpers.get_db_utils(strategy, { "certificates", "snis", "cluster_events", "acme_storage", }, { "acme", }) db.acme_storage:truncate() end) describe("new", function() it("returns no error", function() local a = storage.new() assert.not_nil(a) end) end) describe("set", function() ngx.update_time() local key = tostring(ngx.now()) .. "set" it("returns no error", function() local a = storage.new() local err = a:set(key, "set") assert.is_nil(err) err = a:set(key, "set2") assert.is_nil(err) end) end) describe("get", function() ngx.update_time() local key = tostring(ngx.now()) .. "get" it("returns no error", function() local a = storage.new() local v, err err = a:set(key, "get") assert.is_nil(err) v, err = a:get(key) assert.is_nil(err) assert.same("get", v) err = a:set(key, "get2") assert.is_nil(err) v, err = a:get(key) assert.is_nil(err) assert.same("get2", v) end) end) describe("delete", function() ngx.update_time() local key = tostring(ngx.now()) .. "delete" it("returns no error", function() local a = storage.new() local v, err err = a:set(key, "delete") assert.not_nil(a) assert.is_nil(err) v, err = a:get(key) assert.is_nil(err) assert.same("delete", v) err = a:delete(key) assert.is_nil(err) assert.same("delete", v) v, err = a:get(key) assert.is_nil(err) assert.is_nil(v) end) end) describe("set with ttl", function() ngx.update_time() local key = tostring(ngx.now()) .. "setttl" local a = storage.new() local err, v it("returns no error", function() err = a:set(key, "setttl", 2) assert.is_nil(err) v, err = a:get(key) assert.is_nil(err) assert.same("setttl", v) end) it("cleans up expired key", function() ngx.sleep(2) v, err = a:get(key) assert.is_nil(err) assert.is_nil(v) end) end) describe("add without ttl", function() ngx.update_time() local key = tostring(ngx.now()) .. "add" local a = storage.new() local err, v it("returns no error", function() err = a:add(key, "add") assert.is_nil(err) v, err = a:get(key) assert.is_nil(err) assert.same("add", v) end) it("errors when key exists", function() err = a:add(key, "add2") assert.same("exists", err) v, err = a:get(key) assert.is_nil(err) assert.same("add", v) end) end) describe("add with ttl", function() ngx.update_time() local key = tostring(ngx.now()) .. "addttl" local a = storage.new() local err, v it("returns no error", function() err = a:add(key, "addttl", 2) assert.is_nil(err) v, err = a:get(key) assert.is_nil(err) assert.same("addttl", v) end) it("cleans up expired key", function() ngx.sleep(2) v, err = a:get(key) assert.is_nil(err) assert.is_nil(v) end) end) describe("list", function() ngx.update_time() local prefix = tostring(ngx.now()) .. "list_" local a = storage.new() local err, keys for i=1,10,1 do err = a:set(prefix .. tostring(i), " ") assert.is_nil(err) end it("returns all keys with no parameter", function() keys, err = a:list() assert.is_nil(err) assert.not_nil(keys) table.sort(keys) local rows = db.acme_storage:page(100) local expected_keys = {} for i, row in ipairs(rows) do expected_keys[i] = row.key end table.sort(expected_keys) assert.same(expected_keys, keys) end) it("returns keys with given prefix", function() keys, err = a:list(prefix) assert.is_nil(err) assert.not_nil(keys) assert.same(10, #keys) end) it("returns empty table if no match", function() keys, err = a:list(prefix .. "_") assert.is_nil(err) assert.not_nil(keys) assert.same(0, #keys) end) end) end) end