Files
metabuilder/packages/ui_auth/seed/scripts/tests/gate.wrap.test.lua
2025-12-30 12:57:10 +00:00

65 lines
2.1 KiB
Lua

-- Gate Wrap Tests
-- Parameterized tests for auth gate wrap functionality
local describe = require("lua_test.describe")
local it = require("lua_test.it")
local it_each = require("lua_test.it_each")
local expect = require("lua_test.expect")
local beforeEach = require("lua_test.beforeEach")
local mock = require("lua_test.mock")
local cases = require("tests.gate.cases")
local wrapModule = require("gate.wrap")
describe("gate.wrap", function()
-- Mock the check module
beforeEach(function()
_G.check = {
can_access = mock.fn(function(user, level)
return user.level and user.level >= level
end)
}
end)
describe("when authenticated and authorized", function()
it_each(cases.wrap.allowed, "$description", function(case)
local user = { id = "user_123", level = case.userLevel }
local children = { type = "Dashboard", props = {} }
local ctx = { user = user, requiredLevel = case.requiredLevel, children = children }
local result = wrapModule.wrap(ctx)
expect(result).toBe(children)
end)
end)
describe("when not authenticated", function()
it_each(cases.wrap.redirect, "$description", function(case)
local ctx = { user = nil, children = {} }
local result = wrapModule.wrap(ctx)
expect(result.type).toBe("Redirect")
expect(result.props.to).toBe("/login")
end)
end)
describe("when not authorized", function()
it_each(cases.wrap.denied, "$description (level $userLevel < $requiredLevel)", function(case)
local user = { id = "user_123", level = case.userLevel }
local ctx = { user = user, requiredLevel = case.requiredLevel, children = {} }
-- Ensure mock returns false
_G.check.can_access = mock.fn(function(u, l)
return u.level >= l
end)
local result = wrapModule.wrap(ctx)
expect(result.type).toBe("AccessDenied")
expect(result.props.reason).toBe("insufficient_permission")
end)
end)
end)
return {
name = "gate.wrap.test",
description = "Tests for auth gate wrap function"
}