summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-05-13 23:12:10 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-05-13 23:12:10 +0100
commit2ab1b5490ba78c0566da6151ca40bb58e40df1f4 (patch)
tree120cc286513566e88cda8328487ccddaad414788
parent3e10fb9466ce4d0fee4eb16fa1b800739d605843 (diff)
downloadlace-2ab1b5490ba78c0566da6151ca40bb58e40df1f4.tar.gz
Complex ruleset test with defines, includes and conditional allow/deny
-rw-r--r--test/test-lace.engine-complexruleset-allowsecond.rules1
-rw-r--r--test/test-lace.engine-complexruleset-definitions.rules3
-rw-r--r--test/test-lace.engine-complexruleset.rules19
-rw-r--r--test/test-lace.engine.lua12
4 files changed, 35 insertions, 0 deletions
diff --git a/test/test-lace.engine-complexruleset-allowsecond.rules b/test/test-lace.engine-complexruleset-allowsecond.rules
new file mode 100644
index 0000000..688ae69
--- /dev/null
+++ b/test/test-lace.engine-complexruleset-allowsecond.rules
@@ -0,0 +1 @@
+allow two
diff --git a/test/test-lace.engine-complexruleset-definitions.rules b/test/test-lace.engine-complexruleset-definitions.rules
new file mode 100644
index 0000000..7feea7b
--- /dev/null
+++ b/test/test-lace.engine-complexruleset-definitions.rules
@@ -0,0 +1,3 @@
+define first equal state one
+define second equal state two
+define third equal state three
diff --git a/test/test-lace.engine-complexruleset.rules b/test/test-lace.engine-complexruleset.rules
new file mode 100644
index 0000000..ad3c449
--- /dev/null
+++ b/test/test-lace.engine-complexruleset.rules
@@ -0,0 +1,19 @@
+// This is a complex ruleset intended to use
+# All of the features of lace
+-- So that we can be sure it all works
+
+// Error cases are covered in individual tests
+-- So the purpose of these tests is to compile
+# and to work
+
+default deny "four"
+
+include complexruleset-definitions
+
+allow one first
+
+include complexruleset-allowsecond second
+
+deny three third
+
+-- Expect four denial, despite last action being a deny
diff --git a/test/test-lace.engine.lua b/test/test-lace.engine.lua
index 7273a2b..18c21a0 100644
--- a/test/test-lace.engine.lua
+++ b/test/test-lace.engine.lua
@@ -168,6 +168,18 @@ function suite.test_allow_with_define_used_works_and_passes()
assert(msg == "because", "Because")
end
+function suite.test_complex_ruleset()
+ local ruleset, msg = lace.compiler.compile(comp_context, "complexruleset")
+ assert(type(ruleset) == "table", "Ruleset did not compile")
+ for _, s in ipairs{"one","two","three","four"} do
+ local expect = (s == "one" or s == "two") and "allow" or "deny"
+ local ectx = {state=s}
+ local result, msg = lace.engine.run(ruleset, ectx)
+ assert(result == expect, "Expected " .. expect)
+ assert(msg == s, "Reason expected " .. s)
+ end
+end
+
local count_ok = 0
for _, testname in ipairs(testnames) do
print("Run: " .. testname)