1 /* $Id: test_filter_bounce.cpp,v 1.2 2007-01-25 14:05:54 adam Exp $
2 Copyright (c) 2005-2007, Index Data.
4 See the LICENSE file for details
8 #include "filter_bounce.hpp"
10 #include "gduutil.hpp"
11 //#include "sru_util.hpp"
12 #include "router_chain.hpp"
13 #include "session.hpp"
14 #include "package.hpp"
19 #define BOOST_AUTO_TEST_MAIN
20 #include <boost/test/auto_unit_test.hpp>
25 using namespace boost::unit_test;
27 namespace mp = metaproxy_1;
28 using namespace mp::util;
30 void check_bounce_z3950(mp::RouterChain &router, int request, int response)
35 std::cout << "check_bounce_z3950\n";
37 // Create package with Z39.50 init request in it
41 Z_APDU *apdu = zget_APDU(odr, request);
43 pack.request() = apdu;
46 pack.router(router).move();
48 // Inspect bounced back request
49 yazpp_1::GDU *gdu_req = &pack.request();
50 yazpp_1::GDU *gdu_res = &pack.response();
52 Z_GDU *z_gdu_req = gdu_req->get();
53 Z_GDU *z_gdu_res = gdu_res->get();
55 BOOST_CHECK(z_gdu_req);
58 std::cout << "Z_GDU " << *(z_gdu_req) << "\n";
59 BOOST_CHECK_EQUAL(z_gdu_req->which, Z_GDU_Z3950);
60 BOOST_CHECK_EQUAL(z_gdu_req->u.z3950->which, request);
63 BOOST_CHECK(z_gdu_res);
66 std::cout << "Z_GDU " << *(z_gdu_res) << "\n";
67 BOOST_CHECK_EQUAL(z_gdu_res->which, Z_GDU_Z3950);
68 BOOST_CHECK_EQUAL(z_gdu_res->u.z3950->which, response);
72 void check_bounce_http(mp::RouterChain &router)
77 std::cout << "check_bounce_http\n";
79 // Create package with Z39.50 init request in it
83 Z_GDU *gdu = z_get_HTTP_Request(odr);
84 //z_get_HTTP_Request_host_path(odr, host, path);
88 pack.router(router).move();
90 // Inspect bounced back request
91 yazpp_1::GDU *gdu_req = &pack.request();
92 yazpp_1::GDU *gdu_res = &pack.response();
94 Z_GDU *z_gdu_req = gdu_req->get();
95 Z_GDU *z_gdu_res = gdu_res->get();
97 BOOST_CHECK(z_gdu_req);
100 std::cout << "Z_GDU " << *(z_gdu_req) << "\n";
101 BOOST_CHECK_EQUAL(z_gdu_req->which, Z_GDU_HTTP_Request);
104 BOOST_CHECK(z_gdu_res);
107 std::cout << "Z_GDU " << *(z_gdu_res) << "\n";
108 BOOST_CHECK_EQUAL(z_gdu_res->which, Z_GDU_HTTP_Response);
112 BOOST_AUTO_UNIT_TEST( test_filter_bounce_1 )
116 mp::filter::Bounce f_bounce;
123 BOOST_AUTO_UNIT_TEST( test_filter_bounce_2 )
127 mp::RouterChain router;
128 mp::filter::Bounce f_bounce;
129 router.append(f_bounce);
131 check_bounce_z3950(router,
132 Z_APDU_initRequest, Z_APDU_close);
133 //check_bounce_z3950(router,
134 // Z_APDU_searchRequest, Z_APDU_close);
135 check_bounce_z3950(router,
136 Z_APDU_presentRequest, Z_APDU_close);
137 check_bounce_z3950(router,
138 Z_APDU_deleteResultSetRequest, Z_APDU_close);
139 //check_bounce_z3950(router,
140 // Z_APDU_accessControlRequest, Z_APDU_close);
141 check_bounce_z3950(router,
142 Z_APDU_resourceControlRequest, Z_APDU_close);
143 check_bounce_z3950(router,
144 Z_APDU_triggerResourceControlRequest, Z_APDU_close);
145 check_bounce_z3950(router,
146 Z_APDU_resourceReportRequest, Z_APDU_close);
147 //check_bounce_z3950(router,
148 // Z_APDU_scanRequest, Z_APDU_close);
149 //check_bounce_z3950(router,
150 // Z_APDU_sortRequest, Z_APDU_close);
151 check_bounce_z3950(router,
152 Z_APDU_segmentRequest, Z_APDU_close);
153 //check_bounce_z3950(router,
154 // Z_APDU_extendedServicesRequest, Z_APDU_close);
155 check_bounce_z3950(router,
156 Z_APDU_close , Z_APDU_close);
157 //check_bounce_z3950(router,
158 // Z_APDU_duplicateDetectionRequest, Z_APDU_close);
167 BOOST_AUTO_UNIT_TEST( test_filter_bounce_3 )
171 mp::RouterChain router;
172 mp::filter::Bounce f_bounce;
173 router.append(f_bounce);
175 check_bounce_http(router);
186 * indent-tabs-mode: nil
187 * c-file-style: "stroustrup"
189 * vim: shiftwidth=4 tabstop=8 expandtab