diff --git a/CHANGELOG.md b/CHANGELOG.md index df9c79f..858507e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,9 @@ -## [0.5.3](https://github.com/rdkcentral/firebolt-cpp-client/compare/v0.5.2...0.5.3) +## [0.5.4](https://github.com/rdkcentral/firebolt-cpp-client/compare/v0.5.3...v0.5.4) + +### Fixed +- Enums for Lifecycle.CloseType were not aligned with the spec: `killReload`, `killReactivate` + +## [0.5.3](https://github.com/rdkcentral/firebolt-cpp-client/compare/v0.5.2...v0.5.3) ### Changed - Added protocol selection to the API Test App: `[--legacy | --rpc-v2]` diff --git a/src/json_types/lifecycle.h b/src/json_types/lifecycle.h index 59248f5..acc43dd 100644 --- a/src/json_types/lifecycle.h +++ b/src/json_types/lifecycle.h @@ -27,8 +27,8 @@ namespace Firebolt::Lifecycle::JsonData inline const Firebolt::JSON::EnumType<::Firebolt::Lifecycle::CloseType> CloseReasonEnum({ {"deactivate", ::Firebolt::Lifecycle::CloseType::DEACTIVATE}, {"unload", ::Firebolt::Lifecycle::CloseType::UNLOAD}, - {"kill_reload", ::Firebolt::Lifecycle::CloseType::KILL_RELOAD}, - {"kill_reactivate", ::Firebolt::Lifecycle::CloseType::KILL_REACTIVATE}, + {"killReload", ::Firebolt::Lifecycle::CloseType::KILL_RELOAD}, + {"killReactivate", ::Firebolt::Lifecycle::CloseType::KILL_REACTIVATE}, }); inline const Firebolt::JSON::EnumType<::Firebolt::Lifecycle::LifecycleState> LifecycleStateEnum({ diff --git a/test/json_engine.h b/test/json_engine.h index a26a97c..16fdc82 100644 --- a/test/json_engine.h +++ b/test/json_engine.h @@ -17,9 +17,9 @@ */ #pragma once -#include "gtest/gtest.h" #include #include +#include #include #include #include @@ -66,6 +66,8 @@ class JsonEngine return nlohmann::json{}; } + const nlohmann::json operator[](const std::string& key) { return _data[key]; } + nlohmann::json read_json_from_file() { std::string filename = UT_OPEN_RPC_FILE; diff --git a/test/unit/discoveryTest.cpp b/test/unit/discoveryTest.cpp index 920f6a9..a17086f 100644 --- a/test/unit/discoveryTest.cpp +++ b/test/unit/discoveryTest.cpp @@ -18,6 +18,7 @@ #include "discovery_impl.h" #include "json_engine.h" +#include "json_types/common.h" #include "mock_helper.h" #include @@ -27,6 +28,12 @@ class DiscoveryTest : public ::testing::Test, protected MockBase Firebolt::Discovery::DiscoveryImpl discoveryImpl_{mockHelper}; }; +TEST_F(DiscoveryTest, checkEnums) +{ + validate_enum("AgePolicy", jsonEngine["x-schemas"]["Policies"]["AgePolicy"]["anyOf"][1]["enum"], + Firebolt::JsonData::AgePolicyEnum); +} + TEST_F(DiscoveryTest, watched) { mock("Discovery.watched"); diff --git a/test/unit/lifecycleTest.cpp b/test/unit/lifecycleTest.cpp index 6f75736..6a84e0e 100644 --- a/test/unit/lifecycleTest.cpp +++ b/test/unit/lifecycleTest.cpp @@ -16,6 +16,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "json_types/lifecycle.h" #include "lifecycle_impl.h" #include "mock_helper.h" @@ -37,6 +38,12 @@ class LifecycleTest : public ::testing::Test, protected MockBase Firebolt::Lifecycle::LifecycleImpl lifecycleImpl_{mockHelper}; }; +TEST_F(LifecycleTest, checkEnums) +{ + validate_enum("CloseType", Firebolt::Lifecycle::JsonData::CloseReasonEnum); + validate_enum("LifecycleState", Firebolt::Lifecycle::JsonData::LifecycleStateEnum); +} + TEST_F(LifecycleTest, close) { nlohmann::json expectedParams; diff --git a/test/unit/metricsTest.cpp b/test/unit/metricsTest.cpp index 375ac6b..97471eb 100644 --- a/test/unit/metricsTest.cpp +++ b/test/unit/metricsTest.cpp @@ -16,6 +16,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "json_types/metrics.h" #include "metrics_impl.h" #include "mock_helper.h" @@ -25,6 +26,11 @@ class MetricsTest : public ::testing::Test, protected MockBase Firebolt::Metrics::MetricsImpl metricsImpl_{mockHelper}; }; +TEST_F(MetricsTest, checkEnums) +{ + validate_enum("ErrorType", Firebolt::Metrics::JsonData::ErrorTypeEnum); +} + TEST_F(MetricsTest, Ready) { mock("Metrics.ready"); diff --git a/test/unit/mock_helper.h b/test/unit/mock_helper.h index e0b3ecd..9f9183e 100644 --- a/test/unit/mock_helper.h +++ b/test/unit/mock_helper.h @@ -19,7 +19,9 @@ #pragma once #include "json_engine.h" +#include #include +#include #include class MockHelper : public Firebolt::Helpers::IHelper @@ -46,6 +48,30 @@ class MockHelper : public Firebolt::Helpers::IHelper class MockBase { protected: + template + void validate_enum(const std::string& enumName, const nlohmann::json& enums, + const Firebolt::JSON::EnumType& enumType) + { + for (const auto& expectedValue : enumType) + { + EXPECT_TRUE(std::find(enums.begin(), enums.end(), expectedValue.first) != enums.end()) + << "Expected enum value: " << expectedValue.first + << " not found in OpenRPC schema for enum: " << enumName; + } + for (const auto& enumValue : enums) + { + auto it = std::find_if(enumType.begin(), enumType.end(), [&enumValue](const auto& pair) + { return pair.first == enumValue.get(); }); + EXPECT_TRUE(it != enumType.end()) + << "An enum: " << enumValue.get() << " from OpenRPC schema for enum: " << enumName + << " is not defined in sources"; + } + } + template void validate_enum(const std::string& enumName, const Firebolt::JSON::EnumType& enumType) + { + validate_enum(enumName, jsonEngine["components"]["schemas"][enumName]["enum"], enumType); + } + Firebolt::Result getter(const std::string& methodName, const nlohmann::json& parameters) { nlohmann::json message; diff --git a/test/unit/textToSpeechTest.cpp b/test/unit/textToSpeechTest.cpp index 03ccc33..2579129 100644 --- a/test/unit/textToSpeechTest.cpp +++ b/test/unit/textToSpeechTest.cpp @@ -16,6 +16,7 @@ * SPDX-License-Identifier: Apache-2.0 */ +#include "json_types/texttospeech.h" #include "firebolt/texttospeech.h" #include "json_engine.h" #include "mock_helper.h" @@ -27,6 +28,11 @@ class TextToSpeechTest : public ::testing::Test, protected MockBase Firebolt::TextToSpeech::TextToSpeechImpl ttsImpl{mockHelper}; }; +TEST_F(TextToSpeechTest, checkEnums) +{ + validate_enum("SpeechRate", Firebolt::TextToSpeech::JsonData::SpeechRateEnum); +} + TEST_F(TextToSpeechTest, listVoices) { mock("TextToSpeech.listvoices");