blob: 9b3c56e90bdafe956b7dc678b94319078397c94d [file]
#include "cable.hpp"
#include <memory>
#include <string>
#include <system_error> // NOLINT
#include <gtest/gtest.h>
#include "http_request.hpp"
#include "utility.hpp"
#include "snapshot_fixture.hpp"
#include <nlohmann/json.hpp>
#include "managed_store.hpp"
#include "test/g3/mock_managed_store_test.hpp"
#ifdef SNAPSHOT_FIXTURE_G3
#include "devtools/build/runtime/get_runfiles_dir.h"
#endif
namespace redfish {
namespace {
class SnapshotFixture_CableFru : public redfish::SnapshotFixture {
protected:
static void SetUpTestSuite() {
// Have to manually call this as defining this current function prevents
// its parent's Setup from being called
::managedStore::MockManagedStoreTest::SetUpTestSuite();
#ifdef SNAPSHOT_FIXTURE_G3
std::string snapshotFilepath_cableFruLocal =
::devtools_build::GetDataDependencyFilepath(
"google3/third_party/openbmc_build_scripts/additional/"
"scrubbed_gBMCwebManagedStore_platform5_3_2024_08_26.json");
EXPECT_TRUE(managedStore::GetManagedObjectStore()->deserialize(
snapshotFilepath_cableFruLocal));
#else
EXPECT_TRUE(managedStore::GetManagedObjectStore()->deserialize(
snapshotFilepath_cableFru));
#endif
}
// Use this to create a crow request for use in handlers
static crow::Request CreateRequest(const std::string& reqIn = "") {
// Dont need this error code ever
std::error_code ec;
return crow::Request(reqIn, ec);
}
};
TEST_F(SnapshotFixture_CableFru, handleCableGetTest) {
constexpr char kCable[] = "ioadapter_x16_1";
handleCableGet(app_, CreateRequest(), share_async_resp_, kCable);
RunIoUntilDone();
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.type"], "#Cable.v1_0_0.Cable");
EXPECT_EQ(json["@odata.id"],
crow::utility::urlFromPieces("redfish", "v1", "Cables", kCable));
EXPECT_EQ(json["Id"], kCable);
EXPECT_EQ(json["Name"], "Cable");
EXPECT_EQ(json["Status"]["State"], "Enabled");
EXPECT_TRUE(json.contains("Model"));
EXPECT_TRUE(json.contains("Manufacturer"));
EXPECT_TRUE(json.contains("PartNumber"));
EXPECT_TRUE(json.contains("SerialNumber"));
}
TEST_F(SnapshotFixture_CableFru, getCableChassisAssociationTest) {
constexpr char kCable[] = "NcsiCable";
handleCableGet(app_, CreateRequest(), share_async_resp_, kCable);
RunIoUntilDone();
nlohmann::json& json = share_async_resp_->res.jsonValue;
EXPECT_EQ(json["@odata.type"], "#Cable.v1_0_0.Cable");
EXPECT_EQ(json["@odata.id"],
crow::utility::urlFromPieces("redfish", "v1", "Cables", kCable));
EXPECT_EQ(json["Id"], kCable);
EXPECT_EQ(
json["Links"]["DownstreamChassis"][0]["@odata.id"],
crow::utility::urlFromPieces("redfish", "v1", "Chassis", "chassis3_1"));
EXPECT_EQ(
json["Links"]["UpstreamChassis"][0]["@odata.id"],
crow::utility::urlFromPieces("redfish", "v1", "Chassis", "platform5"));
EXPECT_EQ(json["Name"], "Cable");
EXPECT_EQ(json["Status"]["State"], "Enabled");
EXPECT_TRUE(json.contains("Model"));
}
} // namespace
} // namespace redfish