# HG changeset patch # User Matthew Wild # Date 1538421686 -3600 # Node ID 9d892b2415bf089e2ab6714c4432525e84efac1a # Parent db82b096b8429371eed71d452214faf8778a3531 Fix storage tests so they run, but not by default diff -r db82b096b842 -r 9d892b2415bf .busted --- a/.busted Mon Oct 01 19:43:20 2018 +0100 +++ b/.busted Mon Oct 01 20:21:26 2018 +0100 @@ -2,9 +2,12 @@ _all = { }, default = { - ["exclude-tags"] = "mod_bosh"; - }, + ["exclude-tags"] = "mod_bosh,storage"; + }; bosh = { tags = "mod_bosh"; - } + }; + storage = { + tags = "storage"; + }; } diff -r db82b096b842 -r 9d892b2415bf spec/core_storagemanager.lua --- a/spec/core_storagemanager.lua Mon Oct 01 19:43:20 2018 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,79 +0,0 @@ -local server = require "net.server_select"; -package.loaded["net.server"] = server; - -local function mock_prosody() - _G.prosody = { - core_post_stanza = function () end; - events = require "util.events".new(); - hosts = {}; - paths = { - data = "./data"; - }; - }; -end - -local configs = { - internal = { - storage = "internal"; - }; - sqlite = { - storage = "sql"; - sql = { driver = "SQLite3", database = "prosody-tests.sqlite" }; - }; -}; - -local test_host = "storage-unit-tests.invalid"; - -describe("storagemanager", function () - for _, backend in ipairs({ "internal", "sqlite" }) do - local tagged_name = "#"..backend; - if backend ~= configs[backend].storage then - tagged_name = tagged_name.." #"..configs[backend].storage; - end - insulate(tagged_name.." #storage backend", function () - mock_prosody(); - - local config = require "core.configmanager"; - local sm = require "core.storagemanager"; - local hm = require "core.hostmanager"; - local mm = require "core.modulemanager"; - - -- Simple check to ensure insulation is working correctly - assert.is_nil(config.get(test_host, "storage")); - - local backend_config = configs[backend]; - for k, v in pairs(backend_config) do - config.set(test_host, k, v); - end - assert(hm.activate(test_host, {})); - sm.initialize_host(test_host); - assert(mm.load(test_host, "storage_"..backend_config.storage)); - - -- These tests rely on being executed in order, disable any order - -- randomization for this block - randomize(false); - - local store; - it("may open a store", function () - store = assert(sm.open(test_host, "test")); - end); - - local simple_data = { foo = "bar" }; - - it("may set data for a user", function () - assert(store:set("user9999", simple_data)); - end); - - it("may get data for a user", function () - assert.same(simple_data, assert(store:get("user9999"))); - end); - - it("may remove data for a user", function () - assert(store:set("user9999", nil)); - local ret, err = store:get("user9999"); - assert.is_nil(ret); - assert.is_nil(err); - end); - end); - end -end); diff -r db82b096b842 -r 9d892b2415bf spec/core_storagemanager_spec.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spec/core_storagemanager_spec.lua Mon Oct 01 20:21:26 2018 +0100 @@ -0,0 +1,86 @@ +local server = require "net.server_select"; +package.loaded["net.server"] = server; + +local function mock_prosody() + _G.prosody = { + core_post_stanza = function () end; + events = require "util.events".new(); + hosts = {}; + paths = { + data = "./data"; + }; + }; +end + +local configs = { + internal = { + storage = "internal"; + }; + sqlite = { + storage = "sql"; + sql = { driver = "SQLite3", database = "prosody-tests.sqlite" }; + }; + mysql = { + storage = "sql"; + sql = { driver = "MySQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }; + }; + postgres = { + storage = "sql"; + sql = { driver = "PostgreSQL", database = "prosody", username = "prosody", password = "secret", host = "localhost" }; + }; +}; + +local test_host = "storage-unit-tests.invalid"; + +describe("storagemanager", function () + for backend, backend_config in pairs(configs) do + local tagged_name = "#"..backend; + if backend ~= backend_config.storage then + tagged_name = tagged_name.." #"..backend_config.storage; + end + insulate(tagged_name.." #storage backend", function () + mock_prosody(); + + local config = require "core.configmanager"; + local sm = require "core.storagemanager"; + local hm = require "core.hostmanager"; + local mm = require "core.modulemanager"; + + -- Simple check to ensure insulation is working correctly + assert.is_nil(config.get(test_host, "storage")); + + for k, v in pairs(backend_config) do + config.set(test_host, k, v); + end + assert(hm.activate(test_host, {})); + sm.initialize_host(test_host); + assert(mm.load(test_host, "storage_"..backend_config.storage)); + + -- These tests rely on being executed in order, disable any order + -- randomization for this block + randomize(false); + + local store; + it("may open a store", function () + store = assert(sm.open(test_host, "test")); + end); + + local simple_data = { foo = "bar" }; + + it("may set data for a user", function () + assert(store:set("user9999", simple_data)); + end); + + it("may get data for a user", function () + assert.same(simple_data, assert(store:get("user9999"))); + end); + + it("may remove data for a user", function () + assert(store:set("user9999", nil)); + local ret, err = store:get("user9999"); + assert.is_nil(ret); + assert.is_nil(err); + end); + end); + end +end);