util.jid: compare() added, with some tests.
authorKim Alvefur <zash@zash.se>
Thu, 15 Jul 2010 22:36:02 +0000 (00:36 +0200)
committerKim Alvefur <zash@zash.se>
Thu, 15 Jul 2010 22:36:02 +0000 (00:36 +0200)
tests/test_util_jid.lua
util/jid.lua

index 5cc1390b6c96508c69cfea2f980a5862be853ea6..e91585bd05b96ffa68ee9c728d838dcedbb7171d 100644 (file)
@@ -54,3 +54,14 @@ function bare(bare)
        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
index ba9730fa3c57d3a85eb3aa8b22d19199ea256d4f..9128ce4e0a73c8f219331da5114d34539b12f5fd 100644 (file)
@@ -78,4 +78,17 @@ function join(node, host, resource)
        return nil; -- Invalid JID
 end
 
+function compare(jid, acl)
+       -- compare jid to single acl rule
+       -- TODO compare to table of rules?
+       local jid_node, jid_host, jid_resource = _split(jid);
+       local acl_node, acl_host, acl_resource = _split(acl);
+       if ((acl_node ~= nil and acl_node == jid_node) or acl_node == nil) and
+               ((acl_host ~= nil and acl_host == jid_host) or acl_host == nil) and
+               ((acl_resource ~= nil and acl_resource == jid_resource) or acl_resource == nil) then
+               return true
+       end
+       return false
+end
+
 return _M;