git » sdk » main » tree

[main] / test / TestJID.hx

package test;

import utest.Assert;
import borogove.JID;

class TestJID extends utest.Test {
	public function testParse() {
		var jid = JID.parse("user@example.com");
		Assert.equals("user", jid.node);
		Assert.equals("example.com", jid.domain);
		Assert.isNull(jid.resource);

		jid = JID.parse("user@example.com/mobile");
		Assert.equals("user", jid.node);
		Assert.equals("example.com", jid.domain);
		Assert.equals("mobile", jid.resource);

		jid = JID.parse("example.com");
		Assert.isNull(jid.node);
		Assert.equals("example.com", jid.domain);
		Assert.isNull(jid.resource);

		jid = JID.parse("example.com/resource");
		Assert.isNull(jid.node);
		Assert.equals("example.com", jid.domain);
		Assert.equals("resource", jid.resource);
	}

	public function testEscape() {
		// Test that escaping works in constructor
		var jid = new JID("node with space", "example.com");
		Assert.equals("node\\20with\\20space", jid.node);
		Assert.equals("node\\20with\\20space@example.com", jid.asString());

		jid = new JID("d'artagnan", "example.com");
		Assert.equals("d\\27artagnan", jid.node);

		jid = new JID("alice@wonderland", "example.com");
		Assert.equals("alice\\40wonderland", jid.node);

		// Test parsing escaped JIDs
		jid = JID.parse("node\\20with\\20space@example.com");
		Assert.equals("node\\20with\\20space", jid.node);
	}

	public function testUtilityMethods() {
		var jid = new JID("user", "example.com", "resource", true);
		Assert.isFalse(jid.isBare());
		Assert.isFalse(jid.isDomain());
		Assert.isTrue(jid.isValid());

		var bare = jid.asBare();
		Assert.isTrue(bare.isBare());
		Assert.equals("user@example.com", bare.asString());

		var withNewResource = bare.withResource("new");
		Assert.equals("new", withNewResource.resource);
		Assert.equals("user@example.com/new", withNewResource.asString());

		var domainOnly = new JID(null, "example.com");
		Assert.isTrue(domainOnly.isDomain());
		Assert.isTrue(domainOnly.isBare());
		Assert.equals("example.com", domainOnly.asString());

		var invalid = new JID(null, "localhost");
		Assert.isFalse(invalid.isValid());
	}

	public function testEquals() {
		var jid1 = new JID("user", "example.com", "res", true);
		var jid2 = new JID("user", "example.com", "res", true);
		var jid3 = new JID("user", "example.com", "other", true);

		Assert.isTrue(jid1.equals(jid2));
		Assert.isFalse(jid1.equals(jid3));
	}
}