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