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 for (ii=1; ii<TR_MAX_GSS_NAMES; ii++)
78 assert(cfg->rp_clients->gss_names[ii]==NULL);
79 assert(cfg->rp_clients->gss_names[0]!=NULL);
80 name=tr_new_name("gss@example.com");
81 assert(tr_name_cmp(name, cfg->rp_clients->gss_names[0])==0);
87 TALLOC_CTX *mem_ctx=talloc_new(NULL);
89 TR_CFG_RC rc=TR_CFG_ERROR;
93 talloc_set_log_fn(tr_talloc_log);
94 cfg=tr_cfg_new(mem_ctx);
96 printf("Parsing idp.cfg.\n");
97 rc=tr_cfg_parse_one_config_file(cfg, "idp.cfg");
100 tr_debug("main: TR_CFG_SUCCESS");
103 tr_debug("main: TR_CFG_ERROR");
105 case TR_CFG_BAD_PARAMS:
106 tr_debug("main: TR_CFG_BAD_PARAMS");
109 tr_debug("main: TR_CFG_NOPARSE");
112 tr_debug("main: TR_CFG_NOMEM");
116 printf("Verifying IDP parse results... ");
117 if (verify_idp_cfg(cfg)!=0) {
121 printf("success!\n");
123 printf("Verifying RP parse results... ");
124 if (verify_rp_cfg(cfg)!=0) {
128 printf("success!\n");
130 talloc_report_full(mem_ctx, stderr);
133 printf("Cleared configuration for next test.\n\n");
135 cfg=tr_cfg_new(mem_ctx);
137 printf("Parsing rp.cfg.\n");
138 rc=tr_cfg_parse_one_config_file(cfg, "rp.cfg");
141 tr_debug("main: TR_CFG_SUCCESS");
144 tr_debug("main: TR_CFG_ERROR");
146 case TR_CFG_BAD_PARAMS:
147 tr_debug("main: TR_CFG_BAD_PARAMS");
150 tr_debug("main: TR_CFG_NOPARSE");
153 tr_debug("main: TR_CFG_NOMEM");
158 printf("Verifying RP parse results... ");
159 if (verify_rp_cfg(cfg)!=0) {
163 printf("success!\n");
166 talloc_free(mem_ctx);