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 #include "asset_callback_manager.h"
16
17 #include <gmock/gmock.h>
18 #include <gtest/gtest.h>
19
20 #include "asset_obj.h"
21 #include "asset_recv_callback_mock.h"
22 #include "asset_send_callback_mock.h"
23 #include "dfs_error.h"
24
25 namespace OHOS::Storage::DistributedFile::Test {
26 using namespace OHOS::FileManagement;
27 using namespace testing;
28 using namespace testing::ext;
29 using namespace std;
30
31 class AssetCallbackManagerTest : public testing::Test {
32 public:
33 static void SetUpTestCase(void);
34 static void TearDownTestCase(void);
35 void SetUp();
36 void TearDown();
37 };
38
SetUpTestCase(void)39 void AssetCallbackManagerTest::SetUpTestCase(void)
40 {
41 GTEST_LOG_(INFO) << "SetUpTestCase";
42 }
43
TearDownTestCase(void)44 void AssetCallbackManagerTest::TearDownTestCase(void)
45 {
46 GTEST_LOG_(INFO) << "TearDownTestCase";
47 }
48
SetUp(void)49 void AssetCallbackManagerTest::SetUp(void)
50 {
51 GTEST_LOG_(INFO) << "SetUp";
52 }
53
TearDown(void)54 void AssetCallbackManagerTest::TearDown(void)
55 {
56 GTEST_LOG_(INFO) << "TearDown";
57 }
58
59 /**
60 * @tc.name: AssetCallbackManager_AddRecvCallback_0100
61 * @tc.desc: verify AddRecvCallback failed.
62 * @tc.type: FUNC
63 * @tc.require: I7TDJK
64 */
65 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_AddRecvCallback_0100, TestSize.Level1)
66 {
67 GTEST_LOG_(INFO) << "AssetCallbackManager_AddRecvCallback_0100 Start";
68 AssetCallbackManager::GetInstance().AddRecvCallback(nullptr);
69 EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 0);
70 auto recvCallback = sptr(new IAssetRecvCallbackMock());
71 AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
72 EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 1);
73 AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
74 EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 1);
75 auto recvCallback2 = sptr(new IAssetRecvCallbackMock());
76 AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback2);
77 EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 2);
78 AssetCallbackManager::GetInstance().recvCallbackList_.clear();
79 GTEST_LOG_(INFO) << "AssetCallbackManager_AddRecvCallback_0100 End";
80 }
81
82 /**
83 * @tc.name: AssetCallbackManager_RemoveRecvCallback_0100
84 * @tc.desc: verify RemoveRecvCallback.
85 * @tc.type: FUNC
86 * @tc.require: I7TDJK
87 */
88 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_RemoveRecvCallback_0100, TestSize.Level1)
89 {
90 GTEST_LOG_(INFO) << "AssetCallbackManager_AddRecvCallback_0100 Start";
91 auto recvCallback = sptr(new IAssetRecvCallbackMock());
92 AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
93 AssetCallbackManager::GetInstance().RemoveRecvCallback(nullptr);
94 EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 1);
95 AssetCallbackManager::GetInstance().RemoveRecvCallback(recvCallback);
96 EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 0);
97 GTEST_LOG_(INFO) << "AssetCallbackManager_AddRecvCallback_0100 End";
98 }
99
100 /**
101 * @tc.name: AssetCallbackManager_SendCallback_0100
102 * @tc.desc: verify AddSendCallback and RemoveSendCallback.
103 * @tc.type: FUNC
104 * @tc.require: I7TDJK
105 */
106 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_SendCallback_0100, TestSize.Level1)
107 {
108 GTEST_LOG_(INFO) << "AssetCallbackManager_SendCallback_0100 Start";
109 auto sendCallback = sptr(new IAssetSendCallbackMock());
110 AssetCallbackManager::GetInstance().AddSendCallback("", sendCallback);
111 EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 0);
112 AssetCallbackManager::GetInstance().AddSendCallback("test", sendCallback);
113 EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 1);
114 AssetCallbackManager::GetInstance().AddSendCallback("test", sendCallback);
115 EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 1);
116
117 AssetCallbackManager::GetInstance().RemoveSendCallback("test2");
118 EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 1);
119 AssetCallbackManager::GetInstance().RemoveSendCallback("test");
120 EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 0);
121 GTEST_LOG_(INFO) << "AssetCallbackManager_SendCallback_0100 End";
122 }
123
124 /**
125 * @tc.name: AssetCallbackManager_NotifyAssetRecv_0100
126 * @tc.desc: verify NotifyAssetRecvStart and NotifyAssetRecvFinished.
127 * @tc.type: FUNC
128 * @tc.require: I7TDJK
129 */
130 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_NotifyAssetRecv_0100, TestSize.Level1)
131 {
132 GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetRecv_0100 Start";
133 auto recvCallback = sptr(new IAssetRecvCallbackMock());
134 // 预期只能调用一次
135 EXPECT_CALL(*recvCallback, OnStart(_, _, _, _)).WillOnce(Return(E_OK));
136 EXPECT_CALL(*recvCallback, OnFinished(_, _, _)).WillOnce(Return(E_OK));
137 try {
138 AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
139 AssetCallbackManager::GetInstance().recvCallbackList_.emplace_back(nullptr);
140 AssetCallbackManager::GetInstance().NotifyAssetRecvStart("srcNetworkId", "dstNetworkId",
141 "sessionId", "dstBundleName");
142
143 sptr<AssetObj> assetObj (new (std::nothrow) AssetObj());
144 AssetCallbackManager::GetInstance().NotifyAssetRecvFinished("srcNetworkId", assetObj, 0);
145 AssetCallbackManager::GetInstance().recvCallbackList_.clear();
146 EXPECT_TRUE(true);
147 } catch(...) {
148 EXPECT_TRUE(false);
149 }
150 GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetRecv_0100 End";
151 }
152
153 /**
154 * @tc.name: AssetCallbackManager_NotifyAssetSendResult_0100
155 * @tc.desc: verify NotifyAssetSendResult.
156 * @tc.type: FUNC
157 * @tc.require: I7TDJK
158 */
159 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_NotifyAssetSendResult_0100, TestSize.Level1)
160 {
161 GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetSendResult_0100 Start";
162 auto sendCallback = sptr(new IAssetSendCallbackMock());
163 // 预期只能调用一次
164 EXPECT_CALL(*sendCallback, OnSendResult(_, _)).WillOnce(Return(E_OK));
165 try {
166 AssetCallbackManager::GetInstance().AddSendCallback("test", sendCallback);
167 AssetCallbackManager::GetInstance().AddSendCallback("test2", nullptr);
168
169 sptr<AssetObj> assetObj (new (std::nothrow) AssetObj());
170 AssetCallbackManager::GetInstance().NotifyAssetSendResult("test3", assetObj, 0);
171 AssetCallbackManager::GetInstance().NotifyAssetSendResult("test", assetObj, 0);
172 AssetCallbackManager::GetInstance().NotifyAssetSendResult("test2", assetObj, 0);
173 AssetCallbackManager::GetInstance().sendCallbackMap_.clear();
174 EXPECT_TRUE(true);
175 } catch(...) {
176 EXPECT_TRUE(false);
177 }
178 GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetSendResult_0100 End";
179 }
180 }