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 "ringtone_datashare_stub_impl_test.h"
17 
18 #include "ability_handler.h"
19 #include "ability_info.h"
20 #include "data_ability_observer_interface.h"
21 #include "get_self_permissions.h"
22 #include "ohos_application.h"
23 #define private public
24 #include "ringtone_datashare_stub_impl.h"
25 #undef private
26 #include "ringtone_db_const.h"
27 #include "ringtone_errno.h"
28 #include "ringtone_file_utils.h"
29 #include "ringtone_type.h"
30 #include "runtime.h"
31 
32 using namespace std;
33 using namespace OHOS;
34 using namespace testing::ext;
35 
36 namespace OHOS {
37 namespace Media {
38 
SetUpTestCase()39 void RingtoneDataShareStubImplUnitTest::SetUpTestCase() {}
TearDownTestCase()40 void RingtoneDataShareStubImplUnitTest::TearDownTestCase() {}
41 
42 // SetUp:Execute before each test case
SetUp()43 void RingtoneDataShareStubImplUnitTest::SetUp() {}
44 
TearDown()45 void RingtoneDataShareStubImplUnitTest::TearDown() {}
46 
47 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_GetOwner_test_001, TestSize.Level0)
48 {
49     napi_env env = nullptr;
50     shared_ptr<DataShare::RingtoneDataShareExtension> extension;
51     DataShare::RingtoneDataShareStubImpl ringtoneDataShareStubImpl(extension, env);
52     extension = ringtoneDataShareStubImpl.GetOwner();
53     EXPECT_EQ(extension, nullptr);
54 }
55 
56 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_GetOwner_test_002, TestSize.Level0)
57 {
58     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
59     AbilityRuntime::RingtoneDataShareExtension *mediaDataShare;
60     mediaDataShare = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
61     EXPECT_EQ(mediaDataShare != nullptr, true);
62 
63     napi_env env = nullptr;
64     shared_ptr<DataShare::RingtoneDataShareExtension> extension(mediaDataShare);
65     DataShare::RingtoneDataShareStubImpl ringtoneDataShareStubImpl(extension, env);
66     extension = ringtoneDataShareStubImpl.GetOwner();
67     EXPECT_EQ((extension != nullptr), true);
68 }
69 
70 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_GetFileTypes_test_001, TestSize.Level0)
71 {
72     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
73 
74     napi_env env = nullptr;
75     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
76     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
77     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
78         new DataShare::RingtoneDataShareStubImpl(extension, env);
79     Uri uri(RINGTONE_PATH_URI);
80     std::string mimeTypeFilter;
81     auto ret = ringtoneDataShareStubImpl->GetFileTypes(uri, mimeTypeFilter);
82     std::vector<std::string> FileTypesVec;
83     EXPECT_EQ(ret, FileTypesVec);
84 
85     ringtoneDataShareStubImpl->extension_ = nullptr;
86     ret = ringtoneDataShareStubImpl->GetFileTypes(uri, mimeTypeFilter);
87     EXPECT_EQ(ret, FileTypesVec);
88 }
89 
90 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_OpenFile_test_001, TestSize.Level0)
91 {
92     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
93 
94     napi_env env = nullptr;
95     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
96     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
97     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
98         new DataShare::RingtoneDataShareStubImpl(extension, env);
99     Uri uri(RINGTONE_PATH_URI);
100     std::string mode;
101     int ret = ringtoneDataShareStubImpl->OpenFile(uri, mode);
102     EXPECT_EQ((ret != E_SUCCESS), true);
103 
104     ringtoneDataShareStubImpl->extension_ = nullptr;
105     ret = ringtoneDataShareStubImpl->OpenFile(uri, mode);
106     EXPECT_EQ(ret, E_ERR);
107 }
108 
109 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_OpenRawFile_test_001, TestSize.Level0)
110 {
111     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
112 
113     napi_env env = nullptr;
114     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
115     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
116     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
117         new DataShare::RingtoneDataShareStubImpl(extension, env);
118     Uri uri(RINGTONE_PATH_URI);
119     std::string mode;
120     int ret = ringtoneDataShareStubImpl->OpenRawFile(uri, mode);
121     EXPECT_EQ(ret, E_ERR);
122 
123     ringtoneDataShareStubImpl->extension_ = nullptr;
124     ret = ringtoneDataShareStubImpl->OpenRawFile(uri, mode);
125     EXPECT_EQ(ret, E_ERR);
126 }
127 
128 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_Insert_test_001, TestSize.Level0)
129 {
130     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
131 
132     napi_env env = nullptr;
133     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
134     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
135     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
136         new DataShare::RingtoneDataShareStubImpl(extension, env);
137     Uri uri(RINGTONE_PATH_URI);
138     AbilityRuntime::DataShareValuesBucket value;
139     int ret = ringtoneDataShareStubImpl->Insert(uri, value);
140     EXPECT_EQ((ret != E_OK), true);
141 
142     ringtoneDataShareStubImpl->extension_ = nullptr;
143     ret = ringtoneDataShareStubImpl->Insert(uri, value);
144     EXPECT_EQ(ret, E_OK);
145 }
146 
147 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_InsertExt_test_001, TestSize.Level0)
148 {
149     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
150 
151     napi_env env = nullptr;
152     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
153     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
154     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
155         new DataShare::RingtoneDataShareStubImpl(extension, env);
156     Uri uri(RINGTONE_PATH_URI);
157     AbilityRuntime::DataShareValuesBucket value;
158     std::string result;
159     int ret = ringtoneDataShareStubImpl->InsertExt(uri, value, result);
160     EXPECT_EQ(ret, E_ERR);
161 
162     ringtoneDataShareStubImpl->extension_ = nullptr;
163     ret = ringtoneDataShareStubImpl->InsertExt(uri, value, result);
164     EXPECT_EQ(ret, E_OK);;
165 }
166 
167 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_Update_test_001, TestSize.Level0)
168 {
169     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
170 
171     napi_env env = nullptr;
172     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
173     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
174     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
175         new DataShare::RingtoneDataShareStubImpl(extension, env);
176     Uri uri(RINGTONE_PATH_URI);
177     AbilityRuntime::DataSharePredicates predicates;
178     AbilityRuntime::DataShareValuesBucket value;
179     int ret = ringtoneDataShareStubImpl->Update(uri, predicates, value);
180     EXPECT_EQ(ret, E_FAIL);
181 
182     ringtoneDataShareStubImpl->extension_ = nullptr;
183     ret = ringtoneDataShareStubImpl->Update(uri, predicates, value);
184     EXPECT_EQ(ret, E_OK);
185 }
186 
187 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_Delete_test_001, TestSize.Level0)
188 {
189     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
190 
191     napi_env env = nullptr;
192     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
193     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
194     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
195         new DataShare::RingtoneDataShareStubImpl(extension, env);
196     Uri uri(RINGTONE_PATH_URI);
197     AbilityRuntime::DataSharePredicates predicates;
198     int ret = ringtoneDataShareStubImpl->Delete(uri, predicates);
199     EXPECT_EQ((ret != E_OK), true);
200 
201     ringtoneDataShareStubImpl->extension_ = nullptr;
202     ret = ringtoneDataShareStubImpl->Delete(uri, predicates);
203     EXPECT_EQ(ret, E_OK);
204 }
205 
206 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_Query_test_001, TestSize.Level0)
207 {
208     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
209 
210     napi_env env = nullptr;
211     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
212     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
213     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
214         new DataShare::RingtoneDataShareStubImpl(extension, env);
215     Uri uri(RINGTONE_PATH_URI);
216     AbilityRuntime::DataSharePredicates predicates;
217     std::vector<std::string> columns;
218     AbilityRuntime::DatashareBusinessError businessError;
219     auto ret = ringtoneDataShareStubImpl->Query(uri, predicates, columns, businessError);
220     EXPECT_EQ(ret, nullptr);
221 
222     ringtoneDataShareStubImpl->extension_ = nullptr;
223     ret = ringtoneDataShareStubImpl->Query(uri, predicates, columns, businessError);
224     EXPECT_EQ(ret, nullptr);
225 }
226 
227 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_BatchInsert_test_001, TestSize.Level0)
228 {
229     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
230 
231     napi_env env = nullptr;
232     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
233     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
234     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
235         new DataShare::RingtoneDataShareStubImpl(extension, env);
236     Uri uri(RINGTONE_PATH_URI);
237     std::vector<AbilityRuntime::DataShareValuesBucket> values;
238     int ret = ringtoneDataShareStubImpl->BatchInsert(uri, values);
239     EXPECT_EQ(ret, E_ERR);
240 
241     ringtoneDataShareStubImpl->extension_ = nullptr;
242     ret = ringtoneDataShareStubImpl->BatchInsert(uri, values);
243     EXPECT_EQ(ret, E_OK);
244 }
245 
246 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_RegisterObserver_test_001, TestSize.Level0)
247 {
248     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
249 
250     napi_env env = nullptr;
251     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
252     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
253     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
254         new DataShare::RingtoneDataShareStubImpl(extension, env);
255     Uri uri(RINGTONE_PATH_URI);
256     const sptr<AAFwk::IDataAbilityObserver> dataObserver;
257     bool ret = ringtoneDataShareStubImpl->RegisterObserver(uri, dataObserver);
258     EXPECT_EQ(ret, true);
259 
260     ringtoneDataShareStubImpl->extension_ = nullptr;
261     ret = ringtoneDataShareStubImpl->RegisterObserver(uri, dataObserver);
262     EXPECT_EQ(ret, false);
263 }
264 
265 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_UnregisterObserver_test_001, TestSize.Level0)
266 {
267     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
268 
269     napi_env env = nullptr;
270     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
271     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
272     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
273         new DataShare::RingtoneDataShareStubImpl(extension, env);
274     Uri uri(RINGTONE_PATH_URI);
275     sptr<AAFwk::IDataAbilityObserver> dataObserver;
276     bool ret = ringtoneDataShareStubImpl->UnregisterObserver(uri, dataObserver);
277     EXPECT_EQ(ret, true);
278 
279     ringtoneDataShareStubImpl->extension_ = nullptr;
280     ret = ringtoneDataShareStubImpl->UnregisterObserver(uri, dataObserver);
281     EXPECT_EQ(ret, false);
282 }
283 
284 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_NotifyChange_test_001, TestSize.Level0)
285 {
286     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
287 
288     napi_env env = nullptr;
289     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
290     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
291     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
292         new DataShare::RingtoneDataShareStubImpl(extension, env);
293     Uri uri(RINGTONE_PATH_URI);
294     bool ret = ringtoneDataShareStubImpl->NotifyChange(uri);
295     EXPECT_EQ(ret, true);
296 
297     ringtoneDataShareStubImpl->extension_ = nullptr;
298     ret = ringtoneDataShareStubImpl->NotifyChange(uri);
299     EXPECT_EQ(ret, false);
300 }
301 
302 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_NormalizeUri_test_001, TestSize.Level0)
303 {
304     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
305 
306     napi_env env = nullptr;
307     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
308     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
309     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
310         new DataShare::RingtoneDataShareStubImpl(extension, env);
311     Uri uri(RINGTONE_PATH_URI);
312     auto ret = ringtoneDataShareStubImpl->NormalizeUri(uri);
313     Uri urivalue("");
314     EXPECT_EQ(ret, uri);
315 
316     ringtoneDataShareStubImpl->extension_ = nullptr;
317     ret = ringtoneDataShareStubImpl->NormalizeUri(uri);
318     EXPECT_EQ(ret, urivalue);
319 }
320 
321 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_DenormalizeUri_test_001, TestSize.Level0)
322 {
323     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
324 
325     napi_env env = nullptr;
326     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
327     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
328     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
329         new DataShare::RingtoneDataShareStubImpl(extension, env);
330     Uri uri(RINGTONE_PATH_URI);
331     auto ret = ringtoneDataShareStubImpl->DenormalizeUri(uri);
332     Uri urivalue("");
333     EXPECT_EQ(ret, uri);
334 
335     ringtoneDataShareStubImpl->extension_ = nullptr;
336     ret = ringtoneDataShareStubImpl->DenormalizeUri(uri);
337     EXPECT_EQ(ret, urivalue);
338 }
339 
340 HWTEST_F(RingtoneDataShareStubImplUnitTest, dataShareStubImpl_GetType_test_001, TestSize.Level0)
341 {
342     const std::unique_ptr<AbilityRuntime::Runtime> runtime;
343 
344     napi_env env = nullptr;
345     auto dataShareExtension = AbilityRuntime::RingtoneDataShareExtension::Create(runtime);
346     shared_ptr<DataShare::RingtoneDataShareExtension> extension(dataShareExtension);
347     sptr<DataShare::RingtoneDataShareStubImpl> ringtoneDataShareStubImpl =
348         new DataShare::RingtoneDataShareStubImpl(extension, env);
349     Uri uri(RINGTONE_PATH_URI);
350     auto ret = ringtoneDataShareStubImpl->GetType(uri);
351     EXPECT_EQ(ret, "");
352 
353     ringtoneDataShareStubImpl->extension_ = nullptr;
354     ret = ringtoneDataShareStubImpl->GetType(uri);
355     EXPECT_EQ(ret, "");
356 }
357 } // namespace Media
358 } // namespace OHOS
359