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