blob: bdaf5f041a3b7be06234b6f8cfd48e203c63e88b [file] [log] [blame]
#include "config.h"
#include "iei_oem.hpp"
#include "mocked_sdbus.hpp"
#include "mocked_utils.hpp"
#include "sdbus_wrapper.hpp"
#include <ipmid/api.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
using ::testing::_;
using ::testing::Invoke;
using ::testing::IsNull;
using ::testing::Return;
using ::testing::StrEq;
using ::testing::VariantWith;
namespace ipmi
{
void parseBIOSInfo(const std::vector<uint8_t>& data);
}
void ipmi_register_callback(ipmi_netfn_t, ipmi_cmd_t, ipmi_context_t,
ipmid_callback_t, ipmi_cmd_privilege_t)
{
// Empty
}
class TestIpmiOem : public ::testing::Test
{
public:
TestIpmiOem() :
mockedUtils(
reinterpret_cast<const utils::MockedUtils&>(utils::getUtils()))
{}
virtual ~TestIpmiOem()
{
utils::freeUtils();
clearMockedBus();
}
sdbusplus::bus::bus& mockedBus = getBus();
const utils::MockedUtils& mockedUtils;
};
TEST_F(TestIpmiOem, Empty)
{
// Empty
}
TEST_F(TestIpmiOem, parseBIOSInfoEmpty)
{
EXPECT_CALL(mockedUtils, setPropertyImpl(_, _, _, _, _, _)).Times(0);
ipmi::parseBIOSInfo({});
}
TEST_F(TestIpmiOem, parseBIOSInfoValidBIOSVersion)
{
std::vector<uint8_t> data{
0x00, 0x30, 0x31, 0x2e, 0x30, 0x31, 0x2e, 0x30, 0x31, 0x2e,
0x30, 0x31, 0x2e, 0x30, 0x31, 0x00, 0x30, 0x38, 0x2f, 0x31,
0x31, 0x2f, 0x32, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x3a,
0x31, 0x39, 0x3a, 0x33, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
std::string dummyService = "com.test.bios.version";
std::string expectedVersion = "01.01.01.01.01";
EXPECT_CALL(mockedUtils,
getService(_, StrEq(BIOS_OBJPATH), StrEq(VERSION_IFACE)))
.WillOnce(Return(dummyService));
EXPECT_CALL(
mockedUtils,
setPropertyImpl(_, StrEq(dummyService), StrEq(BIOS_OBJPATH),
StrEq(VERSION_IFACE), StrEq(VERSION),
VariantWith<std::string>(StrEq(expectedVersion))))
.Times(1);
ipmi::parseBIOSInfo(data);
}