aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Wild <mwild1@gmail.com>2023-12-12 13:41:14 +0000
committerMatthew Wild <mwild1@gmail.com>2023-12-12 13:41:14 +0000
commit4b0463968ae4c31c07f7daa08b9d8ded9b832c0b (patch)
tree3bd2ddec373a9d23e55be2ee8928e3fc4a940e98
parent9dd7726419ef7f86aaca3430c1c92e98a6075f3b (diff)
downloadprosody-4b0463968ae4c31c07f7daa08b9d8ded9b832c0b.tar.gz
prosody-4b0463968ae4c31c07f7daa08b9d8ded9b832c0b.zip
mod_storage_internal, tests: Fix before/after combined with the 'reverse' flag
-rw-r--r--plugins/mod_storage_internal.lua1
-rw-r--r--spec/core_storagemanager_spec.lua24
2 files changed, 25 insertions, 0 deletions
diff --git a/plugins/mod_storage_internal.lua b/plugins/mod_storage_internal.lua
index 1f1ad68f..deab7dfd 100644
--- a/plugins/mod_storage_internal.lua
+++ b/plugins/mod_storage_internal.lua
@@ -180,6 +180,7 @@ function archive:find(username, query)
i = i - 1
return list[i]
end
+ query.before, query.after = query.after, query.before;
end
if query.key then
iter = it.filter(function(item)
diff --git a/spec/core_storagemanager_spec.lua b/spec/core_storagemanager_spec.lua
index fc3e0ad4..f1adcd50 100644
--- a/spec/core_storagemanager_spec.lua
+++ b/spec/core_storagemanager_spec.lua
@@ -560,6 +560,30 @@ describe("storagemanager", function ()
end);
+ -- This tests combines the reverse flag with 'before' and 'after' to
+ -- ensure behaviour remains correct
+ it("by id (before and after) in reverse #full_id_range", function ()
+ assert.truthy(archive.caps and archive.caps.full_id_range, "full ID range support")
+ local data, err = archive:find("user", {
+ ["after"] = test_data[1][1];
+ ["before"] = test_data[4][1];
+ reverse = true;
+ });
+ assert.truthy(data, err);
+ local count = 0;
+ for id, item in data do
+ count = count + 1;
+ assert.truthy(id);
+ assert.equal(test_data[4-count][1], id);
+ assert(st.is_stanza(item));
+ assert.equal("test", item.name);
+ assert.equal("urn:example:foo", item.attr.xmlns);
+ assert.equal(2, #item.tags);
+ end
+ assert.equal(2, count);
+ end);
+
+
end);