view libpurple/tests/test_qq.c @ 28255:79c14adf9669

Change purple_url_encode() to not encode . _ - ~ because it's not necessary. Also use capital letters instead of lowercase. RFC3986 says capital letters are a SHOULD and that lowercase letters should be equivalent. AOL's clientlogin authentication requires both of these changes for our signature to match up with the signature generated on AOL's side. Original I had implemented an oscar-specific version of our url encode function with these two changes, but I'm pretty sure it's safe to make this in purple_url_encode(). It looks like it's almost always used to encode pieces of URLs. MSN uses it for a few other things... I tested setting those characters in your friendly name and it works fine.
author Mark Doliner <mark@kingant.net>
date Fri, 11 Sep 2009 18:17:03 +0000
parents 2da9e4266742
children
line wrap: on
line source

#include <string.h>

#include "tests.h"
#include "../protocols/qq/qq_crypt.h"

START_TEST(test_qq_encrypt)
{
	const guint8 * const key = (guint8 *)"hamburger";
	guint8 crypted[80];
	gint ret;

	ret = qq_encrypt(crypted, (const guint8 * const)"a", 1, key);
	assert_int_equal(16, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aa", 2, key);
	assert_int_equal(16, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaa", 3, key);
	assert_int_equal(16, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaaa", 4, key);
	assert_int_equal(16, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaaaa", 5, key);
	assert_int_equal(16, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaa", 6, key);
	assert_int_equal(16, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaa", 7, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaaa", 8, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaaaa", 9, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted, (const guint8 * const)"aaaaaaaaaa", 10, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaa", 11, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaa", 12, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaaa", 13, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaaaa", 14, key);
	assert_int_equal(24, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaaaaa", 15, key);
	assert_int_equal(32, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaaaaaa", 16, key);
	assert_int_equal(32, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaaaaaaa", 17, key);
	assert_int_equal(32, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaaaaaaaa", 18, key);
	assert_int_equal(32, ret);

	ret = qq_encrypt(crypted,
			(const guint8 * const)"aaaaaaaaaaaaaaaaaaa", 19, key);
	assert_int_equal(32, ret);

	/*
	fprintf(stderr, "crypted=%s\n", crypted);
	assert_string_equal_free("plain",
			yahoo_codes_to_html("plain"));
	*/
}
END_TEST

START_TEST(test_qq_decrypt)
{
}
END_TEST

Suite *
qq_suite(void)
{
	Suite *s;
	TCase *tc;

	s = suite_create("QQ");

	tc = tcase_create("QQ Crypt Functions");
	tcase_add_test(tc, test_qq_encrypt);
	tcase_add_test(tc, test_qq_decrypt);
	suite_add_tcase(s, tc);

	return s;
}