1 /*
2 * Copyright (c) 2021-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 "datashare_helper.h"
17 #include "mock_datashare.h"
18
19 namespace OHOS {
20 namespace Notification {
21 namespace {
22 std::string g_getStringValue = "";
23 int g_goToFirstRow = DataShare::E_OK;
24 bool g_isFailedToCreateDataShareHelper = false;
25 bool g_isFailedToQueryDataShareResultSet = false;
26 int g_rowCount = 1;
27 int g_goToNextRow = DataShare::E_OK;
28 }
29
MockIsFailedGoToFirstRow(const int goToFirstRow)30 void MockIsFailedGoToFirstRow(const int goToFirstRow)
31 {
32 g_goToFirstRow = goToFirstRow;
33 }
34
MockGetStringValue(const std::string & getStringValue)35 void MockGetStringValue(const std::string& getStringValue)
36 {
37 g_getStringValue = getStringValue;
38 }
39
MockIsFailedToCreateDataShareHelper(const bool isFailed)40 void MockIsFailedToCreateDataShareHelper(const bool isFailed)
41 {
42 g_isFailedToCreateDataShareHelper = isFailed;
43 }
44
MockIsFailedToQueryDataShareResultSet(const bool isFailed)45 void MockIsFailedToQueryDataShareResultSet(const bool isFailed)
46 {
47 g_isFailedToQueryDataShareResultSet = isFailed;
48 }
49
MockSetRowCount(const int rowCount)50 void MockSetRowCount(const int rowCount)
51 {
52 g_rowCount = rowCount;
53 }
54
MockGoToGetNextRow(const int goToNextRow)55 void MockGoToGetNextRow(const int goToNextRow)
56 {
57 g_goToNextRow = goToNextRow;
58 }
59
60 } // namespace Notification
61
62 namespace DataShare {
63 class MockDataShareResultSet : public DataShareResultSet {
64 public:
GoToFirstRow()65 int GoToFirstRow() override
66 {
67 return Notification::g_goToFirstRow;
68 }
69
GetRowCount(int32_t & count)70 int32_t GetRowCount(int32_t &count) override
71 {
72 count = Notification::g_rowCount;
73 return 0;
74 }
75
GetColumnIndex(const std::string & columnName,int & columnIndex)76 int GetColumnIndex(const std::string &columnName, int &columnIndex) override
77 {
78 return 0;
79 }
80
GetString(int columnIndex,std::string & value)81 int GetString(int columnIndex, std::string &value) override
82 {
83 value = Notification::g_getStringValue;
84 return 0;
85 }
86
Close()87 int Close() override
88 {
89 return 0;
90 }
91
GetColumnCount(int & count)92 int GetColumnCount(int &count) override
93 {
94 return 0;
95 }
96
GetColumnName(int columnIndex,std::string & columnName)97 int GetColumnName(int columnIndex, std::string &columnName) override
98 {
99 return 0;
100 }
101
GetRowIndex(int & position) const102 int GetRowIndex(int &position) const override
103 {
104 return 0;
105 }
106
GoTo(int offset)107 int GoTo(int offset) override
108 {
109 return 0;
110 }
111
GoToLastRow()112 int GoToLastRow() override
113 {
114 return 0;
115 }
116
GoToNextRow()117 int GoToNextRow() override
118 {
119 return Notification::g_goToNextRow;
120 }
121
GoToPreviousRow()122 int GoToPreviousRow() override
123 {
124 return 0;
125 }
126
IsEnded(bool & result)127 int IsEnded(bool &result) override
128 {
129 return 0;
130 }
131
IsStarted(bool & result) const132 int IsStarted(bool &result) const override
133 {
134 return 0;
135 }
136
IsAtFirstRow(bool & result) const137 int IsAtFirstRow(bool &result) const override
138 {
139 return 0;
140 }
141
IsAtLastRow(bool & result)142 int IsAtLastRow(bool &result) override
143 {
144 return 0;
145 }
146
IsClosed() const147 bool IsClosed() const override
148 {
149 return false;
150 }
151 };
152
153 class MockDataShareHelper : public DataShareHelper {
154 public:
Release()155 bool Release() override
156 {
157 return true;
158 }
159
GetFileTypes(Uri & uri,const std::string & mimeTypeFilter)160 std::vector<std::string> GetFileTypes(Uri &uri, const std::string &mimeTypeFilter) override
161 {
162 return {};
163 }
164
OpenFile(Uri & uri,const std::string & mode)165 int OpenFile(Uri &uri, const std::string &mode) override
166 {
167 return 0;
168 }
169
OpenFileWithErrCode(Uri & uri,const std::string & mode,int32_t & errCode)170 int OpenFileWithErrCode(Uri &uri, const std::string &mode, int32_t &errCode) override
171 {
172 return 0;
173 }
174
OpenRawFile(Uri & uri,const std::string & mode)175 int OpenRawFile(Uri &uri, const std::string &mode) override
176 {
177 return 0;
178 }
179
180 [[deprecated("Use InsertEx(Uri &, const DataShareValuesBucket &) instead.")]]
Insert(Uri & uri,const DataShareValuesBucket & value)181 int Insert(Uri &uri, const DataShareValuesBucket &value) override
182 {
183 return 0;
184 }
185
InsertExt(Uri & uri,const DataShareValuesBucket & value,std::string & result)186 int InsertExt(Uri &uri, const DataShareValuesBucket &value, std::string &result) override
187 {
188 return 0;
189 }
190
191 [[deprecated("Use UpdateEx(Uri &, const DataSharePredicates &, const DataShareValuesBucket &) instead.")]]
Update(Uri & uri,const DataSharePredicates & predicates,const DataShareValuesBucket & value)192 int Update(Uri &uri, const DataSharePredicates &predicates, const DataShareValuesBucket &value) override
193 {
194 return 0;
195 }
196
BatchUpdate(const UpdateOperations & operations,std::vector<BatchUpdateResult> & results)197 int BatchUpdate(const UpdateOperations &operations, std::vector<BatchUpdateResult> &results) override
198 {
199 return 0;
200 }
201
202 [[deprecated("Use DeleteEx(Uri &, const DataSharePredicates &) instead.")]]
Delete(Uri & uri,const DataSharePredicates & predicates)203 int Delete(Uri &uri, const DataSharePredicates &predicates) override
204 {
205 return 0;
206 }
207
Query(Uri & uri,const DataSharePredicates & predicates,std::vector<std::string> & columns,DatashareBusinessError * businessError=nullptr)208 std::shared_ptr<DataShareResultSet> Query(Uri &uri, const DataSharePredicates &predicates,
209 std::vector<std::string> &columns, DatashareBusinessError *businessError = nullptr) override
210 {
211 return Notification::g_isFailedToQueryDataShareResultSet ? nullptr : std::make_shared<MockDataShareResultSet>();
212 }
213
GetType(Uri & uri)214 std::string GetType(Uri &uri) override
215 {
216 return "";
217 }
218
BatchInsert(Uri & uri,const std::vector<DataShareValuesBucket> & values)219 int BatchInsert(Uri &uri, const std::vector<DataShareValuesBucket> &values) override
220 {
221 return 0;
222 }
223
ExecuteBatch(const std::vector<OperationStatement> & statements,ExecResultSet & result)224 int ExecuteBatch(const std::vector<OperationStatement> &statements, ExecResultSet &result) override
225 {
226 return 0;
227 }
228
RegisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)229 int RegisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver) override
230 {
231 return 0;
232 }
233
UnregisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)234 int UnregisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver) override
235 {
236 return 0;
237 }
238
NotifyChange(const Uri & uri)239 void NotifyChange(const Uri &uri) override {}
240
RegisterObserverExtProvider(const Uri & uri,const std::shared_ptr<DataShareObserver> dataObserver,bool isDescendants)241 int RegisterObserverExtProvider(const Uri &uri, const std::shared_ptr<DataShareObserver> dataObserver,
242 bool isDescendants) override
243 {
244 return 0;
245 }
246
UnregisterObserverExtProvider(const Uri & uri,const std::shared_ptr<DataShareObserver> dataObserver)247 int UnregisterObserverExtProvider(const Uri &uri, const std::shared_ptr<DataShareObserver> dataObserver) override
248 {
249 return 0;
250 }
251
NotifyChangeExtProvider(const DataShareObserver::ChangeInfo & changeInfo)252 void NotifyChangeExtProvider(const DataShareObserver::ChangeInfo &changeInfo) override {}
253
NormalizeUri(Uri & uri)254 Uri NormalizeUri(Uri &uri) override
255 {
256 return uri;
257 }
258
DenormalizeUri(Uri & uri)259 Uri DenormalizeUri(Uri &uri) override
260 {
261 return uri;
262 }
263
AddQueryTemplate(const std::string & uri,int64_t subscriberId,Template & tpl)264 int AddQueryTemplate(const std::string &uri, int64_t subscriberId, Template &tpl) override
265 {
266 return 0;
267 }
268
DelQueryTemplate(const std::string & uri,int64_t subscriberId)269 int DelQueryTemplate(const std::string &uri, int64_t subscriberId) override
270 {
271 return 0;
272 }
273
Publish(const Data & data,const std::string & bundleName)274 std::vector<OperationResult> Publish(const Data &data, const std::string &bundleName) override
275 {
276 return {};
277 }
278
GetPublishedData(const std::string & bundleName,int & resultCode)279 Data GetPublishedData(const std::string &bundleName, int &resultCode) override
280 {
281 return {};
282 }
283
SubscribeRdbData(const std::vector<std::string> & uris,const TemplateId & templateId,const std::function<void (const RdbChangeNode & changeNode)> & callback)284 std::vector<OperationResult> SubscribeRdbData(const std::vector<std::string> &uris,
285 const TemplateId &templateId, const std::function<void(const RdbChangeNode &changeNode)> &callback) override
286 {
287 return {};
288 }
289
UnsubscribeRdbData(const std::vector<std::string> & uris,const TemplateId & templateId)290 std::vector<OperationResult> UnsubscribeRdbData(const std::vector<std::string> &uris,
291 const TemplateId &templateId) override
292 {
293 return {};
294 }
295
EnableRdbSubs(const std::vector<std::string> & uris,const TemplateId & templateId)296 std::vector<OperationResult> EnableRdbSubs(const std::vector<std::string> &uris,
297 const TemplateId &templateId) override
298 {
299 return {};
300 }
301
DisableRdbSubs(const std::vector<std::string> & uris,const TemplateId & templateId)302 std::vector<OperationResult> DisableRdbSubs(const std::vector<std::string> &uris,
303 const TemplateId &templateId) override
304 {
305 return {};
306 }
307
SubscribePublishedData(const std::vector<std::string> & uris,int64_t subscriberId,const std::function<void (const PublishedDataChangeNode & changeNode)> & callback)308 std::vector<OperationResult> SubscribePublishedData(const std::vector<std::string> &uris,
309 int64_t subscriberId, const std::function<void(const PublishedDataChangeNode &changeNode)> &callback) override
310 {
311 return {};
312 }
313
UnsubscribePublishedData(const std::vector<std::string> & uris,int64_t subscriberId)314 std::vector<OperationResult> UnsubscribePublishedData(const std::vector<std::string> &uris,
315 int64_t subscriberId) override
316 {
317 return {};
318 }
319
EnablePubSubs(const std::vector<std::string> & uris,int64_t subscriberId)320 std::vector<OperationResult> EnablePubSubs(const std::vector<std::string> &uris, int64_t subscriberId) override
321 {
322 return {};
323 }
324
DisablePubSubs(const std::vector<std::string> & uris,int64_t subscriberId)325 std::vector<OperationResult> DisablePubSubs(const std::vector<std::string> &uris, int64_t subscriberId) override
326 {
327 return {};
328 }
329 };
330
Creator(const sptr<IRemoteObject> & token,const std::string & strUri,const std::string & extUri,const int waitTime,bool isSystem)331 std::shared_ptr<DataShareHelper> DataShareHelper::Creator(const sptr<IRemoteObject> &token, const std::string &strUri,
332 const std::string &extUri, const int waitTime, bool isSystem)
333 {
334 return Notification::g_isFailedToCreateDataShareHelper ? nullptr : std::make_shared<MockDataShareHelper>();
335 }
336
Create(const sptr<IRemoteObject> & token,const std::string & strUri,const std::string & extUri,const int waitTime)337 std::pair<int, std::shared_ptr<DataShareHelper>> DataShareHelper::Create(const sptr<IRemoteObject> &token,
338 const std::string &strUri, const std::string &extUri, const int waitTime)
339 {
340 if (Notification::g_isFailedToCreateDataShareHelper) {
341 return std::make_pair(1, nullptr);
342 } else {
343 return std::make_pair(0, std::make_shared<MockDataShareHelper>());
344 }
345 }
346 } // namespace DataShare
347 } // namespace OHOS