80 lines
3.2 KiB
Lua
80 lines
3.2 KiB
Lua
local api_helpers = require "kong.api.api_helpers"
|
|
local norm = api_helpers.normalize_nested_params
|
|
|
|
describe("api_helpers", function()
|
|
describe("normalize_nested_params()", function()
|
|
it("handles nested & mixed data structures", function()
|
|
assert.same({ ["hello world"] = "foo, bar", falsy = false },
|
|
norm({ ["hello world"] = "foo, bar", falsy = false }))
|
|
|
|
assert.same({ array = { "alice", "bob", "casius" } },
|
|
norm({ ["array[1]"] = "alice",
|
|
["array[2]"] = "bob",
|
|
["array[3]"] = "casius" }))
|
|
|
|
assert.same({ hash = { answer = 42 } },
|
|
norm({ ["hash.answer"] = 42 }))
|
|
|
|
assert.same({ hash_array = { arr = { "one", "two" } } },
|
|
norm({ ["hash_array.arr[1]"] = "one",
|
|
["hash_array.arr[2]"] = "two" }))
|
|
|
|
assert.same({ array_hash = { { name = "peter" } } },
|
|
norm({ ["array_hash[1].name"] = "peter" }))
|
|
|
|
assert.same({ array_array = { { "x", "y" } } },
|
|
norm({ ["array_array[1][1]"] = "x",
|
|
["array_array[1][2]"] = "y" }))
|
|
|
|
assert.same({ hybrid = { 1, 2, n = 3 } },
|
|
norm({ ["hybrid[1]"] = 1,
|
|
["hybrid[2]"] = 2,
|
|
["hybrid.n"] = 3 }))
|
|
end)
|
|
it("handles nested & mixed data structures with omitted array indexes", function()
|
|
assert.same({ array = { "alice", "bob", "casius" } },
|
|
norm({ ["array[]"] = {"alice", "bob", "casius"} }))
|
|
|
|
assert.same({ hash_array = { arr = { "one", "two" } } },
|
|
norm({ ["hash_array.arr[]"] = { "one", "two" } }))
|
|
|
|
assert.same({ array_hash = { { name = "peter" } } },
|
|
norm({ ["array_hash[].name"] = "peter" }))
|
|
|
|
assert.same({ array_array = { { "x", "y" } } },
|
|
norm({ ["array_array[][]"] = { "x", "y" } }))
|
|
|
|
assert.same({ hybrid = { 1, 2, n = 3 } },
|
|
norm({ ["hybrid[]"] = { 1, 2 },
|
|
["hybrid.n"] = 3 }))
|
|
end)
|
|
it("complete use case", function()
|
|
assert.same({
|
|
service_id = 123,
|
|
name = "request-transformer",
|
|
config = {
|
|
add = {
|
|
form = "new-form-param:some_value, another-form-param:some_value",
|
|
headers = "x-new-header:some_value, x-another-header:some_value",
|
|
querystring = "new-param:some_value, another-param:some_value"
|
|
},
|
|
remove = {
|
|
form = "formparam-toremove",
|
|
headers = "x-toremove, x-another-one",
|
|
querystring = "param-toremove, param-another-one"
|
|
}
|
|
}
|
|
}, norm {
|
|
service_id = 123,
|
|
name = "request-transformer",
|
|
["config.add.headers"] = "x-new-header:some_value, x-another-header:some_value",
|
|
["config.add.querystring"] = "new-param:some_value, another-param:some_value",
|
|
["config.add.form"] = "new-form-param:some_value, another-form-param:some_value",
|
|
["config.remove.headers"] = "x-toremove, x-another-one",
|
|
["config.remove.querystring"] = "param-toremove, param-another-one",
|
|
["config.remove.form"] = "formparam-toremove"
|
|
})
|
|
end)
|
|
end)
|
|
end)
|