blob: d4bcb41b3ceaea45f98329e451b41572e7d3ffb2 [file] [log] [blame]
Patrick Ventureef3aead2018-09-12 08:53:29 -07001#include "ipmi.hpp"
Patrick Venturecd8dab42019-01-15 19:57:38 -08002#include "manager_mock.hpp"
Patrick Ventureef3aead2018-09-12 08:53:29 -07003
Patrick Ventureef3aead2018-09-12 08:53:29 -07004#include <cstring>
5#include <string>
6
7#include <gtest/gtest.h>
8
9namespace blobs
10{
11
Patrick Ventureef3aead2018-09-12 08:53:29 -070012using ::testing::Return;
Patrick Ventureef3aead2018-09-12 08:53:29 -070013
Patrick Ventureef3aead2018-09-12 08:53:29 -070014TEST(BlobCloseTest, ManagerRejectsCloseReturnsFailure)
15{
16 // The session manager returned failure to close, which we need to pass on.
17
18 ManagerMock mgr;
19 uint16_t sessionId = 0x54;
20 size_t dataLen;
Willy Tu067ece12022-06-16 02:07:06 -070021 std::vector<uint8_t> request;
Patrick Ventureef3aead2018-09-12 08:53:29 -070022 struct BmcBlobCloseTx req;
23
Patrick Ventureef3aead2018-09-12 08:53:29 -070024 req.crc = 0;
25 req.sessionId = sessionId;
26
27 dataLen = sizeof(req);
Willy Tu067ece12022-06-16 02:07:06 -070028 request.resize(dataLen);
29 std::memcpy(request.data(), &req, dataLen);
Patrick Ventureef3aead2018-09-12 08:53:29 -070030
31 EXPECT_CALL(mgr, close(sessionId)).WillOnce(Return(false));
Willy Tu067ece12022-06-16 02:07:06 -070032 EXPECT_EQ(ipmi::responseUnspecifiedError(), closeBlob(&mgr, request));
Patrick Ventureef3aead2018-09-12 08:53:29 -070033}
34
35TEST(BlobCloseTest, BlobClosedReturnsSuccess)
36{
37 // Verify that if all goes right, success is returned.
38
39 ManagerMock mgr;
40 uint16_t sessionId = 0x54;
41 size_t dataLen;
Willy Tu067ece12022-06-16 02:07:06 -070042 std::vector<uint8_t> request;
Patrick Ventureef3aead2018-09-12 08:53:29 -070043 struct BmcBlobCloseTx req;
44
Patrick Ventureef3aead2018-09-12 08:53:29 -070045 req.crc = 0;
46 req.sessionId = sessionId;
47
48 dataLen = sizeof(req);
Willy Tu067ece12022-06-16 02:07:06 -070049 request.resize(dataLen);
50 std::memcpy(request.data(), &req, dataLen);
Patrick Ventureef3aead2018-09-12 08:53:29 -070051
52 EXPECT_CALL(mgr, close(sessionId)).WillOnce(Return(true));
Willy Tu067ece12022-06-16 02:07:06 -070053 EXPECT_EQ(ipmi::responseSuccess(std::vector<uint8_t>{}),
54 closeBlob(&mgr, request));
Patrick Ventureef3aead2018-09-12 08:53:29 -070055}
56} // namespace blobs