Line data Source code
1 : // Copyright (c) 2012-2022 The Bitcoin Core developers 2 : // Distributed under the MIT software license, see the accompanying 3 : // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 : 5 : #include <rest.h> 6 : #include <test/util/setup_common.h> 7 : 8 : #include <boost/test/unit_test.hpp> 9 : 10 : #include <string> 11 : 12 146 : BOOST_FIXTURE_TEST_SUITE(rest_tests, BasicTestingSetup) 13 : 14 149 : BOOST_AUTO_TEST_CASE(test_query_string) 15 : { 16 1 : std::string param; 17 : RESTResponseFormat rf; 18 : // No query string 19 1 : rf = ParseDataFormat(param, "/rest/endpoint/someresource.json"); 20 1 : BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 21 1 : BOOST_CHECK_EQUAL(rf, RESTResponseFormat::JSON); 22 : 23 : // Query string with single parameter 24 1 : rf = ParseDataFormat(param, "/rest/endpoint/someresource.bin?p1=v1"); 25 1 : BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 26 1 : BOOST_CHECK_EQUAL(rf, RESTResponseFormat::BINARY); 27 : 28 : // Query string with multiple parameters 29 1 : rf = ParseDataFormat(param, "/rest/endpoint/someresource.hex?p1=v1&p2=v2"); 30 1 : BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 31 1 : BOOST_CHECK_EQUAL(rf, RESTResponseFormat::HEX); 32 : 33 : // Incorrectly formed query string will not be handled 34 1 : rf = ParseDataFormat(param, "/rest/endpoint/someresource.json&p1=v1"); 35 1 : BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource.json&p1=v1"); 36 1 : BOOST_CHECK_EQUAL(rf, RESTResponseFormat::UNDEF); 37 : 38 : // Omitted data format with query string should return UNDEF and hide query string 39 1 : rf = ParseDataFormat(param, "/rest/endpoint/someresource?p1=v1"); 40 1 : BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 41 1 : BOOST_CHECK_EQUAL(rf, RESTResponseFormat::UNDEF); 42 : 43 : // Data format specified after query string 44 1 : rf = ParseDataFormat(param, "/rest/endpoint/someresource?p1=v1.json"); 45 1 : BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 46 1 : BOOST_CHECK_EQUAL(rf, RESTResponseFormat::UNDEF); 47 1 : } 48 146 : BOOST_AUTO_TEST_SUITE_END()