view libpurple/tests/test_jabber_digest_md5.c @ 31869:c80ac2d937b7

Change last remaining users of purple_connection_error to use purple_connection_error_reason. The "reason" I used in this code is probably not the most appropriate reason. My goal was to retain the same behavior before and after this change. It's not a bad idea for someone to look at each of these calls and determine if a different reason should be used... but it hasn't seemed to cause problems so far, so maybe it doesn't matter.
author Mark Doliner <mark@kingant.net>
date Sun, 21 Aug 2011 07:49:24 +0000
parents e743507b3767
children
line wrap: on
line source

#include <string.h>

#include "tests.h"
#include "../util.h"
#include "../protocols/jabber/auth_digest_md5.h"
#include "../protocols/jabber/jutil.h"

START_TEST(test_parsing)
{
	GHashTable *table;

	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"));
	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"));
	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"));
	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"));

	g_hash_table_destroy(table);

}
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;
}