+ const char *resp_buf =
+ "HTTP/1.1 200 OK\r\n"
+ "Content-Length: 140\r\n"
+ "Content-Type: application/javascript\r\n"
+ "Link: <http://targetsite/file.xml>; rel=absolute\r\n"
+ "Link: </dir/file.xml>; rel=relative\r\n"
+ "\r\n"
+ "// \"\n"
+ "my.location = 'http://targetsite/images/bg.png';\n"
+ "my.other = \"http://targetsite/images/fg.png\";\n"
+ "my.thrd = \"other\";\n"
+ "// \"http://targetsite/images/bg.png\n";
+
+ const char *resp_expected =
+ "HTTP/1.1 200 OK\r\n"
+ "Content-Length: 195\r\n"
+ "Content-Type: application/javascript\r\n"
+ "Link: <http://proxyhost/proxypath/targetsite/file.xml>; rel=absolute\r\n"
+ "Link: </dir/file.xml>; rel=relative\r\n"
+ "\r\n"
+ "// \"\n"
+ "my.location = 'http://proxyhost/proxypath/targetsite/images/bg.png';\n"
+ "my.other = \"http://proxyhost/proxypath/targetsite/images/fg.png\";\n"
+ "my.thrd = \"other\";\n"
+ "// \"http://targetsite/images/bg.png\n";
+
+ Z_GDU *gdu_res;
+ mp::odr dec(ODR_DECODE);
+ mp::odr enc(ODR_ENCODE);
+ odr_setbuf(dec, (char *) resp_buf, strlen(resp_buf), 0);
+ int r = z_GDU(dec, &gdu_res, 0, 0);
+
+ BOOST_CHECK(r);
+ if (r)
+ {
+ BOOST_CHECK_EQUAL(gdu_res->which, Z_GDU_HTTP_Response);
+
+ pack.response() = gdu_res;
+
+ //feed to the router
+ pack.router(router).move();
+
+ //analyze the response
+ Z_GDU *gdu_res_rew = pack.response().get();
+ BOOST_CHECK(gdu_res_rew);
+ BOOST_CHECK_EQUAL(gdu_res_rew->which, Z_GDU_HTTP_Response);
+
+ Z_HTTP_Response *hres = gdu_res_rew->u.HTTP_Response;
+ BOOST_CHECK(hres);
+
+ z_GDU(enc, &gdu_res_rew, 0, 0);
+ char *resp_result;
+ int resp_result_len;
+ resp_result = odr_getbuf(enc, &resp_result_len, 0);
+
+ int equal = ((size_t) resp_result_len == strlen(resp_expected))
+ && !memcmp(resp_result, resp_expected, resp_result_len);
+ BOOST_CHECK(equal);
+
+ if (!equal)
+ {
+ //compare buffers
+ std::cout << "Expected result:\n" << resp_expected << "\n";
+ std::cout << "Got result:\n" << "\n";
+ fflush(stdout);
+ fwrite(resp_result, 1, resp_result_len, stdout);
+ fflush(stdout);
+ std::cout << "\nGot result buf len: " << resp_result_len
+ << "\n";
+ }
+ }