aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_util_jid.lua
blob: 0ac5827e14cee5328d8b768b83f1073ac47b0b75 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
-- 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