util.jid+tests: Add simple helpers... node(), host() and resource() for extracting...
authorMatthew Wild <mwild1@gmail.com>
Thu, 17 Mar 2016 23:15:08 +0000 (23:15 +0000)
committerMatthew Wild <mwild1@gmail.com>
Thu, 17 Mar 2016 23:15:08 +0000 (23:15 +0000)
tests/test_util_jid.lua
util/jid.lua

index 02a90c3ba983d612fe1d55a90774af1f4904876f..c697e63f5c33c85f66374092f52ad8a78a555fbe 100644 (file)
@@ -71,3 +71,73 @@ function compare(compare)
        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
+
index 76155ac70f81d7118693ab6f8bfe8d7116196b20..60bb0829557090e24f4f9b1c6dddf639d25c326e 100644 (file)
@@ -93,6 +93,18 @@ local function compare(jid, acl)
        return false
 end
 
+local function node(jid)
+       return (select(1, split(jid)));
+end
+
+local function host(jid)
+       return (select(2, split(jid)));
+end
+
+local function resource(jid)
+       return (select(3, split(jid)));
+end
+
 local function escape(s) return s and (s:gsub(".", escapes)); end
 local function unescape(s) return s and (s:gsub("\\%x%x", unescapes)); end
 
@@ -103,6 +115,9 @@ return {
        join = join;
        prep = prep;
        compare = compare;
+       node = node;
+       host = host;
+       resource = resource;
        escape = escape;
        unescape = unescape;
 };