rest_tests.cpp
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 BOOST_FIXTURE_TEST_SUITE(rest_tests, BasicTestingSetup) 13 14 BOOST_AUTO_TEST_CASE(test_query_string) 15 { 16 std::string param; 17 RESTResponseFormat rf; 18 // No query string 19 rf = ParseDataFormat(param, "/rest/endpoint/someresource.json"); 20 BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 21 BOOST_CHECK_EQUAL(rf, RESTResponseFormat::JSON); 22 23 // Query string with single parameter 24 rf = ParseDataFormat(param, "/rest/endpoint/someresource.bin?p1=v1"); 25 BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 26 BOOST_CHECK_EQUAL(rf, RESTResponseFormat::BINARY); 27 28 // Query string with multiple parameters 29 rf = ParseDataFormat(param, "/rest/endpoint/someresource.hex?p1=v1&p2=v2"); 30 BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 31 BOOST_CHECK_EQUAL(rf, RESTResponseFormat::HEX); 32 33 // Incorrectly formed query string will not be handled 34 rf = ParseDataFormat(param, "/rest/endpoint/someresource.json&p1=v1"); 35 BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource.json&p1=v1"); 36 BOOST_CHECK_EQUAL(rf, RESTResponseFormat::UNDEF); 37 38 // Omitted data format with query string should return UNDEF and hide query string 39 rf = ParseDataFormat(param, "/rest/endpoint/someresource?p1=v1"); 40 BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 41 BOOST_CHECK_EQUAL(rf, RESTResponseFormat::UNDEF); 42 43 // Data format specified after query string 44 rf = ParseDataFormat(param, "/rest/endpoint/someresource?p1=v1.json"); 45 BOOST_CHECK_EQUAL(param, "/rest/endpoint/someresource"); 46 BOOST_CHECK_EQUAL(rf, RESTResponseFormat::UNDEF); 47 } 48 BOOST_AUTO_TEST_SUITE_END()