/pidgin/main: 599b01f2f5a7: This should do it for the jabber tests

Gary Kramlich grim at reaperworld.com
Wed Mar 30 19:25:27 EDT 2016


Changeset: 599b01f2f5a752a384d41eeb71da62fba52a30c5
Author:	 Gary Kramlich <grim at reaperworld.com>
Date:	 2016-03-13 17:08 -0500
Branch:	 default
URL: https://hg.pidgin.im/pidgin/main/rev/599b01f2f5a7

Description:

This should do it for the jabber tests

diffstat:

 .hgignore                                                 |    1 +
 configure.ac                                              |    1 +
 libpurple/protocols/jabber/Makefile.am                    |    2 +
 libpurple/protocols/jabber/tests/.hgignore                |   10 +
 libpurple/protocols/jabber/tests/Makefile.am              |   37 +
 libpurple/protocols/jabber/tests/test_jabber_caps.c       |   79 +-
 libpurple/protocols/jabber/tests/test_jabber_digest_md5.c |   75 +-
 libpurple/protocols/jabber/tests/test_jabber_jutil.c      |  374 ++++++++-----
 libpurple/protocols/jabber/tests/test_jabber_scram.c      |    0 
 9 files changed, 352 insertions(+), 227 deletions(-)

diffs (truncated from 722 to 300 lines):

diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -150,6 +150,7 @@ stamp-h1
 test-driver
 win32-install-dir(\.release)?
 
+subinclude:libpurple/protocols/jabber/tests/.hgignore
 subinclude:libpurple/protocols/oscar/tests/.hgignore
 subinclude:libpurple/protocols/yahoo/tests/.hgignore
 subinclude:libpurple/tests/.hgignore
diff --git a/configure.ac b/configure.ac
--- a/configure.ac
+++ b/configure.ac
@@ -2255,6 +2255,7 @@ AC_CONFIG_FILES([Makefile
 		   libpurple/protocols/gg/Makefile
 		   libpurple/protocols/irc/Makefile
 		   libpurple/protocols/jabber/Makefile
+		   libpurple/protocols/jabber/tests/Makefile
 		   libpurple/protocols/msn/Makefile
 		   libpurple/protocols/mxit/Makefile
 		   libpurple/protocols/novell/Makefile
diff --git a/libpurple/protocols/jabber/Makefile.am b/libpurple/protocols/jabber/Makefile.am
--- a/libpurple/protocols/jabber/Makefile.am
+++ b/libpurple/protocols/jabber/Makefile.am
@@ -137,3 +137,5 @@ AM_CPPFLAGS = \
 	$(LIBXML_CFLAGS) \
 	$(FARSTREAM_CFLAGS) \
 	$(GSTREAMER_CFLAGS)
+
+SUBDIRS = tests
diff --git a/libpurple/protocols/jabber/tests/.hgignore b/libpurple/protocols/jabber/tests/.hgignore
new file mode 100644
--- /dev/null
+++ b/libpurple/protocols/jabber/tests/.hgignore
@@ -0,0 +1,10 @@
+syntax: regexp
+^test_jabber_caps$
+^test_jabber_digest_md5$
+^test_jabber_jutil$
+^test_jabber_scram$
+
+syntax: glob
+*.log
+*.trs
+
diff --git a/libpurple/protocols/jabber/tests/Makefile.am b/libpurple/protocols/jabber/tests/Makefile.am
new file mode 100644
--- /dev/null
+++ b/libpurple/protocols/jabber/tests/Makefile.am
@@ -0,0 +1,37 @@
+include $(top_srcdir)/glib-tap.mk
+
+COMMON_LIBS=\
+	$(top_builddir)/libpurple/libpurple.la \
+	$(top_builddir)/libpurple/protocols/jabber/libjabber.la \
+	$(GLIB_LIBS) \
+	$(GPLUGIN_LIBS) \
+	$(LIBXML_LIBS)
+
+test_programs=\
+	test_jabber_caps \
+	test_jabber_digest_md5 \
+	test_jabber_jutil
+	test_jabber_scram
+
+test_jabber_caps_SOURCES=test_jabber_caps.c
+test_jabber_caps_LDADD=$(COMMON_LIBS)
+
+test_jabber_digest_md5_SOURCES=test_jabber_digest_md5.c
+test_jabber_digest_md5_LDADD=$(COMMON_LIBS)
+
+test_jabber_jutil_SOURCES=test_jabber_jutil.c
+test_jabber_jutil_LDADD=$(COMMON_LIBS)
+
+test_jabber_scram_SOURCES=test_jabber_scram.c
+test_jabber_scram_LDADD=$(COMMON_LIBS)
+
+AM_CPPFLAGS = \
+	-I$(top_srcdir)/libpurple \
+	-I$(top_builddir)/libpurple \
+	$(DEBUG_CFLAGS) \
+	$(GLIB_CFLAGS) \
+	$(GPLUGIN_CFLAGS) \
+	$(PLUGIN_CFLAGS) \
+	$(DBUS_CFLAGS) \
+	$(LIBXML_CFLAGS) \
+	$(NSS_CFLAGS)
diff --git a/libpurple/tests/test_jabber_caps.c b/libpurple/protocols/jabber/tests/test_jabber_caps.c
rename from libpurple/tests/test_jabber_caps.c
rename to libpurple/protocols/jabber/tests/test_jabber_caps.c
--- a/libpurple/tests/test_jabber_caps.c
+++ b/libpurple/protocols/jabber/tests/test_jabber_caps.c
@@ -1,64 +1,59 @@
-#include <string.h>
+#include <glib.h>
 
-#include "tests.h"
-#include "../xmlnode.h"
-#include "../protocols/jabber/caps.h"
-#include "../ciphers/md5hash.h"
-#include "../ciphers/sha1hash.h"
+#include "xmlnode.h"
+#include "ciphers/sha1hash.h"
+#include "protocols/jabber/caps.h"
 
-START_TEST(test_parse_invalid)
-{
+static void
+test_jabber_caps_parse_invalid_nodes(void) {
 	PurpleXmlNode *query;
 
-	fail_unless(NULL == jabber_caps_parse_client_info(NULL));
+	g_assert_null(jabber_caps_parse_client_info(NULL));
 
 	/* Something other than a disco#info query */
 	query = purple_xmlnode_new("foo");
-	fail_unless(NULL == jabber_caps_parse_client_info(query));
+	g_assert_null(jabber_caps_parse_client_info(query));
 	purple_xmlnode_free(query);
 
 	query = purple_xmlnode_new("query");
-	fail_unless(NULL == jabber_caps_parse_client_info(query));
+	g_assert_null(jabber_caps_parse_client_info(query));
+
 	purple_xmlnode_set_namespace(query, "jabber:iq:last");
-	fail_unless(NULL == jabber_caps_parse_client_info(query));
+	g_assert_null(jabber_caps_parse_client_info(query));
 	purple_xmlnode_free(query);
 }
-END_TEST
 
-#define assert_caps_calculate_match(hash_func, hash, str) { \
-	PurpleXmlNode *query = purple_xmlnode_from_str((str), -1); \
-	PurpleHash *hasher = NULL; \
-	JabberCapsClientInfo *info = jabber_caps_parse_client_info(query); \
-	gchar *got_hash; \
-	if (g_str_equal(hash_func, "sha-1")) { \
-		hasher = purple_sha1_hash_new(); \
-	} else if (g_str_equal(hash_func, "md5")) { \
-		hasher = purple_md5_hash_new(); \
-	} \
-	got_hash = jabber_caps_calculate_hash(info, hasher); \
-	g_object_unref(hasher); \
-	assert_string_equal_free((hash), got_hash); \
+static void
+_test_jabber_caps_match(PurpleHash *hash, const gchar *in, const gchar *expected) {
+	PurpleXmlNode *query = purple_xmlnode_from_str(in, -1);
+	JabberCapsClientInfo *info = jabber_caps_parse_client_info(query);
+	gchar *got = NULL;
+
+	got = jabber_caps_calculate_hash(info, hash);
+	g_object_unref(G_OBJECT(hash));
+
+	g_assert_cmpstr(expected, ==, got);
+	g_free(got);
 }
 
-START_TEST(test_calculate_caps)
-{
-	assert_caps_calculate_match("sha-1", "GNjxthSckUNvAIoCCJFttjl6VL8=",
-	"<query xmlns='http://jabber.org/protocol/disco#info' node='http://tkabber.jabber.ru/#GNjxthSckUNvAIoCCJFttjl6VL8='><identity category='client' type='pc' name='Tkabber'/><x xmlns='jabber:x:data' type='result'><field var='FORM_TYPE' type='hidden'><value>urn:xmpp:dataforms:softwareinfo</value></field><field var='software'><value>Tkabber</value></field><field var='software_version'><value> ( 8.5.5 )</value></field><field var='os'><value>ATmega640-16AU</value></field><field var='os_version'><value/></field></x><feature var='games:board'/><feature var='google:mail:notify'/><feature var='http://jabber.org/protocol/activity'/><feature var='http://jabber.org/protocol/bytestreams'/><feature var='http://jabber.org/protocol/chatstates'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='http://jabber.org/protocol/feature-neg'/><feature var='http://jabber.org/protocol/geoloc'/><feature var='http://jabber.org/protocol/ibb'/><feature var='http://jabber.org/protocol/iqibb'/><feature var='http://jabber.org/protocol/mood'/><feature var='http://jabber.org/protocol/muc'/><feature var='http://jabber.org/protocol/mute#ancestor'/><feature var='http://jabber.org/protocol/mute#editor'/><feature var='http://jabber.org/protocol/rosterx'/><feature var='http://jabber.org/protocol/si'/><feature var='http://jabber.org/protocol/si/profile/file-transfer'/><feature var='http://jabber.org/protocol/tune'/><feature var='jabber:iq:avatar'/><feature var='jabber:iq:browse'/><feature var='jabber:iq:dtcp'/><feature var='jabber:iq:filexfer'/><feature var='jabber:iq:ibb'/><feature var='jabber:iq:inband'/><feature var='jabber:iq:jidlink'/><feature var='jabber:iq:last'/><feature var='jabber:iq:oob'/><feature var='jabber:iq:privacy'/><feature var='jabber:iq:time'/><feature var='jabber:iq:version'/><feature var='jabber:x:data'/><feature var='jabber:x:event'/><feature var='jabber:x:oob'/><feature var='urn:xmpp:ping'/><feature var='urn:xmpp:receipts'/><feature var='urn:xmpp:time'/></query>");
+static void
+test_jabber_caps_calculate_from_xmlnode(void) {
+	_test_jabber_caps_match(
+		purple_sha1_hash_new(),
+		"<query xmlns='http://jabber.org/protocol/disco#info' node='http://tkabber.jabber.ru/#GNjxthSckUNvAIoCCJFttjl6VL8='><identity category='client' type='pc' name='Tkabber'/><x xmlns='jabber:x:data' type='result'><field var='FORM_TYPE' type='hidden'><value>urn:xmpp:dataforms:softwareinfo</value></field><field var='software'><value>Tkabber</value></field><field var='software_version'><value> ( 8.5.5 )</value></field><field var='os'><value>ATmega640-16AU</value></field><field var='os_version'><value/></field></x><feature var='games:board'/><feature var='google:mail:notify'/><feature var='http://jabber.org/protocol/activity'/><feature var='http://jabber.org/protocol/bytestreams'/><feature var='http://jabber.org/protocol/chatstates'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/commands'/><feature var='http://jabber.org/protocol/disco#info'/><feature var='http://jabber.org/protocol/disco#items'/><feature var='http://jabber.org/protocol/feature-neg'/><feature var='http://jabber.org/protocol/geoloc'/><feature var='http://jabber.org/protocol/ibb'/><feature var='http://jabber.org/protocol/iqibb'/><feature var='http://jabber.org/protocol/mood'/><feature var='http://jabber.org/protocol/muc'/><feature var='http://jabber.org/protocol/mute#ancestor'/><feature var='http://jabber.org/protocol/mute#editor'/><feature var='http://jabber.org/protocol/rosterx'/><feature var='http://jabber.org/protocol/si'/><feature var='http://jabber.org/protocol/si/profile/file-transfer'/><feature var='http://jabber.org/protocol/tune'/><feature var='jabber:iq:avatar'/><feature var='jabber:iq:browse'/><feature var='jabber:iq:dtcp'/><feature var='jabber:iq:filexfer'/><feature var='jabber:iq:ibb'/><feature var='jabber:iq:inband'/><feature var='jabber:iq:jidlink'/><feature var='jabber:iq:last'/><feature var='jabber:iq:oob'/><feature var='jabber:iq:privacy'/><feature var='jabber:iq:time'/><feature var='jabber:iq:version'/><feature var='jabber:x:data'/><feature var='jabber:x:event'/><feature var='jabber:x:oob'/><feature var='urn:xmpp:ping'/><feature var='urn:xmpp:receipts'/><feature var='urn:xmpp:time'/></query>",
+		"GNjxthSckUNvAIoCCJFttjl6VL8="
+	);
 }
-END_TEST
 
-Suite *
-jabber_caps_suite(void)
-{
-	Suite *s = suite_create("Jabber Caps Functions");
+gint
+main(gint argc, gchar **argv) {
+	g_test_init(&argc, &argv, NULL);
 
-	TCase *tc = tcase_create("Parsing invalid ndoes");
-	tcase_add_test(tc, test_parse_invalid);
-	suite_add_tcase(s, tc);
+	g_test_add_func("/jabber/caps/parse invalid nodes",
+	                test_jabber_caps_parse_invalid_nodes);
 
-	tc = tcase_create("Calculating from XMLnode");
-	tcase_add_test(tc, test_calculate_caps);
-	suite_add_tcase(s, tc);
+	g_test_add_func("/jabber/caps/calulate from xmlnode",
+	                test_jabber_caps_calculate_from_xmlnode);
 
-	return s;
+	return g_test_run();
 }
diff --git a/libpurple/tests/test_jabber_digest_md5.c b/libpurple/protocols/jabber/tests/test_jabber_digest_md5.c
rename from libpurple/tests/test_jabber_digest_md5.c
rename to libpurple/protocols/jabber/tests/test_jabber_digest_md5.c
--- a/libpurple/tests/test_jabber_digest_md5.c
+++ b/libpurple/protocols/jabber/tests/test_jabber_digest_md5.c
@@ -1,59 +1,50 @@
-#include <string.h>
+#include <glib.h>
 
-#include "tests.h"
-#include "../util.h"
-#include "../protocols/jabber/auth_digest_md5.h"
-#include "../protocols/jabber/jutil.h"
+#include "util.h"
+#include "protocols/jabber/auth_digest_md5.h"
+#include "protocols/jabber/jutil.h"
 
-START_TEST(test_parsing)
-{
+static void
+test_jabber_digest_md5_parsing(void) {
 	GHashTable *table;
+	const gchar *value = NULL;
+
+	#define check_value(name, expected) G_STMT_START {\
+		value = g_hash_table_lookup(table, (name)); \
+		g_assert_nonnull(value); \
+		g_assert_cmpstr((expected), ==, value); \
+	} G_STMT_END
 
 	table = jabber_auth_digest_md5_parse("r=\"realm\",token=   \"   asdf\"");
-	fail_if(g_hash_table_lookup(table, "r") == NULL);
-	assert_string_equal("realm", g_hash_table_lookup(table, "r"));
-	fail_if(g_hash_table_lookup(table, "token") == NULL);
-	assert_string_equal("asdf", g_hash_table_lookup(table, "token"));
+	check_value("r", "realm");
+	check_value("token", "asdf");
 	g_hash_table_destroy(table);
 
 	table = jabber_auth_digest_md5_parse("r=\"a\", token=   \"   asdf\"");
-	fail_if(g_hash_table_lookup(table, "r") == NULL);
-	assert_string_equal("a", g_hash_table_lookup(table, "r"));
-	fail_if(g_hash_table_lookup(table, "token") == NULL);
-	assert_string_equal("asdf", g_hash_table_lookup(table, "token"));
+	check_value("r", "a");
+	check_value("token", "asdf");
 	g_hash_table_destroy(table);
 
 	table = jabber_auth_digest_md5_parse("r=\"\", token=   \"   asdf\"");
-	fail_if(g_hash_table_lookup(table, "r") == NULL);
-	assert_string_equal("", g_hash_table_lookup(table, "r"));
-	fail_if(g_hash_table_lookup(table, "token") == NULL);
-	assert_string_equal("asdf", g_hash_table_lookup(table, "token"));
+	check_value("r", "");
+	check_value("token", "asdf");
 	g_hash_table_destroy(table);
 
 	table = jabber_auth_digest_md5_parse("realm=\"somerealm\",nonce=\"OA6MG9tEQGm2hh\",qop=\"auth\",charset=utf-8,algorithm=md5-sess");
-	fail_if(g_hash_table_lookup(table, "realm") == NULL);
-	assert_string_equal("somerealm", g_hash_table_lookup(table, "realm"));
-	fail_if(g_hash_table_lookup(table, "nonce") == NULL);
-	assert_string_equal("OA6MG9tEQGm2hh", g_hash_table_lookup(table, "nonce"));
-	fail_if(g_hash_table_lookup(table, "qop") == NULL);
-	assert_string_equal("auth", g_hash_table_lookup(table, "qop"));
-	fail_if(g_hash_table_lookup(table, "charset") == NULL);
-	assert_string_equal("utf-8", g_hash_table_lookup(table, "charset"));
-	fail_if(g_hash_table_lookup(table, "algorithm") == NULL);
-	assert_string_equal("md5-sess", g_hash_table_lookup(table, "algorithm"));
+	check_value("realm", "somerealm");
+	check_value("nonce", "OA6MG9tEQGm2hh");
+	check_value("qop", "auth");
+	check_value("charset", "utf-8");
+	check_value("algorithm", "md5-sess");
+	g_hash_table_destroy(table);
+}
 
-	g_hash_table_destroy(table);
+gint
+main(gint argc, gchar **argv) {
+	g_test_init(&argc, &argv, NULL);
 
+	g_test_add_func("/jabber/digest/md5/parsing",
+	                test_jabber_digest_md5_parsing);
+
+	return g_test_run();
 }
-END_TEST
-
-Suite *
-jabber_digest_md5_suite(void)
-{
-	Suite *s = suite_create("Jabber SASL DIGEST-MD5 functions");
-
-	TCase *tc = tcase_create("Parsing Functionality");
-	tcase_add_test(tc, test_parsing);
-	suite_add_tcase(s, tc);
-	return s;
-}
diff --git a/libpurple/tests/test_jabber_jutil.c b/libpurple/protocols/jabber/tests/test_jabber_jutil.c
rename from libpurple/tests/test_jabber_jutil.c
rename to libpurple/protocols/jabber/tests/test_jabber_jutil.c
--- a/libpurple/tests/test_jabber_jutil.c
+++ b/libpurple/protocols/jabber/tests/test_jabber_jutil.c
@@ -1,151 +1,215 @@
-#include <string.h>



More information about the Commits mailing list