Add basic testing code.
[libradsec.git] / lib / tests / test-udp.c
1 #include <stdlib.h>
2 #include <cgreen/cgreen.h>
3 #include <freeradius/libradius.h>
4 #include "radsec/radsec.h"
5 #include "radsec/request.h"
6
7 #define true 1                  /* FIXME: Bug report cgreen.  */
8 #define false 0
9
10 #define FREERADIUS_DICT "/usr/share/freeradius/dictionary"
11
12 void
13 authenticate (struct rs_connection *conn, const char *user, const char *pw)
14 {
15   struct rs_request *req;
16   struct rs_packet *msg, *resp;
17
18   assert_true (rs_request_create (conn, &req) == 0);
19   assert_true (rs_packet_create_auth_request (conn, &msg, user, pw) == 0);
20   assert_true (rs_request_send (req, msg, &resp) == 0);
21   assert_true (rs_packet_frpkt (resp)->code == PW_AUTHENTICATION_ACK);
22
23   rs_request_destroy(req);
24 }
25
26 #if 0
27 int
28 send_more_than_one_msg_in_one_packet (const char *server)
29 {
30   struct rs_request *req;
31   struct rs_packet *msg, *resp;
32
33
34
35 }
36 #endif
37
38 /* ************************************************************ */
39 static struct setup {
40   char *config_file;
41   char *config_name;
42   char *username;
43   char *pw;
44 } setup;
45
46 void
47 test_auth ()
48 {
49   struct rs_context *ctx;
50   struct rs_connection *conn;
51
52   assert_true (rs_context_create (&ctx, FREERADIUS_DICT) == 0);
53   assert_true (rs_context_read_config (ctx, setup.config_file) == 0);
54   assert_true (rs_conn_create (ctx, &conn, setup.config_name) == 0);
55
56   authenticate (conn, setup.username, setup.pw);
57
58   rs_conn_destroy (conn);
59   rs_context_destroy (ctx);
60 }
61
62 int
63 test_udp (int argc, char *argv[], TestSuite *ts)
64 {
65   add_test (ts, test_auth);
66
67   if (argc > 1)
68     return run_single_test (ts, argv[1], create_text_reporter ());
69
70   return run_test_suite (ts, create_text_reporter ());
71 }
72
73 int
74 main (int argc, char *argv[])
75 {
76   TestSuite *ts = create_test_suite ();
77
78   setup.config_file = "test.conf";
79   setup.config_name = "test-udp";
80   setup.username = "molgan";
81   setup.pw = "password";
82
83   return test_udp (argc, argv, ts);
84 }