rest_tests.cpp raw

   1  // Copyright (c) 2012-2022 The Limenka 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()
  49