diff --git a/include/up-cpp/utils/ProtoConverter.h b/include/up-cpp/utils/ProtoConverter.h index eb297a0ad..f3ebb1d22 100644 --- a/include/up-cpp/utils/ProtoConverter.h +++ b/include/up-cpp/utils/ProtoConverter.h @@ -56,13 +56,51 @@ struct ProtoConverter { /// @param subscription_topic the UUri of the topic to unsubscribe from /// @return the built UnsubscribeRequest static UnsubscribeRequest BuildUnSubscribeRequest( - const v1::UUri& subscription_topic);UnsubscribeRequest BuildUnSubscribeRequest(const v1::UUri& uri, const SubscribeAttributes& attributes); + const v1::UUri& subscription_topic); + static UnsubscribeRequest BuildUnSubscribeRequest(const v1::UUri& uri, const SubscribeAttributes& attributes); template - static utils::Expected extractFromProtobuf(const v1::UMessage& message); - + static utils::Expected extractFromProtobuf(const v1::UMessage& message) + { + google::protobuf::Any any; + + if (!any.ParseFromString(message.payload())) { + v1::UStatus status; + status.set_code(v1::UCode::INTERNAL); + status.set_message("extractFromProtobuf: Error when parsing payload."); + return utils::Expected( + utils::Unexpected(status)); + } + + T response; + + if (!any.UnpackTo(&response)) { + v1::UStatus status; + status.set_code(v1::UCode::INTERNAL); + status.set_message("extractFromProtobuf: Error when unpacking any."); + return utils::Expected( + utils::Unexpected(status)); + } + + return Expected(response); + } + template - static utils::Expected protoToPayload(const T& proto); + static utils::Expected protoToPayload(const T& proto) { + google::protobuf::Any any; + + if (!any.PackFrom(proto)) { + v1::UStatus status; + status.set_code(v1::UCode::INTERNAL); + status.set_message("protoToPayload: There was an error when serializing the subscription request."); + return utils::Expected( + utils::Unexpected(status)); + } + + const datamodel::builder::Payload payload(any); + + return utils::Expected(payload); + } }; }; // namespace uprotocol::utils diff --git a/src/utils/ProtoConverter.cpp b/src/utils/ProtoConverter.cpp index 9726fee3f..f62e20407 100644 --- a/src/utils/ProtoConverter.cpp +++ b/src/utils/ProtoConverter.cpp @@ -81,43 +81,4 @@ UnsubscribeRequest ProtoConverter::BuildUnSubscribeRequest( return unsubscribe_request; } -template -utils::Expected ProtoConverter::extractFromProtobuf(const v1::UMessage& message) { - google::protobuf::Any any; - - if (!any.ParseFromString(message.payload())) { - spdlog::error("extractFromProtobuf: Error parsing response payload."); - } - - T response; - - if (!any.UnpackTo(&response)) { - v1::UStatus status; - status.set_code(v1::UCode::INTERNAL); - status.set_message("extractFromProtobuf: Error when unpacking any."); - return utils::Expected( - utils::Unexpected(status)); - } - - return response; -} - -template -utils::Expected protoToPayload(const T& proto){ - - google::protobuf::Any any; - - if (!any.PackFrom(proto)) { - v1::UStatus status; - status.set_code(v1::UCode::INTERNAL); - status.set_message("protoToPayload: There was an error when serializing the subscription request."); - return utils::Expected( - utils::Unexpected(status)); - } - - datamodel::builder::Payload payload(any); - - return utils::Expected(payload); -} - } // namespace uprotocol::utils diff --git a/test/coverage/client/usubscription/v3/RpcClientUSubscriptionTest.cpp b/test/coverage/client/usubscription/v3/RpcClientUSubscriptionTest.cpp index b5290d707..bdaa2c36a 100644 --- a/test/coverage/client/usubscription/v3/RpcClientUSubscriptionTest.cpp +++ b/test/coverage/client/usubscription/v3/RpcClientUSubscriptionTest.cpp @@ -94,17 +94,17 @@ class RpcClientUSubscriptionTest : public testing::Test { ~RpcClientUSubscriptionTest() override = default; }; -// Negative test case with no source filter -// TEST_F(RpcClientUSubscriptionTest, ConstructorTestSuccess) { // NOLINT +//Negative test case with no source filter +TEST_F(RpcClientUSubscriptionTest, ConstructorTestSuccess) { // NOLINT - // auto rpc_client_usubscription = std::make_unique< - // uprotocol::core::usubscription::v3::RpcClientUSubscription>( - // getMockTransportClient()); + auto rpc_client_usubscription = std::make_unique< + uprotocol::core::usubscription::v3::RpcClientUSubscription>( + getMockTransportClient()); // Verify that the RpcClientUSubscription pointer is not null, indicating // successful - // ASSERT_NE(rpc_client_usubscription, nullptr); -// } + ASSERT_NE(rpc_client_usubscription, nullptr); +} // TEST_F(RpcClientUSubscriptionTest, SubscribeTestSuccess) { // NOLINT //