/** Tests copying a JID without a local part or resource. */ void test_from_jid4(void **state) { struct jid *a = jid_new_from_str("domain"); struct jid *b = jid_new_from_jid(a); assert_true(jid_local(b) == jid_local(a)); assert_string_equal(jid_domain(b), jid_domain(a)); assert_true(jid_resource(b) == jid_resource(a)); jid_del(a); jid_del(b); }
/** Tests a normal JID without a local part or resource. */ void test_from_str3(void **state) { struct jid* jid = jid_new_from_str("domain"); assert_true(jid_local(jid) == NULL); assert_string_equal(jid_domain(jid), "domain"); assert_true(jid_resource(jid) == NULL); jid_del(jid); }
/** Tests a normal full JID. */ void test_from_str1(void **state) { struct jid* jid = jid_new_from_str("local@domain/resource"); assert_string_equal(jid_local(jid), "local"); assert_string_equal(jid_domain(jid), "domain"); assert_string_equal(jid_resource(jid), "resource"); jid_del(jid); }
/** Tests getting/setting domainpart. */ void test_get_set_domain(void **state) { struct jid* jid = jid_new(); jid_set_domain(jid, "domain"); assert_true(jid_local(jid) == NULL); assert_string_equal(jid_domain(jid), "domain"); assert_true(jid_resource(jid) == NULL); jid_del(jid); }
/** Tests clearing localpart. */ void test_clear_local(void **state) { struct jid *jid = jid_new(); jid_set_local(jid, "local"); jid_set_local(jid, NULL); assert_true(jid_local(jid) == NULL); assert_true(jid_domain(jid) == NULL); assert_true(jid_resource(jid) == NULL); jid_del(jid); }
/** Tests converting a full JID to a bare JID. */ void test_from_jid_bare1(void **state) { struct jid *a = jid_new_from_str("local@domain/resource"); struct jid *b = jid_new_from_jid_bare(a); assert_string_equal(jid_local(b), jid_local(a)); assert_string_equal(jid_domain(b), jid_domain(a)); assert_true(jid_resource(b) == NULL); jid_del(a); jid_del(b); }
static void cmd_join_room(struct xmpp *xmpp, struct contact *u, char *s) { char *p, *part, *res; char to[JID_BUF]; int npart, nres; p = strchr(s + 3, ' '); if (p) *p = 0; part = jid_partial(s + 3, &npart); res = jid_resource(s + 3, &nres); if (!(part && res)) return; u = add_contact(npart, part); u->type = "groupchat"; snprintf(to, sizeof(to), "%.*s/%.*s", npart, part, nres, res); join_room(xmpp, to); }
static int msg_hook(int x, struct xmpp *xmpp) { char *s, *from, *part, *n, *type; int npart, len; struct contact *u; s = xml_node_find_text(x, "body", &xmpp->xml.mem); from = xml_node_find_attr(x, "from", &xmpp->xml.mem); part = from ? jid_partial(from, &npart) : 0; if (!part || !s) return 0; u = add_contact(npart, part); type = xml_node_find_attr(x, "type", &xmpp->xml.mem); if (type && !strcmp(type, "groupchat")) { u->type = "groupchat"; n = jid_resource(from, &len); } else n = jid_name(from, &len); print_msg(npart, from, "<%.*s> %s\n", len, n, s); notify(u->type, npart, from, len, n, s); return 0; }