kong/spec/03-plugins/29-acme/04-schema_spec.lua (75 lines of code) (raw):
local acme_schema = require "kong.plugins.acme.schema"
local v = require("spec.helpers").validate_plugin_config_schema
describe("Plugin: acme (schema)", function()
local tests = {
{
name = "accepts valid config",
input = {
account_email = "example@example.com",
api_uri = "https://api.acme.org",
},
error = nil
},
----------------------------------------
{
name = "rejects invalid email",
input = {
account_email = "notaemail",
api_uri = "https://api.acme.org",
},
error = {
config = {
account_email = "invalid value: notaemail"
}
}
},
----------------------------------------
{
name = "must accpet ToS for Let's Encrypt (unaccpeted,staging)",
input = {
account_email = "example@example.com",
api_uri = "https://acme-staging-v02.api.letsencrypt.org",
},
error = {
["@entity"] = {
'terms of service must be accepted, see https://letsencrypt.org/repository/'
},
config = {
tos_accepted = "value must be true",
},
},
},
----------------------------------------
{
name = "must accpet ToS for Let's Encrypt (unaccpeted)",
input = {
account_email = "example@example.com",
api_uri = "https://acme-v02.api.letsencrypt.org",
},
error = {
["@entity"] = {
'terms of service must be accepted, see https://letsencrypt.org/repository/'
},
config = {
tos_accepted = "value must be true",
},
},
},
----------------------------------------
{
name = "must accpet ToS for Let's Encrypt (accepted)",
input = {
account_email = "example@example.com",
api_uri = "https://acme-v02.api.letsencrypt.org",
tos_accepted = true,
},
},
----------------------------------------
}
for _, t in ipairs(tests) do
it(t.name, function()
local output, err = v(t.input, acme_schema)
assert.same(t.error, err)
if t.error then
assert.is_falsy(output)
else
assert.is_truthy(output)
end
end)
end
end)