20 #include <ripple/app/misc/NetworkOPs.h>
21 #include <ripple/beast/unit_test.h>
22 #include <ripple/protocol/jss.h>
25 #include <boost/format.hpp>
31 namespace validator_data {
33 "nHBt9fsb4849WmZiCds4r5TXyBeQjqnH5kzPtqgMAQMgi39YZRPa";
36 "eyJ2YWxpZGF0aW9uX3NlY3JldF9rZXkiOiI5ZWQ0NWY4NjYyNDFjYzE4YTI3NDdiNT\n"
37 "QzODdjMDYyNTkwNzk3MmY0ZTcxOTAyMzFmYWE5Mzc0NTdmYTlkYWY2IiwibWFuaWZl\n"
38 "c3QiOiJKQUFBQUFGeEllMUZ0d21pbXZHdEgyaUNjTUpxQzlnVkZLaWxHZncxL3ZDeE\n"
39 "hYWExwbGMyR25NaEFrRTFhZ3FYeEJ3RHdEYklENk9NU1l1TTBGREFscEFnTms4U0tG\n"
40 "bjdNTzJmZGtjd1JRSWhBT25ndTlzQUtxWFlvdUorbDJWMFcrc0FPa1ZCK1pSUzZQU2\n"
41 "hsSkFmVXNYZkFpQnNWSkdlc2FhZE9KYy9hQVpva1MxdnltR21WcmxIUEtXWDNZeXd1\n"
42 "NmluOEhBU1FLUHVnQkQ2N2tNYVJGR3ZtcEFUSGxHS0pkdkRGbFdQWXk1QXFEZWRGdj\n"
43 "VUSmEydzBpMjFlcTNNWXl3TFZKWm5GT3I3QzBrdzJBaVR6U0NqSXpkaXRROD0ifQ==\n";
52 auto p = std::make_unique<Config>();
53 boost::format toLoad(R
"rippleConfig(
71 p->loadFromString(boost::str(
82 using namespace test::jtx;
86 auto const result = env.
rpc(
"server_info");
87 BEAST_EXPECT(!result[jss::result].isMember(jss::error));
88 BEAST_EXPECT(result[jss::result][jss::status] ==
"success");
89 BEAST_EXPECT(result[jss::result].isMember(jss::info));
99 auto const& ports = result[jss::ports];
100 BEAST_EXPECT(ports.isArray() && ports.size() == 0);
105 auto const rpc_port =
106 (*config)[
"port_rpc"].get<
unsigned int>(
"port");
107 auto const grpc_port =
108 (*config)[
"port_grpc"].get<
unsigned int>(
"port");
109 auto const ws_port = (*config)[
"port_ws"].get<
unsigned int>(
"port");
110 BEAST_EXPECT(grpc_port);
111 BEAST_EXPECT(rpc_port);
112 BEAST_EXPECT(ws_port);
114 Env env(*
this, std::move(config));
115 auto const result = env.
rpc(
"server_info");
116 BEAST_EXPECT(!result[jss::result].isMember(jss::error));
117 BEAST_EXPECT(result[jss::result][jss::status] ==
"success");
118 BEAST_EXPECT(result[jss::result].isMember(jss::info));
120 result[jss::result][jss::info][jss::pubkey_validator] ==
123 auto const& ports = result[jss::result][jss::info][jss::ports];
124 BEAST_EXPECT(ports.isArray() && ports.size() == 3);
125 for (
auto const& port : ports)
127 auto const& proto = port[jss::protocol];
128 BEAST_EXPECT(proto.isArray());
129 auto const p = port[jss::port].asUInt();
130 BEAST_EXPECT(p == rpc_port || p == ws_port || p == grpc_port);
133 BEAST_EXPECT(proto.size() == 1);
134 BEAST_EXPECT(proto[0u].asString() ==
"grpc");
138 BEAST_EXPECT(proto.size() == 2);
139 BEAST_EXPECT(proto[0u].asString() ==
"http");
140 BEAST_EXPECT(proto[1u].asString() ==
"ws2");
144 BEAST_EXPECT(proto.size() == 1);
145 BEAST_EXPECT(proto[0u].asString() ==
"ws");