5 #define RAW_STRING_DATA \
6 "<value><array><data>\r\n" \
7 "<value><i4>2147483647</i4></value>\r\n" \
8 "<value><i4>-2147483648</i4></value>\r\n" \
9 "<value><boolean>0</boolean></value>\r\n" \
10 "<value><boolean>1</boolean></value>\r\n" \
11 "<value><string>Hello, world! <&></string></value>\r\n" \
12 "<value><base64>\r\n" \
13 "YmFzZTY0IGRhdGE=\r\n" \
14 "</base64></value>\r\n" \
16 "<dateTime.iso8601>19980717T14:08:55</dateTime.iso8601>" \
18 "<value><array><data>\r\n" \
19 "</data></array></value>\r\n" \
20 "</data></array></value>"
22 char const serialized_data[] = RAW_STRING_DATA;
24 char const serialized_call[] =
27 "<methodName>gloom&doom</methodName>\r\n"
29 "<param><value><i4>10</i4></value></param>\r\n"
30 "<param><value><i4>20</i4></value></param>\r\n"
34 char const serialized_fault[] =
36 "<methodResponse>\r\n"
39 "<member><name>faultCode</name>\r\n"
40 "<value><i4>6</i4></value></member>\r\n"
41 "<member><name>faultString</name>\r\n"
42 "<value><string>A fault occurred</string></value></member>\r\n"
43 "</struct></value>\r\n"
45 "</methodResponse>\r\n";
47 char const expat_data[] = XML_PROLOGUE RAW_STRING_DATA "\r\n";
48 char const expat_error_data[] =
50 "<foo><bar>abc</bar><baz></baz>\r\n";
51 /* Invalid because there's no closing </foo> */
54 char const good_response_xml[] =
56 "<methodResponse><params><param>\r\n"
57 "<value><array><data>\r\n"
58 RAW_STRING_DATA "\r\n"
59 "<value><int>1</int></value>\r\n"
60 "<value><double>-1.0</double></value>\r\n"
61 "<value><double>0.0</double></value>\r\n"
62 "<value><double>1.0</double></value>\r\n"
64 "<member><name>ten <&></name>\r\n"
65 "<value><i4>10</i4></value></member>\r\n"
66 "<member><name>twenty</name>\r\n"
67 "<value><i4>20</i4></value></member>\r\n"
68 "</struct></value>\r\n"
69 "<value>Untagged string</value>\r\n"
70 "</data></array></value>\r\n"
71 "</param></params></methodResponse>\r\n";
73 #define VALUE_HEADER \
74 XML_PROLOGUE"<methodResponse><params><param><value>\r\n"
75 #define VALUE_FOOTER \
76 "</value></param></params></methodResponse>\r\n"
78 #define MEMBER_HEADER \
79 VALUE_HEADER"<struct><member>"
80 #define MEMBER_FOOTER \
81 "</member></struct>"VALUE_FOOTER
82 #define ARBITRARY_VALUE \
83 "<value><i4>0</i4></value>"
85 char const unparseable_value[] = VALUE_HEADER"<i4>"VALUE_FOOTER;
87 const char * bad_values[] = {
88 VALUE_HEADER"<i4>0</i4><i4>0</i4>"VALUE_FOOTER,
89 VALUE_HEADER"<foo></foo>"VALUE_FOOTER,
90 VALUE_HEADER"<i4><i4>4</i4></i4>"VALUE_FOOTER,
91 VALUE_HEADER"<i4>2147483648</i4>"VALUE_FOOTER,
92 VALUE_HEADER"<i4>-2147483649</i4>"VALUE_FOOTER,
93 VALUE_HEADER"<i4> 0</i4>"VALUE_FOOTER,
94 VALUE_HEADER"<i4>0 </i4>"VALUE_FOOTER,
95 VALUE_HEADER"<boolean>2</boolean>"VALUE_FOOTER,
96 VALUE_HEADER"<boolean>-1</boolean>"VALUE_FOOTER,
97 VALUE_HEADER"<double> 0.0</double>"VALUE_FOOTER,
98 VALUE_HEADER"<double>0.0 </double>"VALUE_FOOTER,
99 VALUE_HEADER"<array></array>"VALUE_FOOTER,
100 VALUE_HEADER"<array><data></data><data></data></array>"VALUE_FOOTER,
101 VALUE_HEADER"<array><data></data><data></data></array>"VALUE_FOOTER,
102 VALUE_HEADER"<array><data><foo></foo></data></array>"VALUE_FOOTER,
103 VALUE_HEADER"<struct><foo></foo></struct>"VALUE_FOOTER,
104 MEMBER_HEADER MEMBER_FOOTER,
105 MEMBER_HEADER"<name>a</name>"MEMBER_FOOTER,
106 MEMBER_HEADER"<name>a</name>"ARBITRARY_VALUE"<f></f>"MEMBER_FOOTER,
107 MEMBER_HEADER"<foo></foo>"ARBITRARY_VALUE MEMBER_FOOTER,
108 MEMBER_HEADER"<name>a</name><foo></foo>"MEMBER_FOOTER,
109 MEMBER_HEADER"<name><foo></foo></name>"ARBITRARY_VALUE MEMBER_FOOTER,
113 #define RESPONSE_HEADER \
114 XML_PROLOGUE"<methodResponse>\r\n"
115 #define RESPONSE_FOOTER \
116 "</methodResponse>\r\n"
118 #define PARAMS_RESP_HEADER \
119 RESPONSE_HEADER"<params>"
120 #define PARAMS_RESP_FOOTER \
121 "</params>"RESPONSE_FOOTER
123 #define FAULT_HEADER \
124 RESPONSE_HEADER"<fault>"
125 #define FAULT_FOOTER \
126 "</fault>"RESPONSE_FOOTER
128 #define FAULT_STRUCT_HEADER \
129 FAULT_HEADER"<value><struct>"
130 #define FAULT_STRUCT_FOOTER \
131 "</struct></value>"FAULT_FOOTER
133 const char * bad_responses[] = {
134 XML_PROLOGUE"<foo></foo>\r\n",
135 RESPONSE_HEADER RESPONSE_FOOTER,
136 RESPONSE_HEADER"<params></params><params></params>"RESPONSE_FOOTER,
137 RESPONSE_HEADER"<foo></foo>"RESPONSE_FOOTER,
139 /* Make sure we insist on only one parameter in a response. */
140 PARAMS_RESP_HEADER PARAMS_RESP_FOOTER,
142 "<param><i4>0</i4></param>"
143 "<param><i4>0</i4></param>"
146 /* Test other sorts of bad parameters. */
147 PARAMS_RESP_HEADER"<foo></foo>"PARAMS_RESP_FOOTER,
148 PARAMS_RESP_HEADER"<param></param>"PARAMS_RESP_FOOTER,
149 PARAMS_RESP_HEADER"<param><foo></foo></param>"PARAMS_RESP_FOOTER,
151 "<param>"ARBITRARY_VALUE ARBITRARY_VALUE"</param>"
154 /* Basic fault tests. */
155 FAULT_HEADER FAULT_FOOTER,
156 FAULT_HEADER"<foo></foo>"FAULT_FOOTER,
157 FAULT_HEADER"<value></value><value></value>"FAULT_FOOTER,
158 FAULT_HEADER"<value><i4>1</i4></value>"FAULT_FOOTER,
160 /* Make sure we insist on the proper members within the fault struct. */
162 "<member><name>faultString</name>"
163 "<value><string>foo</string></value></member>"
166 "<member><name>faultCode</name>"
167 "<value><i4>0</i4></value></member>"
170 "<member><name>faultCode</name>"
171 "<value><i4>0</i4></value></member>"
172 "<member><name>faultString</name>"
173 "<value><i4>0</i4></value></member>"
176 "<member><name>faultCode</name>"
177 "<value><string>0</string></value></member>"
178 "<member><name>faultString</name>"
179 "<value><string>foo</string></value></member>"
183 #define CALL_HEADER \
184 XML_PROLOGUE"<methodCall>\r\n"
185 #define CALL_FOOTER \
188 const char * bad_calls[] = {
189 XML_PROLOGUE"<foo></foo>\r\n",
190 CALL_HEADER CALL_FOOTER,
191 CALL_HEADER"<methodName>m</methodName><foo></foo>"CALL_FOOTER,
192 CALL_HEADER"<foo></foo><params></params>"CALL_FOOTER,
193 CALL_HEADER"<methodName><f></f></methodName><params></params>"CALL_FOOTER,