From 36a84ab7a886060af49412f1a14c52310f7260a3 Mon Sep 17 00:00:00 2001 From: dated Date: Mon, 9 Sep 2019 15:43:23 +0200 Subject: [PATCH] feat: transactions/fees endpoint --- src/api/paths.cpp | 11 +++++++ src/api/transactions/transactions.cpp | 7 +++++ src/include/cpp-client/api/paths.h | 1 + .../api/transactions/transactions.h | 2 ++ test/api/paths.cpp | 3 ++ test/api/transactions.cpp | 30 +++++++++++++++++++ test/mocks/mock_api.h | 1 + 7 files changed, 55 insertions(+) diff --git a/src/api/paths.cpp b/src/api/paths.cpp index 44525849..a87ba3e8 100644 --- a/src/api/paths.cpp +++ b/src/api/paths.cpp @@ -316,6 +316,17 @@ std::string Transactions::types(Host& newHost) { /**/ +std::string Transactions::fees(Host& newHost) { + std::string url; + url.reserve(URL_MAX_LEN); + url += newHost.toString().c_str(); + url += Transactions::base(); + url += "/fees"; + return url; +} + +/**/ + std::pair Transactions::search( Host& newHost, const std::map& bodyParameters, diff --git a/src/api/transactions/transactions.cpp b/src/api/transactions/transactions.cpp index 894b29d3..315db222 100644 --- a/src/api/transactions/transactions.cpp +++ b/src/api/transactions/transactions.cpp @@ -43,6 +43,13 @@ std::string Transactions::types() { return http_->get(paths::Transactions::types(this->host_).c_str()); } + +/**/ + +std::string Transactions::fees() { + return http_->get(paths::Transactions::fees(this->host_).c_str()); +} + /**/ std::string Transactions::search( diff --git a/src/include/cpp-client/api/paths.h b/src/include/cpp-client/api/paths.h index e8d56201..6df2249d 100644 --- a/src/include/cpp-client/api/paths.h +++ b/src/include/cpp-client/api/paths.h @@ -77,6 +77,7 @@ struct Transactions { static std::string get(Host& newHost, const char* const identifier); static std::string allUnconfirmed(Host& newHost, const char* const query = DEFAULT_QUERY); static std::string types(Host& newHost); + static std::string fees(Host& newHost); static std::pair search(Host& newHost, const std::map& bodyParameters, const char* const query = DEFAULT_QUERY); diff --git a/src/include/cpp-client/api/transactions/transactions.h b/src/include/cpp-client/api/transactions/transactions.h index c96eacb1..1859448e 100644 --- a/src/include/cpp-client/api/transactions/transactions.h +++ b/src/include/cpp-client/api/transactions/transactions.h @@ -29,6 +29,7 @@ class ITransactions : public Base { virtual std::string all(const char* const query) = 0; virtual std::string allUnconfirmed(const char* const query) = 0; virtual std::string types() = 0; + virtual std::string fees() = 0; virtual std::string search(const std::map& bodyParameters, const char* const query) = 0; virtual std::string send(std::string& jsonTransaction) = 0; @@ -47,6 +48,7 @@ class Transactions : public ITransactions { std::string all(const char* const query) override; std::string allUnconfirmed(const char* const query) override; std::string types() override; + std::string fees() override; std::string search(const std::map& bodyParameters, const char* const query) override; std::string send(std::string& jsonTransaction) override; }; diff --git a/test/api/paths.cpp b/test/api/paths.cpp index 26ae67f9..37fc2a0e 100644 --- a/test/api/paths.cpp +++ b/test/api/paths.cpp @@ -138,6 +138,9 @@ TEST(paths, test_transactions) { // NOLINT const auto types = paths::Transactions::types(testHost); ASSERT_STREQ("0.0.0.0:4003/api/transactions/types", types.c_str()); + const auto fees = paths::Transactions::fees(testHost); + ASSERT_STREQ("0.0.0.0:4003/api/transactions/fees", fees.c_str()); + const std::map searchBody = { { "id", "dummy" }, { "key", "value" } diff --git a/test/api/transactions.cpp b/test/api/transactions.cpp index fbf3b093..8a6847ec 100644 --- a/test/api/transactions.cpp +++ b/test/api/transactions.cpp @@ -88,6 +88,36 @@ TEST(api, test_transaction_types) { // NOLINT /**/ +TEST(api, test_transaction_fees) { // NOLINT + Ark::Client::Connection connection(tIp, tPort); + + const std::string expected_response = R"({ + "data": { + "transfer": 10000000, + "secondSignature": 500000000, + "delegateRegistration": 2500000000, + "vote": 100000000, + "multiSignature": 500000000, + "ipfs": 0, + "timelockTransfer": 0, + "multiPayment": 0, + "delegateResignation": 2500000000 + } + })"; + + EXPECT_CALL(connection.api.transactions, fees()) + .Times(1) + .WillOnce(Return(expected_response)); + + const auto fees = connection.api.transactions.fees(); + + auto responseMatches = strcmp(expected_response.c_str(), + fees.c_str()) == 0; + ASSERT_TRUE(responseMatches); +} + +/**/ + TEST(api, test_transaction_unconfirmed) { // NOLINT Ark::Client::Connection connection(tIp, tPort); diff --git a/test/mocks/mock_api.h b/test/mocks/mock_api.h index 2af38c48..c85be8c5 100644 --- a/test/mocks/mock_api.h +++ b/test/mocks/mock_api.h @@ -79,6 +79,7 @@ class MockTransactions : public Ark::Client::api::ITransactions { // NOLINT MOCK_METHOD1(all, std::string(const char* const)); MOCK_METHOD1(allUnconfirmed, std::string(const char* const)); MOCK_METHOD0(types, std::string()); + MOCK_METHOD0(fees, std::string()); MOCK_METHOD2(search, std::string(const std::map&, const char* const)); MOCK_METHOD1(send, std::string(std::string&)); };