spec/util_encodings_spec.lua
author Matthew Wild <mwild1@gmail.com>
Wed, 27 Mar 2024 15:35:15 +0000
branch0.12
changeset 13469 54a936345aaa
parent 8376 af7b41a0ec9e
permissions -rw-r--r--
prosodyctl check: Warn about invalid domain names in the config file This ensures that domain names of virtual hosts and components are valid in XMPP, and that they are encoded correctly.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8239
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     1
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     2
local encodings = require "util.encodings";
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     3
local utf8 = assert(encodings.utf8, "no encodings.utf8 module");
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
     4
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     5
describe("util.encodings", function ()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     6
	describe("#encode()", function()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     7
		it("should work", function ()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
     8
			assert.is.equal(encodings.base64.encode(""), "");
8374
09a1ce618ad0 spec/util.encodings: Fix syntax
Kim Alvefur <zash@zash.se>
parents: 8373
diff changeset
     9
			assert.is.equal(encodings.base64.encode('coucou'), "Y291Y291");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    10
			assert.is.equal(encodings.base64.encode("\0\0\0"), "AAAA");
8375
872efae6e222 spec/util.encodings: Test an UTF-8 sequence
Kim Alvefur <zash@zash.se>
parents: 8374
diff changeset
    11
			assert.is.equal(encodings.base64.encode("\255\255\255"), "////");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    12
		end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    13
	end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    14
	describe("#decode()", function()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    15
		it("should work", function ()
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    16
			assert.is.equal(encodings.base64.decode(""), "");
8376
af7b41a0ec9e spec/util.encodings: Test a lonly padding (can appear like this in SASL)
Kim Alvefur <zash@zash.se>
parents: 8375
diff changeset
    17
			assert.is.equal(encodings.base64.decode("="), "");
8374
09a1ce618ad0 spec/util.encodings: Fix syntax
Kim Alvefur <zash@zash.se>
parents: 8373
diff changeset
    18
			assert.is.equal(encodings.base64.decode('Y291Y291'), "coucou");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    19
			assert.is.equal(encodings.base64.decode("AAAA"), "\0\0\0");
8375
872efae6e222 spec/util.encodings: Test an UTF-8 sequence
Kim Alvefur <zash@zash.se>
parents: 8374
diff changeset
    20
			assert.is.equal(encodings.base64.decode("////"), "\255\255\255");
8370
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    21
		end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    22
	end);
60eb22fd21b8 spec/util.encodings: Add some base64 tests (Thanks Link Mavue)
Kim Alvefur <zash@zash.se>
parents: 8239
diff changeset
    23
end);
8239
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    24
describe("util.encodings.utf8", function()
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    25
	describe("#valid()", function()
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    26
		it("should work", function()
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    27
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    28
			for line in io.lines("spec/utf8_sequences.txt") do
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    29
				local data = line:match(":%s*([^#]+)"):gsub("%s+", ""):gsub("..", function (c) return string.char(tonumber(c, 16)); end)
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    30
				local expect = line:match("(%S+):");
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    31
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    32
				assert(expect == "pass" or expect == "fail", "unknown expectation: "..line:match("^[^:]+"));
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    33
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    34
				local valid = utf8.valid(data);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    35
				assert.is.equal(valid, utf8.valid(data.." "));
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    36
				assert.is.equal(valid, expect == "pass", line);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    37
			end
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    38
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    39
		end);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    40
	end);
4878e4159e12 Port tests to the `busted` test runner
Waqas Hussain <waqas20@gmail.com>
parents:
diff changeset
    41
end);