add config file validation #2
3 changed files with 42 additions and 33 deletions
13
test.lua
13
test.lua
|
@ -1,5 +1,6 @@
|
||||||
lu = require('luaunit')
|
lu = require('luaunit')
|
||||||
local rex = require('rex_pcre2')
|
local rex = require('rex_pcre2')
|
||||||
|
require('util')
|
||||||
|
|
||||||
function createNgx()
|
function createNgx()
|
||||||
local ngx = {
|
local ngx = {
|
||||||
|
@ -54,12 +55,18 @@ function setupFakeRequest(path, options)
|
||||||
end
|
end
|
||||||
|
|
||||||
local ctx = require('ctx')
|
local ctx = require('ctx')
|
||||||
function setupTest(module_require_path, config)
|
local config = require('config')
|
||||||
|
function setupTest(module_require_path, input_config)
|
||||||
resetNgx()
|
resetNgx()
|
||||||
local module = require(module_require_path)
|
local module = require(module_require_path)
|
||||||
state = module.init(config)
|
|
||||||
|
local schema_errors = config.validateSchema(module.config, input_config)
|
||||||
|
local count = table.pprint(schema_errors)
|
||||||
|
lu.assertIs(count, 0)
|
||||||
|
|
||||||
|
state = module.init(input_config)
|
||||||
ctx.compiled_chain = {
|
ctx.compiled_chain = {
|
||||||
{module, config, state}
|
{module, input_config, state}
|
||||||
}
|
}
|
||||||
return module
|
return module
|
||||||
end
|
end
|
||||||
|
|
|
@ -2,44 +2,21 @@ TestSchemaValidator = {}
|
||||||
|
|
||||||
local config = require('config')
|
local config = require('config')
|
||||||
|
|
||||||
local function len(t)
|
|
||||||
local count = 0
|
|
||||||
for _ in pairs(t) do count = count + 1 end
|
|
||||||
return count
|
|
||||||
end
|
|
||||||
|
|
||||||
function pprint(t, ident)
|
|
||||||
local ident = ident or 0
|
|
||||||
if type(t) == 'table' then
|
|
||||||
local count = 0
|
|
||||||
for k, v in pairs(t) do
|
|
||||||
print(string.rep('\t', ident) .. k)
|
|
||||||
pprint(v, ident + 1)
|
|
||||||
count = count + 1
|
|
||||||
end
|
|
||||||
if count == 0 then
|
|
||||||
print('<empty table>')
|
|
||||||
end
|
|
||||||
else
|
|
||||||
print(string.rep('\t', ident) .. tostring(t))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function TestSchemaValidator:testBasicFields()
|
function TestSchemaValidator:testBasicFields()
|
||||||
local errors = config.validateSchema({a={type='string'}}, {a='test'})
|
local errors = config.validateSchema({a={type='string'}}, {a='test'})
|
||||||
lu.assertIs(len(errors), 0)
|
lu.assertIs(table.len(errors), 0)
|
||||||
local errors = config.validateSchema({a={type='number'}}, {a=123})
|
local errors = config.validateSchema({a={type='number'}}, {a=123})
|
||||||
lu.assertIs(len(errors), 0)
|
lu.assertIs(table.len(errors), 0)
|
||||||
local errors = config.validateSchema({a={type='string'}}, {a=123})
|
local errors = config.validateSchema({a={type='string'}}, {a=123})
|
||||||
lu.assertIs(len(errors), 1)
|
lu.assertIs(table.len(errors), 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
function TestSchemaValidator:testList()
|
function TestSchemaValidator:testList()
|
||||||
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3}})
|
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3}})
|
||||||
lu.assertIs(len(errors), 0)
|
lu.assertIs(table.len(errors), 0)
|
||||||
|
|
||||||
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3,'asd'}})
|
local errors = config.validateSchema({a={type='list', schema={type='number'}}}, {a={1,2,3,'asd'}})
|
||||||
lu.assertIs(len(errors), 1)
|
lu.assertIs(table.len(errors), 1)
|
||||||
end
|
end
|
||||||
|
|
||||||
function TestSchemaValidator:testTable()
|
function TestSchemaValidator:testTable()
|
||||||
|
@ -60,7 +37,7 @@ function TestSchemaValidator:testTable()
|
||||||
{b=2}
|
{b=2}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
lu.assertIs(len(errors), 0)
|
lu.assertIs(table.len(errors), 0)
|
||||||
|
|
||||||
local errors = config.validateSchema(
|
local errors = config.validateSchema(
|
||||||
TEST_SCHEMA,
|
TEST_SCHEMA,
|
||||||
|
@ -68,5 +45,5 @@ function TestSchemaValidator:testTable()
|
||||||
{b='sex'}
|
{b='sex'}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
lu.assertIs(len(errors), 1)
|
lu.assertIs(table.len(errors), 1)
|
||||||
end
|
end
|
||||||
|
|
25
util.lua
Normal file
25
util.lua
Normal file
|
@ -0,0 +1,25 @@
|
||||||
|
function table.len(t)
|
||||||
|
local count = 0
|
||||||
|
for _ in pairs(t) do count = count + 1 end
|
||||||
|
return count
|
||||||
|
end
|
||||||
|
|
||||||
|
function table.pprint(t, ident, total_count)
|
||||||
|
local ident = ident or 0
|
||||||
|
local total_count = total_count or 0
|
||||||
|
if type(t) == 'table' then
|
||||||
|
local count = 0
|
||||||
|
for k, v in pairs(t) do
|
||||||
|
print(string.rep('\t', ident) .. k)
|
||||||
|
count = count + 1
|
||||||
|
total_count = pprint(v, ident + 1, total_count)
|
||||||
|
end
|
||||||
|
if count == 0 then
|
||||||
|
--print('<empty table>')
|
||||||
|
end
|
||||||
|
else
|
||||||
|
print(string.rep('\t', ident) .. tostring(t))
|
||||||
|
total_count = total_count + 1
|
||||||
|
end
|
||||||
|
return total_count
|
||||||
|
end
|
Loading…
Reference in a new issue