X-Git-Url: http://www.project-moonshot.org/gitweb/?a=blobdiff_plain;f=lib%2Ftests%2Ftest-udp.c;h=7ad340ab44838187420568d54840d14d0d7e3a65;hb=0a3ac2ab74778832966237b6a3e488cb8d627ec4;hp=7a6d996be761e0f0587145f2532985f2510c49fe;hpb=f58ce3d98a13e9c8d0930b54c5f593cbfa196d65;p=libradsec.git diff --git a/lib/tests/test-udp.c b/lib/tests/test-udp.c index 7a6d996..7ad340a 100644 --- a/lib/tests/test-udp.c +++ b/lib/tests/test-udp.c @@ -1,28 +1,28 @@ +/* Copyright 2011,2013, NORDUnet A/S. All rights reserved. */ +/* See LICENSE for licensing information. */ + #include -#include -#include +#include +#include +#include "radius/client.h" #include "radsec/radsec.h" #include "radsec/request.h" #include "udp.h" -#define true 1 /* FIXME: Bug report cgreen. */ -#define false 0 - -#define FREERADIUS_DICT "/usr/share/freeradius/dictionary" - static void authenticate (struct rs_connection *conn, const char *user, const char *pw) { struct rs_request *req; struct rs_packet *msg, *resp; - assert_true (rs_request_create (conn, &req) == 0); - assert_true (rs_packet_create_auth_request (conn, &msg, user, pw) == 0); - assert_true (rs_request_send (req, msg, &resp) == 0); + CU_ASSERT (rs_request_create (conn, &req) == 0); + CU_ASSERT (!rs_packet_create_authn_request (conn, &msg, user, pw)); + rs_request_add_reqpkt (req, msg); + CU_ASSERT (rs_request_send (req, &resp) == 0); //printf ("%s\n", rs_err_msg (rs_err_conn_pop (conn), 1)); - assert_true (rs_packet_frpkt (resp)->code == PW_AUTHENTICATION_ACK); + CU_ASSERT (rs_packet_code(resp) == PW_ACCESS_ACCEPT); - rs_request_destroy(req); + rs_request_destroy (req); } static void @@ -30,34 +30,36 @@ send_more_than_one_msg_in_one_packet (struct rs_connection *conn) { struct rs_packet *msg0, *msg1; - assert_true (rs_packet_create_auth_request (conn, &msg0, NULL, NULL) == 0); - assert_true (rs_packet_create_auth_request (conn, &msg1, NULL, NULL) == 0); - assert_true (rs_packet_send (msg0, NULL) == 0); - assert_true (rs_packet_send (msg1, NULL) == 0); + CU_ASSERT (rs_packet_create_authn_request (conn, &msg0, NULL, NULL) == 0); + CU_ASSERT (rs_packet_create_authn_request (conn, &msg1, NULL, NULL) == 0); + CU_ASSERT (rs_packet_send (msg0, NULL) == 0); + CU_ASSERT (rs_packet_send (msg1, NULL) == 0); } +#if 0 static void send_large_packet (struct rs_connection *conn) { struct rs_packet *msg0; - struct rs_attr *attr_x; + struct radius_packet *frpkt = NULL; char *buf; int f; - buf = malloc (4096); - assert_true (buf != NULL); - memset (buf, 0, 4096); + buf = malloc (RS_MAX_PACKET_LEN); + CU_ASSERT (buf != NULL); + memset (buf, 0, RS_MAX_PACKET_LEN); - assert_true (rs_packet_create (conn, &msg0) == 0); + CU_ASSERT (rs_packet_create (conn, &msg0) == 0); /* 16 chunks --> heap corruption in evbuffer_drain detected by free() */ for (f = 0; f < 15; f++) { memset (buf, 'a' + f, 252); - rs_attr_create (conn, &attr_x, "EAP-Message", buf); - rs_packet_add_attr (msg0, attr_x); + //vp = pairmake ("EAP-Message", buf, T_OP_EQ); + CU_ASSERT (rs_packet_append_avp (msg0, fixme...) == RSE_OK); } - assert_true (rs_packet_send (msg0, NULL) == 0); + CU_ASSERT (rs_packet_send (msg0, NULL) == 0); } +#endif /* 0 */ /* ************************************************************ */ static struct setup { @@ -75,12 +77,12 @@ test_auth () setup.config_file = "test.conf"; setup.config_name = "test-udp-auth"; - setup.username = "molgan"; + setup.username = "molgan@PROJECT-MOONSHOT.ORG"; setup.pw = "password"; - assert_true (rs_context_create (&ctx, FREERADIUS_DICT) == 0); - assert_true (rs_context_read_config (ctx, setup.config_file) == 0); - assert_true (rs_conn_create (ctx, &conn, setup.config_name) == 0); + CU_ASSERT (rs_context_create (&ctx) == 0); + CU_ASSERT (rs_context_read_config (ctx, setup.config_file) == 0); + CU_ASSERT (rs_conn_create (ctx, &conn, setup.config_name) == 0); authenticate (conn, setup.username, setup.pw); @@ -93,12 +95,12 @@ test_buffering_cb (const uint8_t *buf, ssize_t len) { /* "Exactly one RADIUS packet is encapsulated in the UDP Data field" [RFC 2865]*/ -#if 1 +#if 0 hd (buf, len); #endif - assert_true (len >= 20); - assert_true (len <= 4096); - assert_true ((buf[2] << 8) + buf[3] == len); + CU_ASSERT (len >= 20); + CU_ASSERT (len <= RS_MAX_PACKET_LEN); + CU_ASSERT ((buf[2] << 8) + buf[3] == len); return len; } @@ -110,21 +112,19 @@ test_buffering () struct timeval timeout; struct polldata *polldata; - assert_true (rs_context_create (&ctx, FREERADIUS_DICT) == 0); - assert_true (rs_context_read_config (ctx, "test.conf") == 0); - assert_true (rs_conn_create (ctx, &conn, "test-udp-buffering") == 0); + CU_ASSERT (rs_context_create (&ctx) == 0); + CU_ASSERT (rs_context_read_config (ctx, "test.conf") == 0); + CU_ASSERT (rs_conn_create (ctx, &conn, "test-udp-buffering") == 0); timeout.tv_sec = 0; timeout.tv_usec = 150000; polldata = udp_server ("11820", &timeout, test_buffering_cb); - assert_true (polldata != NULL); + CU_ASSERT (polldata != NULL); send_more_than_one_msg_in_one_packet (conn); - assert_true (udp_poll (polldata) > 0); - assert_true (udp_poll (polldata) > 0); + CU_ASSERT (udp_poll (polldata) > 0); + CU_ASSERT (udp_poll (polldata) > 0); - send_large_packet (conn); - assert_true (udp_poll (polldata) > 0); udp_free_polldata (polldata); rs_conn_destroy (conn); @@ -132,28 +132,20 @@ test_buffering () } /* ************************************************************ */ -static void -setup_auth (TestSuite *ts) -{ - add_test (ts, test_auth); -} - -static void -setup_buffering (TestSuite *ts) -{ - add_test (ts, test_buffering); -} - int main (int argc, char *argv[]) { - TestSuite *ts = create_test_suite (); + CU_pSuite s = NULL; + CU_pTest t = NULL; + + assert (CU_initialize_registry () == CUE_SUCCESS); + s = CU_add_suite ("auth", NULL, NULL); assert (s); + t = CU_ADD_TEST (s, test_auth); assert (t); + s = CU_add_suite ("buffering", NULL, NULL); assert (s); + t = CU_ADD_TEST (s, test_buffering); assert (t); - setup_auth (ts); - setup_buffering (ts); + return !(CU_basic_run_tests () == CUE_SUCCESS); - if (argc > 1) - return run_single_test (ts, argv[1], create_text_reporter ()); - else - return run_test_suite (ts, create_text_reporter ()); + CU_cleanup_registry (); + return 0; }