1*5e70dc8cSNikhil Namjoshi // Copyright 2022 Google LLC
2*5e70dc8cSNikhil Namjoshi //
3*5e70dc8cSNikhil Namjoshi // Licensed under the Apache License, Version 2.0 (the "License");
4*5e70dc8cSNikhil Namjoshi // you may not use this file except in compliance with the License.
5*5e70dc8cSNikhil Namjoshi // You may obtain a copy of the License at
6*5e70dc8cSNikhil Namjoshi //
7*5e70dc8cSNikhil Namjoshi // http://www.apache.org/licenses/LICENSE-2.0
8*5e70dc8cSNikhil Namjoshi //
9*5e70dc8cSNikhil Namjoshi // Unless required by applicable law or agreed to in writing, software
10*5e70dc8cSNikhil Namjoshi // distributed under the License is distributed on an "AS IS" BASIS,
11*5e70dc8cSNikhil Namjoshi // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*5e70dc8cSNikhil Namjoshi // See the License for the specific language governing permissions and
13*5e70dc8cSNikhil Namjoshi // limitations under the License.
14*5e70dc8cSNikhil Namjoshi
15*5e70dc8cSNikhil Namjoshi #include "bmc_mode.hpp"
16*5e70dc8cSNikhil Namjoshi #include "commands.hpp"
17*5e70dc8cSNikhil Namjoshi #include "handler_mock.hpp"
18*5e70dc8cSNikhil Namjoshi #include "helper.hpp"
19*5e70dc8cSNikhil Namjoshi
20*5e70dc8cSNikhil Namjoshi #include <vector>
21*5e70dc8cSNikhil Namjoshi
22*5e70dc8cSNikhil Namjoshi #include <gtest/gtest.h>
23*5e70dc8cSNikhil Namjoshi
24*5e70dc8cSNikhil Namjoshi using ::testing::Return;
25*5e70dc8cSNikhil Namjoshi
26*5e70dc8cSNikhil Namjoshi namespace google
27*5e70dc8cSNikhil Namjoshi {
28*5e70dc8cSNikhil Namjoshi namespace ipmi
29*5e70dc8cSNikhil Namjoshi {
30*5e70dc8cSNikhil Namjoshi
TEST(BmcModeCommandTest,ValidRequest)31*5e70dc8cSNikhil Namjoshi TEST(BmcModeCommandTest, ValidRequest)
32*5e70dc8cSNikhil Namjoshi {
33*5e70dc8cSNikhil Namjoshi std::vector<std::uint8_t> request = {};
34*5e70dc8cSNikhil Namjoshi uint8_t bmcMode = 0; // Non Bare Metal Mode
35*5e70dc8cSNikhil Namjoshi
36*5e70dc8cSNikhil Namjoshi HandlerMock hMock;
37*5e70dc8cSNikhil Namjoshi EXPECT_CALL(hMock, getBmcMode()).WillOnce(Return(bmcMode));
38*5e70dc8cSNikhil Namjoshi
39*5e70dc8cSNikhil Namjoshi auto reply = getBmcMode(request, &hMock);
40*5e70dc8cSNikhil Namjoshi auto result = ValidateReply(reply);
41*5e70dc8cSNikhil Namjoshi auto& data = result.second;
42*5e70dc8cSNikhil Namjoshi
43*5e70dc8cSNikhil Namjoshi EXPECT_EQ(1, data.size());
44*5e70dc8cSNikhil Namjoshi EXPECT_EQ(SysOEMCommands::SysGetBmcMode, result.first);
45*5e70dc8cSNikhil Namjoshi EXPECT_EQ(0, data[0]);
46*5e70dc8cSNikhil Namjoshi
47*5e70dc8cSNikhil Namjoshi bmcMode = 1; // Bare Metal Mode
48*5e70dc8cSNikhil Namjoshi
49*5e70dc8cSNikhil Namjoshi EXPECT_CALL(hMock, getBmcMode()).WillOnce(Return(bmcMode));
50*5e70dc8cSNikhil Namjoshi
51*5e70dc8cSNikhil Namjoshi reply = getBmcMode(request, &hMock);
52*5e70dc8cSNikhil Namjoshi result = ValidateReply(reply);
53*5e70dc8cSNikhil Namjoshi data = result.second;
54*5e70dc8cSNikhil Namjoshi
55*5e70dc8cSNikhil Namjoshi EXPECT_EQ(1, data.size());
56*5e70dc8cSNikhil Namjoshi EXPECT_EQ(SysOEMCommands::SysGetBmcMode, result.first);
57*5e70dc8cSNikhil Namjoshi EXPECT_EQ(1, data[0]);
58*5e70dc8cSNikhil Namjoshi
59*5e70dc8cSNikhil Namjoshi bmcMode = 2; // Bare Metal Cleaning Mode
60*5e70dc8cSNikhil Namjoshi
61*5e70dc8cSNikhil Namjoshi EXPECT_CALL(hMock, getBmcMode()).WillOnce(Return(bmcMode));
62*5e70dc8cSNikhil Namjoshi
63*5e70dc8cSNikhil Namjoshi reply = getBmcMode(request, &hMock);
64*5e70dc8cSNikhil Namjoshi result = ValidateReply(reply);
65*5e70dc8cSNikhil Namjoshi data = result.second;
66*5e70dc8cSNikhil Namjoshi
67*5e70dc8cSNikhil Namjoshi EXPECT_EQ(1, data.size());
68*5e70dc8cSNikhil Namjoshi EXPECT_EQ(SysOEMCommands::SysGetBmcMode, result.first);
69*5e70dc8cSNikhil Namjoshi EXPECT_EQ(2, data[0]);
70*5e70dc8cSNikhil Namjoshi }
71*5e70dc8cSNikhil Namjoshi
72*5e70dc8cSNikhil Namjoshi } // namespace ipmi
73*5e70dc8cSNikhil Namjoshi } // namespace google
74