IMPORTANT: due to a drive failure, as of 13-Mar-2021, the Mercurial repository had to be re-mirrored, which changed every commit SHA. The old SHAs and trees are backed up in the vault branches. Please migrate to the new branches as soon as you can.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
prosody/tests/test_util_jid.lua

143 lines
5.4 KiB

-- 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