1 /* test suite for tr_config.c */
6 #include <trust_router/tr_name.h>
12 static void tr_talloc_log(const char *msg)
14 tr_debug("talloc: %s", msg);
17 static int verify_idp_cfg(TR_CFG *cfg)
22 TR_IDP_REALM *idp_realm=NULL;
23 TR_AAA_SERVER *aaa=NULL;
27 /* test the comms attribute */
28 assert(cfg->comms!=NULL);
29 name=tr_new_name("apc.example.com");
30 comm=tr_comm_lookup(cfg->comms, name);
34 assert(comm->type==TR_COMM_APC);
35 assert(comm->expiration_interval==TR_DEFAULT_APC_EXPIRATION_INTERVAL);
36 assert(comm->apcs==NULL);
38 name=tr_new_name("A.idp.cfg");
39 for (idp_realm=comm->idp_realms;
40 (idp_realm!=NULL) && (tr_name_cmp(name, idp_realm->realm_id)!=0);
41 idp_realm=idp_realm->comm_next) { }
42 assert(idp_realm!=NULL);
43 assert(idp_realm->shared_config==0);
44 assert(idp_realm->origin==TR_REALM_LOCAL);
46 name=tr_new_name("apc.example.com");
47 assert(tr_name_cmp(idp_realm->apcs->id, name)==0);
50 assert(idp_realm->aaa_servers!=NULL);
51 name=tr_new_name("rad1.A.idp.cfg");
52 for (aaa=idp_realm->aaa_servers;
53 (aaa!=NULL) && (tr_name_cmp(name, aaa->hostname)!=0);
58 name=tr_new_name("rad2.A.idp.cfg");
59 for (aaa=idp_realm->aaa_servers;
60 (aaa!=NULL) && (tr_name_cmp(name, aaa->hostname)!=0);
68 static int verify_rp_cfg(TR_CFG *cfg)
74 assert(cfg->rp_clients!=NULL);
75 assert(cfg->rp_clients->next==NULL);
76 assert(cfg->rp_clients->comm_next==NULL);
77 /* need to update next test to use TR_GSS_NAMES structure */
79 for (ii=1; ii<TR_MAX_GSS_NAMES; ii++)
80 assert(cfg->rp_clients->gss_names[ii]==NULL);
81 assert(cfg->rp_clients->gss_names[0]!=NULL);
82 name=tr_new_name("gss@example.com");
83 assert(tr_name_cmp(name, cfg->rp_clients->gss_names[0])==0);
90 TALLOC_CTX *mem_ctx=talloc_new(NULL);
92 TR_CFG_RC rc=TR_CFG_ERROR;
96 talloc_set_log_fn(tr_talloc_log);
97 cfg=tr_cfg_new(mem_ctx);
99 printf("Parsing idp.cfg.\n");
100 rc=tr_cfg_parse_one_config_file(cfg, "idp.cfg");
103 tr_debug("main: TR_CFG_SUCCESS");
106 tr_debug("main: TR_CFG_ERROR");
108 case TR_CFG_BAD_PARAMS:
109 tr_debug("main: TR_CFG_BAD_PARAMS");
112 tr_debug("main: TR_CFG_NOPARSE");
115 tr_debug("main: TR_CFG_NOMEM");
119 printf("Verifying IDP parse results... ");
120 if (verify_idp_cfg(cfg)!=0) {
124 printf("success!\n");
126 printf("Verifying RP parse results... ");
127 if (verify_rp_cfg(cfg)!=0) {
131 printf("success!\n");
133 talloc_report_full(mem_ctx, stderr);
136 printf("Cleared configuration for next test.\n\n");
138 cfg=tr_cfg_new(mem_ctx);
140 printf("Parsing rp.cfg.\n");
141 rc=tr_cfg_parse_one_config_file(cfg, "rp.cfg");
144 tr_debug("main: TR_CFG_SUCCESS");
147 tr_debug("main: TR_CFG_ERROR");
149 case TR_CFG_BAD_PARAMS:
150 tr_debug("main: TR_CFG_BAD_PARAMS");
153 tr_debug("main: TR_CFG_NOPARSE");
156 tr_debug("main: TR_CFG_NOMEM");
161 printf("Verifying RP parse results... ");
162 if (verify_rp_cfg(cfg)!=0) {
166 printf("success!\n");
169 talloc_free(mem_ctx);