6 #include "xmlrpc_config.h"
8 #include "xmlrpc-c/base.h"
9 #include "xmlrpc-c/client.h"
16 testGlobalConst(void) {
19 xmlrpc_env_init(&env);
21 xmlrpc_client_setup_global_const(&env);
24 xmlrpc_client_teardown_global_const();
26 xmlrpc_client_setup_global_const(&env);
28 xmlrpc_client_setup_global_const(&env);
31 xmlrpc_client_teardown_global_const();
32 xmlrpc_client_teardown_global_const();
34 xmlrpc_env_clean(&env);
40 testCreateDestroy(void) {
43 xmlrpc_client * clientP;
44 struct xmlrpc_clientparms clientParms1;
45 struct xmlrpc_curl_xportparms curlTransportParms1;
47 xmlrpc_env_init(&env);
49 xmlrpc_client_create(&env, 0, "testprog", "1.0", NULL, 0, &clientP);
50 TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);
51 /* Didn't set up global const */
53 xmlrpc_client_setup_global_const(&env);
56 xmlrpc_client_create(&env, 0, "testprog", "1.0", NULL, 0, &clientP);
58 xmlrpc_client_destroy(clientP);
60 xmlrpc_client_create(&env, 0, "testprog", "1.0", &clientParms1, 0,
63 xmlrpc_client_destroy(clientP);
65 clientParms1.transport = "curl";
66 xmlrpc_client_create(&env, 0, "testprog", "1.0",
67 &clientParms1, XMLRPC_CPSIZE(transport), &clientP);
69 xmlrpc_client_destroy(clientP);
71 clientParms1.transportparmsP = NULL;
72 xmlrpc_client_create(&env, 0, "testprog", "1.0",
73 &clientParms1, XMLRPC_CPSIZE(transportparmsP),
76 xmlrpc_client_destroy(clientP);
78 clientParms1.transportparmsP = (struct xmlrpc_xportparms *)(void *)
81 xmlrpc_client_create(&env, 0, "testprog", "1.0",
82 &clientParms1, XMLRPC_CPSIZE(transportparmsP),
84 TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);
86 clientParms1.transportparm_size = 0;
87 xmlrpc_client_create(&env, 0, "testprog", "1.0",
88 &clientParms1, XMLRPC_CPSIZE(transportparm_size),
91 xmlrpc_client_destroy(clientP);
93 curlTransportParms1.network_interface = "eth0";
94 clientParms1.transportparm_size = XMLRPC_CXPSIZE(network_interface);
95 xmlrpc_client_create(&env, 0, "testprog", "1.0",
96 &clientParms1, XMLRPC_CPSIZE(transportparm_size),
99 xmlrpc_client_destroy(clientP);
101 curlTransportParms1.no_ssl_verifypeer = 1;
102 curlTransportParms1.no_ssl_verifyhost = 1;
103 clientParms1.transportparm_size = XMLRPC_CXPSIZE(no_ssl_verifyhost);
104 xmlrpc_client_create(&env, 0, "testprog", "1.0",
105 &clientParms1, XMLRPC_CPSIZE(transportparm_size),
108 xmlrpc_client_destroy(clientP);
110 curlTransportParms1.user_agent = "testprog/1.0";
111 clientParms1.transportparm_size = XMLRPC_CXPSIZE(user_agent);
112 xmlrpc_client_create(&env, 0, "testprog", "1.0",
113 &clientParms1, XMLRPC_CPSIZE(transportparm_size),
116 xmlrpc_client_destroy(clientP);
118 xmlrpc_client_teardown_global_const();
120 xmlrpc_env_clean(&env);
126 testSynchCall(void) {
129 xmlrpc_client * clientP;
130 xmlrpc_value * resultP;
131 xmlrpc_value * emptyArrayP;
132 xmlrpc_server_info * noSuchServerInfoP;
134 xmlrpc_env_init(&env);
136 emptyArrayP = xmlrpc_array_new(&env);
139 xmlrpc_client_setup_global_const(&env);
142 xmlrpc_client_create(&env, 0, "testprog", "1.0", NULL, 0, &clientP);
145 noSuchServerInfoP = xmlrpc_server_info_new(&env, "nosuchserver");
148 xmlrpc_client_call2(&env, clientP, noSuchServerInfoP, "nosuchmethod",
149 emptyArrayP, &resultP);
150 TEST_FAULT(&env, XMLRPC_NETWORK_ERROR); /* No such server */
152 xmlrpc_client_call2f(&env, clientP, "nosuchserver", "nosuchmethod",
154 TEST_FAULT(&env, XMLRPC_NETWORK_ERROR); /* No such server */
156 xmlrpc_server_info_free(noSuchServerInfoP);
158 xmlrpc_client_destroy(clientP);
160 xmlrpc_DECREF(emptyArrayP);
162 xmlrpc_client_teardown_global_const();
164 xmlrpc_env_clean(&env);
170 testInitCleanup(void) {
173 struct xmlrpc_clientparms clientParms1;
174 struct xmlrpc_curl_xportparms curlTransportParms1;
176 xmlrpc_env_init(&env);
178 xmlrpc_client_init2(&env, 0, "testprog", "1.0", NULL, 0);
180 xmlrpc_client_cleanup();
182 xmlrpc_client_init2(&env, 0, "testprog", "1.0", &clientParms1, 0);
184 xmlrpc_client_cleanup();
186 clientParms1.transport = "curl";
187 xmlrpc_client_init2(&env, 0, "testprog", "1.0",
188 &clientParms1, XMLRPC_CPSIZE(transport));
190 xmlrpc_client_cleanup();
192 clientParms1.transportparmsP = NULL;
193 xmlrpc_client_init2(&env, 0, "testprog", "1.0",
194 &clientParms1, XMLRPC_CPSIZE(transportparmsP));
196 xmlrpc_client_cleanup();
198 clientParms1.transportparmsP = (struct xmlrpc_xportparms *)(void *)
199 &curlTransportParms1;
201 /* Fails because we didn't include transportparm_size: */
202 xmlrpc_client_init2(&env, 0, "testprog", "1.0",
203 &clientParms1, XMLRPC_CPSIZE(transportparmsP));
204 TEST_FAULT(&env, XMLRPC_INTERNAL_ERROR);
206 clientParms1.transportparm_size = 0;
207 xmlrpc_client_init2(&env, 0, "testprog", "1.0",
208 &clientParms1, XMLRPC_CPSIZE(transportparm_size));
210 xmlrpc_client_cleanup();
212 curlTransportParms1.network_interface = "eth0";
213 clientParms1.transportparm_size = XMLRPC_CXPSIZE(network_interface);
214 xmlrpc_client_init2(&env, 0, "testprog", "1.0",
215 &clientParms1, XMLRPC_CPSIZE(transportparm_size));
217 xmlrpc_client_cleanup();
219 curlTransportParms1.no_ssl_verifypeer = 1;
220 curlTransportParms1.no_ssl_verifyhost = 1;
221 clientParms1.transportparm_size = XMLRPC_CXPSIZE(no_ssl_verifyhost);
222 xmlrpc_client_init2(&env, 0, "testprog", "1.0",
223 &clientParms1, XMLRPC_CPSIZE(transportparm_size));
225 xmlrpc_client_cleanup();
227 curlTransportParms1.user_agent = "testprog/1.0";
228 clientParms1.transportparm_size = XMLRPC_CXPSIZE(user_agent);
229 xmlrpc_client_init2(&env, 0, "testprog", "1.0",
230 &clientParms1, XMLRPC_CPSIZE(transportparm_size));
232 xmlrpc_client_cleanup();
234 xmlrpc_client_init(0, "testprog", "1.0");
236 xmlrpc_client_cleanup();
238 xmlrpc_env_clean(&env);
246 printf("Running client tests.");
254 printf("Client tests done.\n");