Files
metabuilder/packages/package_validator/examples/validate_audit_log.lua
JohnDoe6345789 459182b655 feat: Add comprehensive validation for package structure, metadata, and components
- Implemented component schema validation in `component_schema.lua`.
- Created metadata schema validation in `metadata_schema.lua`.
- Developed structure validation logic in `structure_validator.lua`.
- Introduced Lua file validation functions in `lua_validator.lua`.
- Added integration tests for validation logic in `validate.test.lua`.
- Created unit tests for component, metadata, and structure validation.
- Added SVG icon for package representation.
- Established a main validation orchestrator in `validate.lua` to coordinate the validation process.
2025-12-30 02:19:28 +00:00

95 lines
2.4 KiB
Lua

-- Example: Validate the audit_log package
-- This demonstrates how to use the package_validator package
local package_validator = require("init")
local validate = require("validate")
print("=== Package Validator Demo ===\n")
-- Example 1: Validate a complete package
print("1. Validating audit_log package...")
local results = package_validator.validate_package("audit_log")
print(validate.format_results(results))
print()
-- Example 2: Validate just metadata
print("2. Validating metadata only...")
local metadata = {
packageId = "package_validator",
name = "Package Validator",
version = "1.0.0",
description = "Validates JSON schemas for package metadata, components, and configuration files",
icon = "static_content/icon.svg",
author = "MetaBuilder",
category = "tools",
dependencies = {},
exports = {
components = {},
scripts = {"validate", "metadata_schema", "component_schema"}
},
minLevel = 5
}
local valid, errors = package_validator.validate_metadata(metadata)
if valid then
print("✓ Metadata is valid")
else
print("✗ Metadata validation failed:")
for _, err in ipairs(errors) do
print("" .. err)
end
end
print()
-- Example 3: Validate components
print("3. Validating components...")
local components = {
{
id = "audit_stats_cards",
type = "audit_stats_cards",
name = "Audit Stats Cards",
description = "Grid of stat cards showing audit log summary",
props = {
stats = {
total = 0,
successful = 0,
failed = 0,
rateLimit = 0
}
},
layout = {
type = "Grid",
props = { cols = 4, gap = 4 }
}
}
}
local valid, errors = package_validator.validate_components(components)
if valid then
print("✓ Components are valid")
else
print("✗ Component validation failed:")
for _, err in ipairs(errors) do
print("" .. err)
end
end
print()
-- Example 4: Demonstrate validation failure
print("4. Demonstrating validation failure...")
local invalid_metadata = {
packageId = "Invalid-Package", -- Invalid: contains uppercase and hyphen
name = "Test",
version = "1.0", -- Invalid: not semantic versioning
description = "Test package",
author = "Test",
category = "test",
minLevel = 10 -- Invalid: out of range
}
local valid, errors = package_validator.validate_metadata(invalid_metadata)
print("✗ Expected validation failures:")
for _, err in ipairs(errors) do
print("" .. err)
end