• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2024-2025 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     AssetCallbackManager::GetInstance().recvCallbackList_.emplace_back(nullptr);
70     EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 1); // 1: vec size
71     auto recvCallback = sptr(new IAssetRecvCallbackMock());
72     AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
73     EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 2); // 2: vec size
74     AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
75     EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 2); // 2: vec size
76     auto recvCallback2 = sptr(new IAssetRecvCallbackMock());
77     AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback2);
78     EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 3); // 3: vec size
79     AssetCallbackManager::GetInstance().recvCallbackList_.clear();
80     GTEST_LOG_(INFO) << "AssetCallbackManager_AddRecvCallback_0100 End";
81 }
82 
83 /**
84  * @tc.name: AssetCallbackManager_RemoveRecvCallback_0100
85  * @tc.desc: verify RemoveRecvCallback.
86  * @tc.type: FUNC
87  * @tc.require: I7TDJK
88  */
89 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_RemoveRecvCallback_0100, TestSize.Level1)
90 {
91     GTEST_LOG_(INFO) << "AssetCallbackManager_AddRecvCallback_0100 Start";
92     auto recvCallback = sptr(new IAssetRecvCallbackMock());
93     AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
94     AssetCallbackManager::GetInstance().RemoveRecvCallback(nullptr);
95     EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 1);
96     AssetCallbackManager::GetInstance().RemoveRecvCallback(recvCallback);
97     EXPECT_EQ(AssetCallbackManager::GetInstance().recvCallbackList_.size(), 0);
98     GTEST_LOG_(INFO) << "AssetCallbackManager_AddRecvCallback_0100 End";
99 }
100 
101 /**
102  * @tc.name: AssetCallbackManager_SendCallback_0100
103  * @tc.desc: verify AddSendCallback and RemoveSendCallback.
104  * @tc.type: FUNC
105  * @tc.require: I7TDJK
106  */
107 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_SendCallback_0100, TestSize.Level1)
108 {
109     GTEST_LOG_(INFO) << "AssetCallbackManager_SendCallback_0100 Start";
110     auto sendCallback = sptr(new IAssetSendCallbackMock());
111     AssetCallbackManager::GetInstance().AddSendCallback("", sendCallback);
112     EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 0);
113     AssetCallbackManager::GetInstance().AddSendCallback("test", sendCallback);
114     EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 1);
115     AssetCallbackManager::GetInstance().AddSendCallback("test", sendCallback);
116     EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 1);
117 
118     AssetCallbackManager::GetInstance().RemoveSendCallback("test2");
119     EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 1);
120     AssetCallbackManager::GetInstance().RemoveSendCallback("test");
121     EXPECT_EQ(AssetCallbackManager::GetInstance().sendCallbackMap_.size(), 0);
122     GTEST_LOG_(INFO) << "AssetCallbackManager_SendCallback_0100 End";
123 }
124 
125 /**
126  * @tc.name: AssetCallbackManager_NotifyAssetRecv_0100
127  * @tc.desc: verify NotifyAssetRecvStart, NotifyAssetRecvProgress and NotifyAssetRecvFinished.
128  * @tc.type: FUNC
129  * @tc.require: I7TDJK
130  */
131 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_NotifyAssetRecv_0100, TestSize.Level1)
132 {
133     GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetRecv_0100 Start";
134     auto recvCallback = sptr(new IAssetRecvCallbackMock());
135     // OnStart OnFinished 预期只能调用一次
136     EXPECT_CALL(*recvCallback, OnStart(_, _, _, _)).WillOnce(Return(E_OK));
137     EXPECT_CALL(*recvCallback, OnRecvProgress(_, _, _, _)).Times(3).WillRepeatedly(Return(E_OK));
138     EXPECT_CALL(*recvCallback, OnFinished(_, _, _)).Times(2).WillRepeatedly(Return(E_OK));
139     try {
140         AssetCallbackManager::GetInstance().AddRecvCallback(recvCallback);
141         AssetCallbackManager::GetInstance().recvCallbackList_.emplace_back(nullptr);
142         AssetCallbackManager::GetInstance().NotifyAssetRecvStart("srcNetworkId", "dstNetworkId",
143             "sessionId", "dstBundleName");
144 
145         sptr<AssetObj> assetObj1 (new (std::nothrow) AssetObj());
146         ASSERT_TRUE(assetObj1 != nullptr) << "assetObj1 assert failed!";
147         AssetCallbackManager::GetInstance().NotifyAssetRecvProgress("srcNetworkId", assetObj1, 1024, 256);
148 
149         sptr<AssetObj> assetObj2 (new (std::nothrow) AssetObj());
150         ASSERT_TRUE(assetObj2 != nullptr) << "assetObj2 assert failed!";
151         AssetCallbackManager::GetInstance().NotifyAssetRecvProgress("srcNetworkId", nullptr, 1024, 512);
152         AssetCallbackManager::GetInstance().NotifyAssetRecvProgress("srcNetworkId", assetObj2, 1024, 512);
153 
154         sptr<AssetObj> assetObj3 (new (std::nothrow) AssetObj());
155         ASSERT_TRUE(assetObj3 != nullptr) << "assetObj3 assert failed!";
156         AssetCallbackManager::GetInstance().NotifyAssetRecvFinished("srcNetworkId", nullptr, 0);
157         AssetCallbackManager::GetInstance().NotifyAssetRecvFinished("srcNetworkId", assetObj3, 0);
158         AssetCallbackManager::GetInstance().recvCallbackList_.clear();
159         EXPECT_TRUE(true);
160     } catch(...) {
161         EXPECT_TRUE(false);
162     }
163     GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetRecv_0100 End";
164 }
165 
166 /**
167  * @tc.name: AssetCallbackManager_NotifyAssetSendResult_0100
168  * @tc.desc: verify NotifyAssetSendResult.
169  * @tc.type: FUNC
170  * @tc.require: I7TDJK
171  */
172 HWTEST_F(AssetCallbackManagerTest, AssetCallbackManager_NotifyAssetSendResult_0100, TestSize.Level1)
173 {
174     GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetSendResult_0100 Start";
175     auto sendCallback = sptr(new IAssetSendCallbackMock());
176     // 预期只能调用一次
177     EXPECT_CALL(*sendCallback, OnSendResult(_, _)).WillOnce(Return(E_OK));
178     try {
179         AssetCallbackManager::GetInstance().AddSendCallback("test", sendCallback);
180         AssetCallbackManager::GetInstance().AddSendCallback("test2", nullptr);
181 
182         sptr<AssetObj> assetObj (new (std::nothrow) AssetObj());
183         ASSERT_TRUE(assetObj != nullptr) << "assetObj assert failed!";
184         AssetCallbackManager::GetInstance().NotifyAssetSendResult("test3", assetObj, 0);
185         AssetCallbackManager::GetInstance().NotifyAssetSendResult("test", assetObj, 0);
186         AssetCallbackManager::GetInstance().NotifyAssetSendResult("test2", assetObj, 0);
187         AssetCallbackManager::GetInstance().sendCallbackMap_.clear();
188         EXPECT_TRUE(true);
189     } catch(...) {
190         EXPECT_TRUE(false);
191     }
192     GTEST_LOG_(INFO) << "AssetCallbackManager_NotifyAssetSendResult_0100 End";
193 }
194 }