From 27f8b2ba4aa80c97f950d16f35319110d962a183 Mon Sep 17 00:00:00 2001 From: Will Sobel Date: Mon, 5 Dec 2022 18:56:49 -0800 Subject: [PATCH] Added test and verified use of assets and no device or type supplied --- src/sink/rest_sink/rest_service.cpp | 46 ++++++++++++++++++----------- test/agent_test.cpp | 19 ++++++++++++ 2 files changed, 47 insertions(+), 18 deletions(-) diff --git a/src/sink/rest_sink/rest_service.cpp b/src/sink/rest_sink/rest_service.cpp index e72c3a49e..3704000af 100644 --- a/src/sink/rest_sink/rest_service.cpp +++ b/src/sink/rest_sink/rest_service.cpp @@ -504,25 +504,31 @@ namespace mtconnect { return true; }; - for (const auto &t : list {boost::beast::http::verb::put, - boost::beast::http::verb::post}) + for (const auto &asset : list {"asset", "assets"}) { - m_server->addRouting({t, "/asset/{uuid}?device={string}&type={string}", putHandler}); - m_server->addRouting({t, "/asset?device={string}&type={string}", putHandler}); - m_server->addRouting({t, "/{device}/asset/{uuid}?type={string}", putHandler}); - m_server->addRouting({t, "/{device}/asset?type={string}", putHandler}); - } + for (const auto &t : list {boost::beast::http::verb::put, + boost::beast::http::verb::post}) + { + m_server->addRouting( + {t, "/" + asset + "/{uuid}?device={string}&type={string}", putHandler}); + m_server->addRouting({t, "/" + asset + "?device={string}&type={string}", putHandler}); + m_server->addRouting({t, "/{device}/" + asset + "/{uuid}?type={string}", putHandler}); + m_server->addRouting({t, "/{device}/" + asset + "?type={string}", putHandler}); + } - m_server->addRouting({boost::beast::http::verb::delete_, - "/asset?&device={string}&type={string}", deleteHandler}); - m_server->addRouting({boost::beast::http::verb::delete_, - "/asset?&device={string}&type={string}", deleteHandler}); - m_server->addRouting({boost::beast::http::verb::delete_, "/asset/{asset}", deleteHandler}); - m_server->addRouting({boost::beast::http::verb::delete_, "/asset/{asset}", deleteHandler}); - m_server->addRouting( - {boost::beast::http::verb::delete_, "/{device}/asset?type={string}", deleteHandler}); - m_server->addRouting( - {boost::beast::http::verb::delete_, "/{device}/asset?type={string}", deleteHandler}); + m_server->addRouting({boost::beast::http::verb::delete_, + "/" + asset + "?&device={string}&type={string}", deleteHandler}); + m_server->addRouting({boost::beast::http::verb::delete_, + "/" + asset + "?&device={string}&type={string}", deleteHandler}); + m_server->addRouting( + {boost::beast::http::verb::delete_, "/" + asset + "/{asset}", deleteHandler}); + m_server->addRouting( + {boost::beast::http::verb::delete_, "/" + asset + "/{asset}", deleteHandler}); + m_server->addRouting({boost::beast::http::verb::delete_, + "/{device}/" + asset + "?type={string}", deleteHandler}); + m_server->addRouting({boost::beast::http::verb::delete_, + "/{device}/" + asset + "?type={string}", deleteHandler}); + } } } @@ -1059,7 +1065,11 @@ namespace mtconnect { using namespace rest_sink; entity::ErrorList errors; - auto dev = checkDevice(printer, *device); + DevicePtr dev; + if (device) + dev = checkDevice(printer, *device); + else + dev = m_sinkContract->defaultDevice(); auto ap = m_loopback->receiveAsset(dev, asset, uuid, type, nullopt, errors); if (!ap || errors.size() > 0 || (type && ap->getType() != *type)) { diff --git a/test/agent_test.cpp b/test/agent_test.cpp index d96807260..eaae53269 100644 --- a/test/agent_test.cpp +++ b/test/agent_test.cpp @@ -2851,3 +2851,22 @@ TEST_F(AgentTest, asset_count_should_track_asset_additions_by_type) ASSERT_XML_PATH_EQUAL(doc, "//m:AssetCountDataSet/m:Entry[@key='PartThing']", "1"); } } + +TEST_F(AgentTest, asset_should_also_work_using_post_with_assets) +{ + auto agent = m_agentTestHelper->createAgent("/samples/test_config.xml", 8, 4, "2.0", 4, true); + + string body = "TEST 1"; + QueryMap queries; + const auto &storage = agent->getAssetStorage(); + + { + PARSE_XML_RESPONSE_PUT("/assets", body, queries); + ASSERT_EQ((unsigned int)1, storage->getCount()); + } + { + PARSE_XML_RESPONSE_PUT("/assets/P2", body, queries); + ASSERT_EQ((unsigned int)2, storage->getCount()); + } + +}