blob: b8d32cd7cc9f1a2630d5a13a9afba55ac2eb957d [file] [log] [blame]
Jie Yangfbe1b682021-02-19 04:54:55 -08001#include "handler_unittest.hpp"
2
3#include <blobs-ipmid/blobs.hpp>
4
5#include <cstdint>
6#include <vector>
7
8#include <gtest/gtest.h>
9
10namespace blobs
11{
12
13class SmbiosBlobHandlerStatCloseTest : public SmbiosBlobHandlerTest
14{
15 protected:
16 blobs::BlobMeta meta;
17
18 // Initialize expected_meta_ with empty members
19 blobs::BlobMeta expected_meta_session = {};
20 blobs::BlobMeta expected_meta_path = {};
21};
22
23TEST_F(SmbiosBlobHandlerStatCloseTest, InvalidSessionStatIsRejected)
24{
25 EXPECT_FALSE(handler.stat(session, &meta));
26}
27
28TEST_F(SmbiosBlobHandlerStatCloseTest, SessionStatAlwaysInitialReadAndWrite)
29{
30 // Verify the session stat returns the information for a session.
31
32 EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId));
33
34 EXPECT_TRUE(handler.stat(session, &meta));
35 expected_meta_session.blobState = blobs::StateFlags::open_write;
36 EXPECT_EQ(meta, expected_meta_session);
37
38 EXPECT_TRUE(handler.stat(expectedBlobId, &meta));
39 expected_meta_path.blobState = blobs::StateFlags::open_write;
40 EXPECT_EQ(meta, expected_meta_path);
41}
42
43TEST_F(SmbiosBlobHandlerStatCloseTest, AfterWriteMetadataLengthMatches)
44{
45 // Verify that after writes, the length returned matches.
46
47 std::vector<uint8_t> data = {0x01};
48 EXPECT_TRUE(handler.open(session, blobs::OpenFlags::write, expectedBlobId));
49 EXPECT_TRUE(handler.write(session, handlerMaxBufferSize - 1, data));
50
51 // We wrote one byte to the last index, making the length the buffer size.
52 EXPECT_TRUE(handler.stat(session, &meta));
53 expected_meta_session.size = handlerMaxBufferSize;
54 expected_meta_session.blobState = blobs::StateFlags::open_write;
55 EXPECT_EQ(meta, expected_meta_session);
56
57 EXPECT_TRUE(handler.stat(expectedBlobId, &meta));
58 expected_meta_path.size = handlerMaxBufferSize;
59 expected_meta_path.blobState = blobs::StateFlags::open_write;
60 EXPECT_EQ(meta, expected_meta_path);
61}
62
63TEST_F(SmbiosBlobHandlerStatCloseTest, CloseWithInvalidSessionFails)
64{
65 // Verify you cannot close an invalid session.
66
67 EXPECT_FALSE(handler.close(session));
68}
69
70TEST_F(SmbiosBlobHandlerStatCloseTest, CloseWithValidSessionSuccess)
71{
72 // Verify you can close a valid session.
73
74 EXPECT_TRUE(handler.open(session, 0, expectedBlobId));
75
76 EXPECT_TRUE(handler.close(session));
77}
78} // namespace blobs