spec/util_rsm_spec.lua
author Matthew Wild <mwild1@gmail.com>
Mon, 20 Feb 2023 18:10:15 +0000
branch0.12
changeset 12898 0598d822614f
parent 11431 83f5499d1f10
permissions -rw-r--r--
mod_websocket: Fire pre-session-close event (fixes #1800) This event was added in a7c183bb4e64 and is required to make mod_smacks know that a session was intentionally closed and shouldn't be hibernated (see fcea4d9e7502). Because this was missing from mod_websocket's session.close(), mod_smacks would always attempt to hibernate websocket sessions even if they closed cleanly. That mod_websocket has its own copy of session.close() is something to fix another day (probably not in the stable branch). So for now this commit makes the minimal change to get things working again. Thanks to Damian and the Jitsi team for reporting.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10764
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     1
local rsm = require "util.rsm";
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     2
local xml = require "util.xml";
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     3
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     4
local function strip(s)
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     5
	return (s:gsub(">%s+<", "><"));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     6
end
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     7
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     8
describe("util.rsm", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
     9
	describe("parse", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    10
		it("works", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    11
			local test = xml.parse(strip([[
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    12
				<set xmlns='http://jabber.org/protocol/rsm'>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    13
					<max>10</max>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    14
				</set>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    15
				]]));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    16
			assert.same({ max = 10 }, rsm.parse(test));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    17
		end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    18
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    19
		it("works", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    20
			local test = xml.parse(strip([[
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    21
				<set xmlns='http://jabber.org/protocol/rsm'>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    22
					<first index='0'>saint@example.org</first>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    23
					<last>peterpan@neverland.lit</last>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    24
					<count>800</count>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    25
				</set>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    26
				]]));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    27
			assert.same({ first = { index = 0, "saint@example.org" }, last = "peterpan@neverland.lit", count = 800 }, rsm.parse(test));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    28
		end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    29
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    30
		it("works", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    31
			local test = xml.parse(strip([[
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    32
				<set xmlns='http://jabber.org/protocol/rsm'>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    33
					<max>10</max>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    34
					<before>peter@pixyland.org</before>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    35
				</set>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    36
				]]));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    37
			assert.same({ max = 10, before = "peter@pixyland.org" }, rsm.parse(test));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    38
		end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    39
11431
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    40
		it("all fields works", function()
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    41
			local test = assert(xml.parse(strip([[
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    42
				<set xmlns='http://jabber.org/protocol/rsm'>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    43
					<after>a</after>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    44
					<before>b</before>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    45
					<count>10</count>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    46
					<first index='1'>f</first>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    47
					<index>5</index>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    48
					<last>z</last>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    49
					<max>100</max>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    50
				</set>
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    51
				]])));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    52
			assert.same({
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    53
				after = "a";
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    54
				before = "b";
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    55
				count = 10;
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    56
				first = {index = 1; "f"};
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    57
				index = 5;
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    58
				last = "z";
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    59
				max = 100;
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    60
			}, rsm.parse(test));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
    61
		end);
10764
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    62
	end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    63
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    64
	describe("generate", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    65
		it("works", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    66
			local test = xml.parse(strip([[
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    67
				<set xmlns='http://jabber.org/protocol/rsm'>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    68
					<max>10</max>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    69
				</set>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    70
				]]));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    71
			local res = rsm.generate({ max = 10 });
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    72
			assert.same(test:get_child_text("max"), res:get_child_text("max"));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    73
		end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    74
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    75
		it("works", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    76
			local test = xml.parse(strip([[
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    77
				<set xmlns='http://jabber.org/protocol/rsm'>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    78
					<first index='0'>saint@example.org</first>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    79
					<last>peterpan@neverland.lit</last>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    80
					<count>800</count>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    81
				</set>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    82
				]]));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    83
			local res = rsm.generate({ first = { index = 0, "saint@example.org" }, last = "peterpan@neverland.lit", count = 800 });
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    84
			assert.same(test:get_child("first").attr.index, res:get_child("first").attr.index);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    85
			assert.same(test:get_child_text("first"), res:get_child_text("first"));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    86
			assert.same(test:get_child_text("last"), res:get_child_text("last"));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    87
			assert.same(test:get_child_text("count"), res:get_child_text("count"));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    88
		end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    89
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    90
		it("works", function ()
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    91
			local test = xml.parse(strip([[
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    92
			<set xmlns='http://jabber.org/protocol/rsm'>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    93
				<max>10</max>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    94
				<before>peter@pixyland.org</before>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    95
			</set>
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    96
			]]));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    97
			local res = rsm.generate({ max = 10, before = "peter@pixyland.org" });
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    98
			assert.same(test:get_child_text("max"), res:get_child_text("max"));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
    99
			assert.same(test:get_child_text("before"), res:get_child_text("before"));
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   100
		end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   101
10766
4fc224c97986 util.rsm: Test that Lua 5.3 floats are not encoded with decimal point
Kim Alvefur <zash@zash.se>
parents: 10764
diff changeset
   102
		it("handles floats", function ()
4fc224c97986 util.rsm: Test that Lua 5.3 floats are not encoded with decimal point
Kim Alvefur <zash@zash.se>
parents: 10764
diff changeset
   103
			local r1 = rsm.generate({ max = 10.0, count = 100.0, first = { index = 1.0, "foo" } });
4fc224c97986 util.rsm: Test that Lua 5.3 floats are not encoded with decimal point
Kim Alvefur <zash@zash.se>
parents: 10764
diff changeset
   104
			assert.equal("10", r1:get_child_text("max"));
4fc224c97986 util.rsm: Test that Lua 5.3 floats are not encoded with decimal point
Kim Alvefur <zash@zash.se>
parents: 10764
diff changeset
   105
			assert.equal("100", r1:get_child_text("count"));
4fc224c97986 util.rsm: Test that Lua 5.3 floats are not encoded with decimal point
Kim Alvefur <zash@zash.se>
parents: 10764
diff changeset
   106
			assert.equal("1", r1:get_child("first").attr.index);
4fc224c97986 util.rsm: Test that Lua 5.3 floats are not encoded with decimal point
Kim Alvefur <zash@zash.se>
parents: 10764
diff changeset
   107
		end);
4fc224c97986 util.rsm: Test that Lua 5.3 floats are not encoded with decimal point
Kim Alvefur <zash@zash.se>
parents: 10764
diff changeset
   108
11431
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   109
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   110
		it("all fields works", function ()
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   111
			local res = rsm.generate({
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   112
					after = "a";
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   113
					before = "b";
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   114
					count = 10;
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   115
					first = {index = 1; "f"};
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   116
					index = 5;
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   117
					last = "z";
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   118
					max = 100;
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   119
				});
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   120
			assert.equal("a", res:get_child_text("after"));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   121
			assert.equal("b", res:get_child_text("before"));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   122
			assert.equal("10", res:get_child_text("count"));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   123
			assert.equal("f", res:get_child_text("first"));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   124
			assert.equal("1", res:get_child("first").attr.index);
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   125
			assert.equal("5", res:get_child_text("index"));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   126
			assert.equal("z", res:get_child_text("last"));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   127
			assert.equal("100", res:get_child_text("max"));
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   128
		end);
10764
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   129
	end);
11431
83f5499d1f10 util.rsm: Increase test coverage
Kim Alvefur <zash@zash.se>
parents: 10766
diff changeset
   130
10764
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   131
end);
c9d1d9c80e1e util.rsm: Add tests
Kim Alvefur <zash@zash.se>
parents:
diff changeset
   132