1 /* $Id: test_filter_bounce.cpp,v 1.4 2007-11-02 17:47:41 adam Exp $
2 Copyright (c) 2005-2007, Index Data.
4 This file is part of Metaproxy.
6 Metaproxy is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 2, or (at your option) any later
11 Metaproxy is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 You should have received a copy of the GNU General Public License
17 along with Metaproxy; see the file LICENSE. If not, write to the
18 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
23 #include "filter_bounce.hpp"
25 #include "gduutil.hpp"
26 //#include "sru_util.hpp"
27 #include "router_chain.hpp"
28 #include "session.hpp"
29 #include "package.hpp"
34 #define BOOST_AUTO_TEST_MAIN
35 #define BOOST_TEST_DYN_LINK
36 #include <boost/test/auto_unit_test.hpp>
41 using namespace boost::unit_test;
43 namespace mp = metaproxy_1;
44 using namespace mp::util;
46 void check_bounce_z3950(mp::RouterChain &router, int request, int response)
51 std::cout << "check_bounce_z3950\n";
53 // Create package with Z39.50 init request in it
57 Z_APDU *apdu = zget_APDU(odr, request);
59 pack.request() = apdu;
62 pack.router(router).move();
64 // Inspect bounced back request
65 yazpp_1::GDU *gdu_req = &pack.request();
66 yazpp_1::GDU *gdu_res = &pack.response();
68 Z_GDU *z_gdu_req = gdu_req->get();
69 Z_GDU *z_gdu_res = gdu_res->get();
71 BOOST_CHECK(z_gdu_req);
74 std::cout << "Z_GDU " << *(z_gdu_req) << "\n";
75 BOOST_CHECK_EQUAL(z_gdu_req->which, Z_GDU_Z3950);
76 BOOST_CHECK_EQUAL(z_gdu_req->u.z3950->which, request);
79 BOOST_CHECK(z_gdu_res);
82 std::cout << "Z_GDU " << *(z_gdu_res) << "\n";
83 BOOST_CHECK_EQUAL(z_gdu_res->which, Z_GDU_Z3950);
84 BOOST_CHECK_EQUAL(z_gdu_res->u.z3950->which, response);
88 void check_bounce_http(mp::RouterChain &router)
93 std::cout << "check_bounce_http\n";
95 // Create package with Z39.50 init request in it
99 Z_GDU *gdu = z_get_HTTP_Request(odr);
100 //z_get_HTTP_Request_host_path(odr, host, path);
101 pack.request() = gdu;
104 pack.router(router).move();
106 // Inspect bounced back request
107 yazpp_1::GDU *gdu_req = &pack.request();
108 yazpp_1::GDU *gdu_res = &pack.response();
110 Z_GDU *z_gdu_req = gdu_req->get();
111 Z_GDU *z_gdu_res = gdu_res->get();
113 BOOST_CHECK(z_gdu_req);
116 std::cout << "Z_GDU " << *(z_gdu_req) << "\n";
117 BOOST_CHECK_EQUAL(z_gdu_req->which, Z_GDU_HTTP_Request);
120 BOOST_CHECK(z_gdu_res);
123 std::cout << "Z_GDU " << *(z_gdu_res) << "\n";
124 BOOST_CHECK_EQUAL(z_gdu_res->which, Z_GDU_HTTP_Response);
128 BOOST_AUTO_TEST_CASE( test_filter_bounce_1 )
132 mp::filter::Bounce f_bounce;
139 BOOST_AUTO_TEST_CASE( test_filter_bounce_2 )
143 mp::RouterChain router;
144 mp::filter::Bounce f_bounce;
145 router.append(f_bounce);
147 check_bounce_z3950(router,
148 Z_APDU_initRequest, Z_APDU_close);
149 //check_bounce_z3950(router,
150 // Z_APDU_searchRequest, Z_APDU_close);
151 check_bounce_z3950(router,
152 Z_APDU_presentRequest, Z_APDU_close);
153 check_bounce_z3950(router,
154 Z_APDU_deleteResultSetRequest, Z_APDU_close);
155 //check_bounce_z3950(router,
156 // Z_APDU_accessControlRequest, Z_APDU_close);
157 check_bounce_z3950(router,
158 Z_APDU_resourceControlRequest, Z_APDU_close);
159 check_bounce_z3950(router,
160 Z_APDU_triggerResourceControlRequest, Z_APDU_close);
161 check_bounce_z3950(router,
162 Z_APDU_resourceReportRequest, Z_APDU_close);
163 //check_bounce_z3950(router,
164 // Z_APDU_scanRequest, Z_APDU_close);
165 //check_bounce_z3950(router,
166 // Z_APDU_sortRequest, Z_APDU_close);
167 check_bounce_z3950(router,
168 Z_APDU_segmentRequest, Z_APDU_close);
169 //check_bounce_z3950(router,
170 // Z_APDU_extendedServicesRequest, Z_APDU_close);
171 check_bounce_z3950(router,
172 Z_APDU_close , Z_APDU_close);
173 //check_bounce_z3950(router,
174 // Z_APDU_duplicateDetectionRequest, Z_APDU_close);
183 BOOST_AUTO_TEST_CASE( test_filter_bounce_3 )
187 mp::RouterChain router;
188 mp::filter::Bounce f_bounce;
189 router.append(f_bounce);
191 check_bounce_http(router);
202 * indent-tabs-mode: nil
203 * c-file-style: "stroustrup"
205 * vim: shiftwidth=4 tabstop=8 expandtab