File

tests/test_util_jid.lua @ 8706:e2919978673e

net.http: Fix parameter order to http request callbacks Commit e3b9dc9dd940 changed the parameter order in 2013, but did not update the names of the parameters in the callback function. Due to this inconsistency, 12df41a5a4b1 accidentally reversed the order when fixing the variable names without fixing where they are used. Additionally the documentation was incorrect (since 2013), and this has also now been fixed.
author Matthew Wild <mwild1@gmail.com>
date Wed, 04 Apr 2018 18:27:44 +0100
parent 7473:a558fef9d018
line wrap: on
line source

-- Prosody IM
-- Copyright (C) 2008-2010 Matthew Wild
-- Copyright (C) 2008-2010 Waqas Hussain
--
-- This project is MIT/X11 licensed. Please see the
-- COPYING file in the source package for more information.
--

function join(join)
	assert_equal(join("a", "b", "c"), "a@b/c", "builds full JID");
	assert_equal(join("a", "b", nil), "a@b", "builds bare JID");
	assert_equal(join(nil, "b", "c"), "b/c", "builds full host JID");
	assert_equal(join(nil, "b", nil), "b", "builds bare host JID");
	assert_equal(join(nil, nil, nil), nil, "invalid JID is nil");
	assert_equal(join("a", nil, nil), nil, "invalid JID is nil");
	assert_equal(join(nil, nil, "c"), nil, "invalid JID is nil");
	assert_equal(join("a", nil, "c"), nil, "invalid JID is nil");
end


function split(split)
	local function test(input_jid, expected_node, expected_server, expected_resource)
		local rnode, rserver, rresource = split(input_jid);
		assert_equal(expected_node, rnode, "split("..tostring(input_jid)..") failed");
		assert_equal(expected_server, rserver, "split("..tostring(input_jid)..") failed");
		assert_equal(expected_resource, rresource, "split("..tostring(input_jid)..") failed");
	end

	-- Valid JIDs
	test("node@server", 		"node", "server", nil		);
	test("node@server/resource", 	"node", "server", "resource"        );
	test("server", 			nil, 	"server", nil               );
	test("server/resource", 	nil, 	"server", "resource"        );
	test("server/resource@foo", 	nil, 	"server", "resource@foo"    );
	test("server/resource@foo/bar",	nil, 	"server", "resource@foo/bar");

	-- Always invalid JIDs
	test(nil,                nil, nil, nil);
	test("node@/server",     nil, nil, nil);
	test("@server",          nil, nil, nil);
	test("@server/resource", nil, nil, nil);
	test("@/resource", nil, nil, nil);
end

function bare(bare)
	assert_equal(bare("user@host"), "user@host", "bare JID remains bare");
	assert_equal(bare("host"), "host", "Host JID remains host");
	assert_equal(bare("host/resource"), "host", "Host JID with resource becomes host");
	assert_equal(bare("user@host/resource"), "user@host", "user@host JID with resource becomes user@host");
	assert_equal(bare("user@/resource"), nil, "invalid JID is nil");
	assert_equal(bare("@/resource"), nil, "invalid JID is nil");
	assert_equal(bare("@/"), nil, "invalid JID is nil");
	assert_equal(bare("/"), nil, "invalid JID is nil");
	assert_equal(bare(""), nil, "invalid JID is nil");
	assert_equal(bare("@"), nil, "invalid JID is nil");
	assert_equal(bare("user@"), nil, "invalid JID is nil");
	assert_equal(bare("user@@"), nil, "invalid JID is nil");
	assert_equal(bare("user@@host"), nil, "invalid JID is nil");
	assert_equal(bare("user@@host/resource"), nil, "invalid JID is nil");
	assert_equal(bare("user@host/"), nil, "invalid JID is nil");
end

function compare(compare)
	assert_equal(compare("host", "host"), true, "host should match");
	assert_equal(compare("host", "other-host"), false, "host should not match");
	assert_equal(compare("other-user@host/resource", "host"), true, "host should match");
	assert_equal(compare("other-user@host", "user@host"), false, "user should not match");
	assert_equal(compare("user@host", "host"), true, "host should match");
	assert_equal(compare("user@host/resource", "host"), true, "host should match");
	assert_equal(compare("user@host/resource", "user@host"), true, "user and host should match");
	assert_equal(compare("user@other-host", "host"), false, "host should not match");
	assert_equal(compare("user@other-host", "user@host"), false, "host should not match");
end

function node(node)
	local function test(jid, expected_node)
		assert_equal(node(jid), expected_node, "Unexpected node for "..tostring(jid));
	end

	test("example.com", nil);
	test("foo.example.com", nil);
	test("foo.example.com/resource", nil);
	test("foo.example.com/some resource", nil);
	test("foo.example.com/some@resource", nil);

	test("foo@foo.example.com/some@resource", "foo");
	test("foo@example/some@resource", "foo");

	test("foo@example/@resource", "foo");
	test("foo@example@resource", nil);
	test("foo@example", "foo");
	test("foo", nil);

	test(nil, nil);
end

function host(host)
	local function test(jid, expected_host)
		assert_equal(host(jid), expected_host, "Unexpected host for "..tostring(jid));
	end

	test("example.com", "example.com");
	test("foo.example.com", "foo.example.com");
	test("foo.example.com/resource", "foo.example.com");
	test("foo.example.com/some resource", "foo.example.com");
	test("foo.example.com/some@resource", "foo.example.com");

	test("foo@foo.example.com/some@resource", "foo.example.com");
	test("foo@example/some@resource", "example");

	test("foo@example/@resource", "example");
	test("foo@example@resource", nil);
	test("foo@example", "example");
	test("foo", "foo");

	test(nil, nil);
end

function resource(resource)
	local function test(jid, expected_resource)
		assert_equal(resource(jid), expected_resource, "Unexpected resource for "..tostring(jid));
	end

	test("example.com", nil);
	test("foo.example.com", nil);
	test("foo.example.com/resource", "resource");
	test("foo.example.com/some resource", "some resource");
	test("foo.example.com/some@resource", "some@resource");

	test("foo@foo.example.com/some@resource", "some@resource");
	test("foo@example/some@resource", "some@resource");

	test("foo@example/@resource", "@resource");
	test("foo@example@resource", nil);
	test("foo@example", nil);
	test("foo", nil);
	test("/foo", nil);
	test("@x/foo", nil);
	test("@/foo", nil);

	test(nil, nil);
end