• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <fcntl.h>
17 #include <gtest/gtest.h>
18 #include "securec.h"
19 #include <sys/stat.h>
20 #include <sys/types.h>
21 
22 #include "client_trans_proxy_file_manager.c"
23 #include "client_trans_proxy_file_manager_mock.h"
24 #include "client_trans_proxy_manager.c"
25 #include "softbus_access_token_test.h"
26 #include "softbus_def.h"
27 #include "softbus_errcode.h"
28 
29 using namespace testing;
30 using namespace testing::ext;
31 
32 #define TEST_SESSION_ID 1026
33 #define TEST_HEADER_LENGTH 24
34 #define TEST_DATA_LENGTH 100
35 #define TEST_PACKET_SIZE 1024
36 #define TEST_FILE_LENGTH 12
37 #define TEST_FILE_DATA_SIZE 958
38 #define TEST_FILE_TEST_TXT_FILE 16
39 
40 namespace OHOS {
41 
42 const char *g_testProxyFileList[] = {
43     "/data/test.txt",
44     "/data/ss.txt",
45 };
46 
47 class ClientTransProxyFileManagerMockTest : public testing::Test {
48 public:
ClientTransProxyFileManagerMockTest()49     ClientTransProxyFileManagerMockTest() {}
~ClientTransProxyFileManagerMockTest()50     ~ClientTransProxyFileManagerMockTest() {}
51     static void SetUpTestCase(void);
52     static void TearDownTestCase(void);
SetUp()53     void SetUp() override {}
TearDown()54     void TearDown() override {}
55 };
56 
SetUpTestCase(void)57 void ClientTransProxyFileManagerMockTest::SetUpTestCase(void)
58 {
59     int32_t ret = ClinetTransProxyFileManagerInit();
60     EXPECT_EQ(SOFTBUS_OK, ret);
61     ClientTransProxyListInit();
62 }
63 
TearDownTestCase(void)64 void ClientTransProxyFileManagerMockTest::TearDownTestCase(void)
65 {
66     ClinetTransProxyFileManagerDeinit();
67     ClientTransProxyListDeinit();
68 }
69 
70 /**
71  * @tc.name: AddSendListenerInfoTest001
72  * @tc.desc: client add send listener info, use normal parameter.
73  * @tc.type: FUNC
74  * @tc.require:
75  */
76 HWTEST_F(ClientTransProxyFileManagerMockTest, AddSendListenerInfoTest001, TestSize.Level0)
77 {
78     // will free in DelSendListenerInfo
79     SendListenerInfo *info = (SendListenerInfo *)SoftBusCalloc(sizeof(SendListenerInfo));
80     EXPECT_TRUE(info != nullptr);
81     info->sessionId = TEST_SESSION_ID;
82 
83     int32_t ret = AddSendListenerInfo(nullptr);
84     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
85 
86     ret = AddSendListenerInfo(info);
87     EXPECT_EQ(SOFTBUS_OK, ret);
88 
89     ret = AddSendListenerInfo(info);
90     EXPECT_EQ(SOFTBUS_ALREADY_EXISTED, ret);
91 
92     DelSendListenerInfo(info);
93 }
94 
95 /**
96  * @tc.name: PackFileTransStartInfoTest001
97  * @tc.desc: client trans proxy pack file data frame test, use normal parameter.
98  * @tc.type: FUNC
99  * @tc.require:
100  */
101 HWTEST_F(ClientTransProxyFileManagerMockTest, PackFileTransStartInfoTest001, TestSize.Level0)
102 {
103     uint8_t data[TEST_DATA_LENGTH] = {0};
104     FileFrame fileFrame = {
105         .frameLength = 0,
106         .data = data,
107         .fileData = data,
108     };
109     SendListenerInfo info = {
110         .crc = APP_INFO_FILE_FEATURES_SUPPORT,
111         .osType = OH_TYPE,
112         .packetSize = 1,
113     };
114 
115     int32_t ret = PackFileTransStartInfo(nullptr, g_testProxyFileList[0], TEST_FILE_TEST_TXT_FILE, &info);
116     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
117 
118     ret = PackFileTransStartInfo(&fileFrame, nullptr, TEST_FILE_TEST_TXT_FILE, &info);
119     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
120 
121     ret = PackFileTransStartInfo(&fileFrame, g_testProxyFileList[0], TEST_FILE_TEST_TXT_FILE, nullptr);
122     EXPECT_EQ(SOFTBUS_INVALID_PARAM, ret);
123 
124     ret = PackFileTransStartInfo(&fileFrame, g_testProxyFileList[0], TEST_FILE_TEST_TXT_FILE, &info);
125     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
126 
127     info.packetSize = PROXY_BLE_MAX_PACKET_SIZE;
128     NiceMock<ClientTransProxyFileManagerInterfaceMock> ClientProxyFileManagerMock;
129     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusHtoLl).WillRepeatedly(Return(FILE_MAGIC_NUMBER));
130     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusHtoLll).WillRepeatedly(
131         Return(FILE_MAGIC_NUMBER + FRAME_MAGIC_OFFSET));
132     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusHtoLl).WillRepeatedly(Return(TEST_FILE_DATA_SIZE));
133     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusHtoLll).WillRepeatedly(Return(TEST_FILE_TEST_TXT_FILE));
134 
135     ret = PackFileTransStartInfo(&fileFrame, g_testProxyFileList[0], TEST_FILE_TEST_TXT_FILE, &info);
136     EXPECT_EQ(SOFTBUS_OK, ret);
137 }
138 
139 /**
140  * @tc.name: UnpackFileTransStartInfoTest001
141  * @tc.desc: client trans proxy pack file data frame test, use normal parameter.
142  * @tc.type: FUNC
143  * @tc.require:
144  */
145 HWTEST_F(ClientTransProxyFileManagerMockTest, UnpackFileTransStartInfoTest001, TestSize.Level0)
146 {
147     uint32_t packetSize = TEST_PACKET_SIZE;
148 
149     uint8_t data[TEST_DATA_LENGTH] = {0};
150     FileFrame fileFrame = {
151         .frameLength = TEST_HEADER_LENGTH,
152         .data = data,
153         .fileData = data,
154     };
155     FileRecipientInfo info;
156     info.crc = APP_INFO_FILE_FEATURES_SUPPORT;
157     info.osType = OH_TYPE;
158     SingleFileInfo singleFileInfo;
159 
160     NiceMock<ClientTransProxyFileManagerInterfaceMock> ClientProxyFileManagerMock;
161     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusLtoHl).WillOnce(Return(FILE_MAGIC_NUMBER))
162         .WillRepeatedly(Return(TEST_FILE_LENGTH));
163     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusLtoHll).WillOnce(Return(TEST_FILE_LENGTH))
164         .WillRepeatedly(Return(MAX_FILE_SIZE));
165 
166     int32_t ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
167     EXPECT_EQ(SOFTBUS_OK, ret);
168 
169     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusLtoHl).WillOnce(Return(FILE_MAGIC_NUMBER))
170         .WillRepeatedly(Return(TEST_FILE_LENGTH));
171     EXPECT_CALL(ClientProxyFileManagerMock, SoftBusLtoHll).WillOnce(Return(TEST_FILE_LENGTH))
172         .WillRepeatedly(Return(MAX_FILE_SIZE + 1));
173 
174     ret = UnpackFileTransStartInfo(&fileFrame, &info, &singleFileInfo, packetSize);
175     EXPECT_EQ(SOFTBUS_TRANS_INVALID_DATA_LENGTH, ret);
176 }
177 } // namespace OHOS