File

spec/util_encodings_spec.lua @ 11540:1937b3c3efb5 0.11

mod_c2s, mod_s2s, mod_component, mod_bosh, mod_websockets: Set default stanza size limits c2s/bosh/ws streams will default to 256KB, s2s and components to 512KB. These values are aligned with ejabberd's default settings, which should reduce issues related to inconsistent size limits between servers on the XMPP network. The previous default (10MB) is excessive for any production server, and allows significant memory usage by even unauthenticated sessions.
author Matthew Wild <mwild1@gmail.com>
date Fri, 07 May 2021 17:03:49 +0100
parent 8373:af7b41a0ec9e
line wrap: on
line source


local encodings = require "util.encodings";
local utf8 = assert(encodings.utf8, "no encodings.utf8 module");

describe("util.encodings", function ()
	describe("#encode()", function()
		it("should work", function ()
			assert.is.equal(encodings.base64.encode(""), "");
			assert.is.equal(encodings.base64.encode('coucou'), "Y291Y291");
			assert.is.equal(encodings.base64.encode("\0\0\0"), "AAAA");
			assert.is.equal(encodings.base64.encode("\255\255\255"), "////");
		end);
	end);
	describe("#decode()", function()
		it("should work", function ()
			assert.is.equal(encodings.base64.decode(""), "");
			assert.is.equal(encodings.base64.decode("="), "");
			assert.is.equal(encodings.base64.decode('Y291Y291'), "coucou");
			assert.is.equal(encodings.base64.decode("AAAA"), "\0\0\0");
			assert.is.equal(encodings.base64.decode("////"), "\255\255\255");
		end);
	end);
end);
describe("util.encodings.utf8", function()
	describe("#valid()", function()
		it("should work", function()

			for line in io.lines("spec/utf8_sequences.txt") do
				local data = line:match(":%s*([^#]+)"):gsub("%s+", ""):gsub("..", function (c) return string.char(tonumber(c, 16)); end)
				local expect = line:match("(%S+):");

				assert(expect == "pass" or expect == "fail", "unknown expectation: "..line:match("^[^:]+"));

				local valid = utf8.valid(data);
				assert.is.equal(valid, utf8.valid(data.." "));
				assert.is.equal(valid, expect == "pass", line);
			end

		end);
	end);
end);