diff options
Diffstat (limited to 'tests/check_jabber_sasl.c')
| -rw-r--r-- | tests/check_jabber_sasl.c | 117 | 
1 files changed, 117 insertions, 0 deletions
| diff --git a/tests/check_jabber_sasl.c b/tests/check_jabber_sasl.c new file mode 100644 index 00000000..6bceeb88 --- /dev/null +++ b/tests/check_jabber_sasl.c @@ -0,0 +1,117 @@ +#include <stdlib.h> +#include <glib.h> +#include <gmodule.h> +#include <check.h> +#include <string.h> +#include <stdio.h> +#include "arc.h" + +char *sasl_get_part( char *data, char *field ); + +#define challenge1 "nonce=\"1669585310\",qop=\"auth\",charset=utf-8,algorithm=md5-sess," \ +                   "something=\"Not \\\"standardized\\\"\"" +#define challenge2 "realm=\"quadpoint.org\", nonce=\"NPotlQpQf9RNYodOwierkQ==\", " \ +                   "qop=\"auth, auth-int\", charset=utf-8, algorithm=md5-sess" +#define challenge3 ", realm=\"localhost\", nonce=\"LlBV2txnO8RbB5hgs3KgiQ==\", " \ +                   "qop=\"auth, auth-int, \", ,\n, charset=utf-8, algorithm=md5-sess," + +struct +{ +	char *challenge; +	char *key; +	char *value; +} get_part_tests[] = { +	{ +		challenge1, +		"nonce", +		"1669585310" +	}, +	{ +		challenge1, +		"charset", +		"utf-8" +	}, +	{ +		challenge1, +		"harset", +		NULL +	}, +	{ +		challenge1, +		"something", +		"Not \"standardized\"" +	}, +	{ +		challenge1, +		"something_else", +		NULL +	}, +	{ +		challenge2, +		"realm", +		"quadpoint.org", +	}, +	{ +		challenge2, +		"real", +		NULL +	}, +	{ +		challenge2, +		"qop", +		"auth, auth-int" +	}, +	{ +		challenge3, +		"realm", +		"localhost" +	}, +	{ +		challenge3, +		"qop", +		"auth, auth-int, " +	}, +	{ +		challenge3, +		"charset", +		"utf-8" +	}, +	{ NULL, NULL, NULL } +}; + +static void check_get_part(int l) +{ +	int i; +	 +	for( i = 0; get_part_tests[i].key; i++ ) +	{ +  		tcase_fn_start( get_part_tests[i].key, __FILE__, i ); +		char *res; +		int len; +		 +		res = sasl_get_part( get_part_tests[i].challenge, +		                     get_part_tests[i].key ); +		 +		if( get_part_tests[i].value == NULL ) +			fail_if( res != NULL, "Found key %s in %s while it shouldn't be there!", +			         get_part_tests[i].key, get_part_tests[i].challenge ); +		else if( res ) +			fail_unless( strcmp( res, get_part_tests[i].value ) == 0, +			             "Incorrect value for key %s in %s: %s", +			             get_part_tests[i].key, get_part_tests[i].challenge, res ); +		else +			fail( "Could not find key %s in %s", +			      get_part_tests[i].key, get_part_tests[i].challenge ); +		 +		g_free( res ); +	} +} + +Suite *jabber_sasl_suite (void) +{ +	Suite *s = suite_create("jabber/sasl"); +	TCase *tc_core = tcase_create("Core"); +	suite_add_tcase (s, tc_core); +	tcase_add_test (tc_core, check_get_part); +	return s; +} | 
