tests: Add tests for new modulemanager load_modules_for_host code
authorMatthew Wild <mwild1@gmail.com>
Fri, 16 Oct 2009 21:13:54 +0000 (22:13 +0100)
committerMatthew Wild <mwild1@gmail.com>
Fri, 16 Oct 2009 21:13:54 +0000 (22:13 +0100)
tests/test.lua
tests/test_core_modulemanager.lua [new file with mode: 0644]

index f5bcb02e123069c595889a6b6a08810c9328245d..0cec6cbaa9f7cd1aaa03f0b329792db26ec2c608 100644 (file)
@@ -11,6 +11,7 @@
 function run_all_tests()
        dotest "util.jid"
        dotest "util.multitable"
+       dotest "core.modulemanager"
        dotest "core.stanza_router"
        dotest "core.s2smanager"
        dotest "core.configmanager"
diff --git a/tests/test_core_modulemanager.lua b/tests/test_core_modulemanager.lua
new file mode 100644 (file)
index 0000000..82e9aa4
--- /dev/null
@@ -0,0 +1,48 @@
+-- Prosody IM
+-- Copyright (C) 2008-2009 Matthew Wild
+-- Copyright (C) 2008-2009 Waqas Hussain
+-- 
+-- This project is MIT/X11 licensed. Please see the
+-- COPYING file in the source package for more information.
+--
+
+local config = require "core.configmanager";
+local helpers = require "util.helpers";
+local set = require "util.set";
+
+function load_modules_for_host(load_modules_for_host, mm)
+       local test_num = 0;
+       local function test_load(global_modules_enabled, global_modules_disabled, host_modules_enabled, host_modules_disabled, expected_modules)
+               test_num = test_num + 1;
+               -- Prepare
+               hosts = { ["example.com"] = {} };
+               config.set("*", "core", "modules_enabled", global_modules_enabled);
+               config.set("*", "core", "modules_disabled", global_modules_disabled);
+               config.set("example.com", "core", "modules_enabled", host_modules_enabled);
+               config.set("example.com", "core", "modules_disabled", host_modules_disabled);
+               
+               expected_modules = set.new(expected_modules);
+               expected_modules:add_list(helpers.get_upvalue(load_modules_for_host, "autoload_modules"));
+               
+               local loaded_modules = set.new();
+               function mm.load(host, module)
+                       assert_equal(host, "example.com", test_num..": Host isn't example.com but "..tostring(host));
+                       assert_equal(expected_modules:contains(module), true, test_num..": Loading unexpected module '"..tostring(module).."'");
+                       loaded_modules:add(module);
+               end
+               load_modules_for_host("example.com");
+               assert_equal((expected_modules - loaded_modules):empty(), true, test_num..": Not all modules loaded: "..tostring(expected_modules - loaded_modules));
+       end
+       
+       test_load({ "one", "two", "three" }, nil, nil, nil, { "one", "two", "three" });
+       test_load({ "one", "two", "three" }, {}, nil, nil, { "one", "two", "three" });
+       test_load({ "one", "two", "three" }, { "two" }, nil, nil, { "one", "three" });
+       test_load({ "one", "two", "three" }, { "three" }, nil, nil, { "one", "two" });
+       test_load({ "one", "two", "three" }, nil, nil, { "three" }, { "one", "two" });
+       test_load({ "one", "two", "three" }, nil, { "three" }, { "three" }, { "one", "two", "three" });
+
+       test_load({ "one", "two" }, nil, { "three" }, nil, { "one", "two", "three" });
+       test_load({ "one", "two", "three" }, nil, { "three" }, nil, { "one", "two", "three" });
+       test_load({ "one", "two", "three" }, { "three" }, { "three" }, nil, { "one", "two", "three" });
+       test_load({ "one", "two" }, { "three" }, { "three" }, nil, { "one", "two", "three" });
+end