Bitcoin Core
31.1.0
P2P Digital Currency
Toggle main menu visibility
Loading...
Searching...
No Matches
src
test
httpserver_tests.cpp
Go to the documentation of this file.
1
// Copyright (c) 2012-present 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 <
httpserver.h
>
6
#include <
test/util/common.h
>
7
#include <
test/util/setup_common.h
>
8
9
#include <boost/test/unit_test.hpp>
10
11
BOOST_FIXTURE_TEST_SUITE
(httpserver_tests,
BasicTestingSetup
)
12
13
BOOST_AUTO_TEST_CASE
(test_query_parameters)
14
{
15
std::string uri {};
16
17
// No parameters
18
uri =
"localhost:8080/rest/headers/someresource.json"
;
19
BOOST_CHECK
(!
GetQueryParameterFromUri
(uri.c_str(),
"p1"
).has_value());
20
21
// Single parameter
22
uri =
"localhost:8080/rest/endpoint/someresource.json?p1=v1"
;
23
BOOST_CHECK_EQUAL
(
GetQueryParameterFromUri
(uri.c_str(),
"p1"
).value(),
"v1"
);
24
BOOST_CHECK
(!
GetQueryParameterFromUri
(uri.c_str(),
"p2"
).has_value());
25
26
// Multiple parameters
27
uri =
"/rest/endpoint/someresource.json?p1=v1&p2=v2"
;
28
BOOST_CHECK_EQUAL
(
GetQueryParameterFromUri
(uri.c_str(),
"p1"
).value(),
"v1"
);
29
BOOST_CHECK_EQUAL
(
GetQueryParameterFromUri
(uri.c_str(),
"p2"
).value(),
"v2"
);
30
31
// If the query string contains duplicate keys, the first value is returned
32
uri =
"/rest/endpoint/someresource.json?p1=v1&p1=v2"
;
33
BOOST_CHECK_EQUAL
(
GetQueryParameterFromUri
(uri.c_str(),
"p1"
).value(),
"v1"
);
34
35
// Invalid query string syntax is the same as not having parameters
36
uri =
"/rest/endpoint/someresource.json&p1=v1&p2=v2"
;
37
BOOST_CHECK
(!
GetQueryParameterFromUri
(uri.c_str(),
"p1"
).has_value());
38
39
// URI with invalid characters (%) raises a runtime error regardless of which query parameter is queried
40
uri =
"/rest/endpoint/someresource.json&p1=v1&p2=v2%"
;
41
BOOST_CHECK_EXCEPTION(
GetQueryParameterFromUri
(uri.c_str(),
"p1"
), std::runtime_error,
HasReason
(
"URI parsing failed, it likely contained RFC 3986 invalid characters"
));
42
}
43
BOOST_AUTO_TEST_SUITE_END
()
HasReason
BOOST_CHECK_EXCEPTION predicates to check the specific validation error.
Definition
common.h:18
BOOST_FIXTURE_TEST_SUITE
BOOST_FIXTURE_TEST_SUITE(cuckoocache_tests, BasicTestingSetup)
Test Suite for CuckooCache.
BOOST_AUTO_TEST_SUITE_END
BOOST_AUTO_TEST_SUITE_END()
GetQueryParameterFromUri
std::optional< std::string > GetQueryParameterFromUri(const char *uri, const std::string &key)
Get the query parameter value from request uri for a specified key, or std::nullopt if the key is not...
Definition
httpserver.cpp:661
httpserver.h
BOOST_AUTO_TEST_CASE
BOOST_AUTO_TEST_CASE(ipc_tests)
Definition
ipc_tests.cpp:13
BOOST_CHECK_EQUAL
#define BOOST_CHECK_EQUAL(v1, v2)
Definition
object.cpp:17
BOOST_CHECK
#define BOOST_CHECK(expr)
Definition
object.cpp:16
setup_common.h
BasicTestingSetup
Basic testing setup.
Definition
setup_common.h:64
common.h
Generated on
for Bitcoin Core by
1.17.0