• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2023 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 <gmock/gmock.h>
17 #include <gtest/gtest.h>
18 
19 #include "ipc/daemon_stub.h"
20 #include "ipc/distributed_file_daemon_ipc_interface_code.h"
21 #include "i_daemon_mock.h"
22 #include "utils_log.h"
23 
24 namespace OHOS::Storage::DistributedFile::Test {
25 using namespace testing;
26 using namespace testing::ext;
27 using namespace std;
28 
29 namespace {
30 DistributedHardware::DmDeviceInfo deviceInfo = {
31     .deviceId = "testdevid",
32     .deviceName = "testdevname",
33     .networkId = "testnetworkid",
34 };
35 }
36 
37 const std::string srcUri = "file://docs/storage/Users/currentUser/""Documents?networkid=xxxxx";
38 const std::string dstUri = "file://docs/storage/Users/currentUser/Documents";
39 const std::string srcDeviceId = "testSrcDeviceId";
40 const sptr<IRemoteObject> listener = sptr(new DaemonServiceMock());
41 
42 class MockDaemonStub : public DaemonStub {
43 public:
44     MOCK_METHOD1(OpenP2PConnection, int32_t(const DistributedHardware::DmDeviceInfo &deviceInfo));
45     MOCK_METHOD1(CloseP2PConnection, int32_t(const DistributedHardware::DmDeviceInfo &deviceInfo));
46     MOCK_METHOD4(RequestSendFile,
47                  int32_t(const std::string &srcUri,
48                          const std::string &dstPath,
49                          const std::string &remoteDeviceId,
50                          const std::string &sessionName));
51     MOCK_METHOD4(PrepareSession,
52                  int32_t(const std::string &srcUri,
53                          const std::string &dstUri,
54                          const std::string &srcDeviceId,
55                          const sptr<IRemoteObject> &listener));
56 };
57 
58 class DaemonStubTest : public testing::Test {
59 public:
60     static void SetUpTestCase(void);
61     static void TearDownTestCase(void);
62     void SetUp();
63     void TearDown();
64     std::shared_ptr<DaemonStub> daemonStub_;
65 };
66 
SetUpTestCase(void)67 void DaemonStubTest::SetUpTestCase(void)
68 {
69     GTEST_LOG_(INFO) << "SetUpTestCase";
70 }
71 
TearDownTestCase(void)72 void DaemonStubTest::TearDownTestCase(void)
73 {
74     GTEST_LOG_(INFO) << "TearDownTestCase";
75 }
76 
SetUp(void)77 void DaemonStubTest::SetUp(void)
78 {
79     daemonStub_ = std::make_shared<MockDaemonStub>();
80     GTEST_LOG_(INFO) << "SetUp";
81 }
82 
TearDown(void)83 void DaemonStubTest::TearDown(void)
84 {
85     GTEST_LOG_(INFO) << "TearDown";
86 }
87 
88 /**
89  * @tc.name: DaemonStubOnRemoteRequestTest001
90  * @tc.desc: Verify the OnRemoteRequest function
91  * @tc.type: FUNC
92  * @tc.require: I7M6L1
93  */
94 HWTEST_F(DaemonStubTest, DaemonStubOnRemoteRequestTest001, TestSize.Level1)
95 {
96     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest001 Start";
97     try {
98         MessageParcel data;
99         MessageParcel reply;
100         MessageOption option;
101         int ret = daemonStub_->OnRemoteRequest(
102             static_cast<uint32_t>(DistributedFileDaemonInterfaceCode::DISTRIBUTED_FILE_OPEN_P2P_CONNECTION), data,
103             reply, option);
104         EXPECT_EQ(ret, IDaemon::DFS_DAEMON_DESCRIPTOR_IS_EMPTY);
105     } catch (...) {
106         EXPECT_TRUE(false);
107         GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest001  ERROR";
108     }
109     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest001 End";
110 }
111 
112 /**
113  * @tc.name: DaemonStubOnRemoteRequestTest002
114  * @tc.desc: Verify the OnRemoteRequest function
115  * @tc.type: FUNC
116  * @tc.require: I7M6L1
117  */
118 HWTEST_F(DaemonStubTest, DaemonStubOnRemoteRequestTest002, TestSize.Level1)
119 {
120     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest002 Start";
121     try {
122         MessageParcel data;
123         MessageParcel reply;
124         MessageOption option;
125         int ret = daemonStub_->OnRemoteRequest(
126             static_cast<uint32_t>(DistributedFileDaemonInterfaceCode::DISTRIBUTED_FILE_CLOSE_P2P_CONNECTION), data,
127             reply, option);
128         EXPECT_EQ(ret, IDaemon::DFS_DAEMON_DESCRIPTOR_IS_EMPTY);
129     } catch (...) {
130         EXPECT_TRUE(false);
131         GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest002  ERROR";
132     }
133     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest002 End";
134 }
135 
136 /**
137  * @tc.name: DaemonStubOnRemoteRequestTest003
138  * @tc.desc: Verify the OnRemoteRequest function
139  * @tc.type: FUNC
140  * @tc.require: I7M6L1
141  */
142 HWTEST_F(DaemonStubTest, DaemonStubOnRemoteRequestTest003, TestSize.Level1)
143 {
144     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest003 Start";
145     try {
146         int32_t code = 1000;
147         MessageParcel data;
148         EXPECT_TRUE(data.WriteInterfaceToken(IDaemon::GetDescriptor()));
149         MessageParcel reply;
150         MessageOption option;
151         int ret = daemonStub_->OnRemoteRequest(code, data, reply, option);
152         EXPECT_NE(ret, 0);
153     } catch (...) {
154         EXPECT_TRUE(false);
155         GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest003  ERROR";
156     }
157     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest003 End";
158 }
159 
160 /**
161  * @tc.name: DaemonStubOnRemoteRequestTest004
162  * @tc.desc: Verify the DaemonStubOnRemoteRequest function
163  * @tc.type: FUNC
164  * @tc.require: I7M6L1
165  */
166 HWTEST_F(DaemonStubTest, DaemonStubOnRemoteRequestTest004, TestSize.Level1)
167 {
168     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest004 Start";
169     try {
170         MessageParcel data;
171         EXPECT_TRUE(data.WriteInterfaceToken(IDaemon::GetDescriptor()));
172         MessageParcel reply;
173         MessageOption option;
174 
175         EXPECT_TRUE(data.WriteCString(deviceInfo.deviceId));
176         EXPECT_TRUE(data.WriteCString(deviceInfo.deviceName));
177         EXPECT_TRUE(data.WriteCString(deviceInfo.networkId));
178 
179         int ret = daemonStub_->OnRemoteRequest(
180             static_cast<uint32_t>(DistributedFileDaemonInterfaceCode::DISTRIBUTED_FILE_OPEN_P2P_CONNECTION), data,
181             reply, option);
182         EXPECT_EQ(ret, 0);
183     } catch (...) {
184         EXPECT_TRUE(false);
185         GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest004  ERROR";
186     }
187     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest004 End";
188 }
189 
190 /**
191  * @tc.name: DaemonStubOnRemoteRequestTest005
192  * @tc.desc: Verify the DaemonStubOnRemoteRequest function
193  * @tc.type: FUNC
194  * @tc.require: I7M6L1
195  */
196 HWTEST_F(DaemonStubTest, DaemonStubOnRemoteRequestTest005, TestSize.Level1)
197 {
198     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest005 Start";
199     try {
200         MessageParcel data;
201         EXPECT_TRUE(data.WriteInterfaceToken(IDaemon::GetDescriptor()));
202         MessageParcel reply;
203         MessageOption option;
204 
205         EXPECT_TRUE(data.WriteCString(deviceInfo.deviceId));
206         EXPECT_TRUE(data.WriteCString(deviceInfo.deviceName));
207         EXPECT_TRUE(data.WriteCString(deviceInfo.networkId));
208 
209         int ret = daemonStub_->OnRemoteRequest(
210             static_cast<uint32_t>(DistributedFileDaemonInterfaceCode::DISTRIBUTED_FILE_CLOSE_P2P_CONNECTION), data,
211             reply, option);
212         EXPECT_EQ(ret, 0);
213     } catch (...) {
214         EXPECT_TRUE(false);
215         GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest005  ERROR";
216     }
217     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest005 End";
218 }
219 
220 /**
221  * @tc.name: DaemonStubOnRemoteRequestTest006
222  * @tc.desc: Verify the DaemonStubOnRemoteRequest function
223  * @tc.type: FUNC
224  * @tc.require: I7M6L1
225  */
226 HWTEST_F(DaemonStubTest, DaemonStubOnRemoteRequestTest006, TestSize.Level1)
227 {
228     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest006 Start";
229     try {
230         MessageParcel data;
231         MessageParcel reply;
232         MessageOption option;
233 
234         EXPECT_TRUE(data.WriteString(srcUri));
235         EXPECT_TRUE(data.WriteString(dstUri));
236         EXPECT_TRUE(data.WriteString(srcDeviceId));
237         EXPECT_TRUE(data.WriteRemoteObject(listener));
238         int ret = daemonStub_->OnRemoteRequest(
239             static_cast<uint32_t>(DistributedFileDaemonInterfaceCode::DISTRIBUTED_FILE_PREPARE_SESSION), data,
240             reply, option);
241         EXPECT_EQ(ret, 1);
242     } catch (...) {
243         EXPECT_TRUE(false);
244         GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest006  ERROR";
245     }
246     GTEST_LOG_(INFO) << "DaemonStubOnRemoteRequestTest006 End";
247 }
248 } // namespace OHOS::Storage::DistributedFile::Test