Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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]`
Expand Down
4 changes: 2 additions & 2 deletions src/json_types/lifecycle.h
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand Down
4 changes: 3 additions & 1 deletion test/json_engine.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
*/
#pragma once

#include "gtest/gtest.h"
#include <firebolt/types.h>
#include <fstream>
#include <gtest/gtest.h>
#include <iostream>
#include <nlohmann/json-schema.hpp>
#include <nlohmann/json.hpp>
Expand Down Expand Up @@ -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;
Expand Down
7 changes: 7 additions & 0 deletions test/unit/discoveryTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@

#include "discovery_impl.h"
#include "json_engine.h"
#include "json_types/common.h"
#include "mock_helper.h"
#include <firebolt/json_types.h>

Expand All @@ -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");
Expand Down
7 changes: 7 additions & 0 deletions test/unit/lifecycleTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

#include "json_types/lifecycle.h"
#include "lifecycle_impl.h"
#include "mock_helper.h"

Expand All @@ -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;
Expand Down
6 changes: 6 additions & 0 deletions test/unit/metricsTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
* SPDX-License-Identifier: Apache-2.0
*/

#include "json_types/metrics.h"
#include "metrics_impl.h"
#include "mock_helper.h"

Expand All @@ -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");
Expand Down
26 changes: 26 additions & 0 deletions test/unit/mock_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,9 @@
#pragma once

#include "json_engine.h"
#include <algorithm>
#include <firebolt/helpers.h>
#include <firebolt/json_types.h>
#include <gmock/gmock.h>

class MockHelper : public Firebolt::Helpers::IHelper
Expand All @@ -46,6 +48,30 @@ class MockHelper : public Firebolt::Helpers::IHelper
class MockBase
{
protected:
template <typename T>
void validate_enum(const std::string& enumName, const nlohmann::json& enums,
const Firebolt::JSON::EnumType<T>& 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<std::string>(); });
EXPECT_TRUE(it != enumType.end())
<< "An enum: " << enumValue.get<std::string>() << " from OpenRPC schema for enum: " << enumName
<< " is not defined in sources";
}
}
template <typename T> void validate_enum(const std::string& enumName, const Firebolt::JSON::EnumType<T>& enumType)
{
validate_enum(enumName, jsonEngine["components"]["schemas"][enumName]["enum"], enumType);
}

Firebolt::Result<nlohmann::json> getter(const std::string& methodName, const nlohmann::json& parameters)
{
nlohmann::json message;
Expand Down
6 changes: 6 additions & 0 deletions test/unit/textToSpeechTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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");
Expand Down
Loading