• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 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 
16 #include "datashare_stub.h"
17 
18 #include <gtest/gtest.h>
19 
20 #include "accesstoken_kit.h"
21 #include "data_ability_observer_stub.h"
22 #include "datashare_business_error.h"
23 #include "datashare_errno.h"
24 #include "datashare_itypes_utils.h"
25 #include "datashare_log.h"
26 #include "datashare_operation_statement.h"
27 #include "datashare_stub_impl.h"
28 #include "extension_manager_proxy.h"
29 #include "idatashare.h"
30 #include "ipc_skeleton.h"
31 #include "ipc_types.h"
32 #include "ishared_result_set.h"
33 
34 
35 namespace OHOS {
36 namespace DataShare {
37 using namespace testing::ext;
38 using namespace DistributedShare::DataShare;
39 using namespace OHOS::AAFwk;
40 using ChangeInfo = AAFwk::ChangeInfo;
41 class DataShareStubTest : public testing::Test {
42 public:
43     static void SetUpTestCase(void);
44     static void TearDownTestCase(void);
45     void SetUp();
46     void TearDown();
47 };
48 
49 
50 class IDataAbilityObserverTest : public DataAbilityObserverStub {
51 public:
IDataAbilityObserverTest()52     IDataAbilityObserverTest() {}
~IDataAbilityObserverTest()53     ~IDataAbilityObserverTest()
54     {}
55 
OnChange()56     void OnChange()
57     {
58         GTEST_LOG_(INFO) << "OnChange enter";
59     }
60 };
61 
62 class TestDataShareStub : public DataShareStub {
63 public:
TestDataShareStub()64     TestDataShareStub() {}
~TestDataShareStub()65     ~TestDataShareStub() {}
OpenFile(const Uri & uri,const std::string & mode)66     int OpenFile(const Uri &uri, const std::string &mode)
67     {
68         return 0;
69     }
OpenRawFile(const Uri & uri,const std::string & mode)70     int OpenRawFile(const Uri &uri, const std::string &mode)
71     {
72         return 0;
73     }
Insert(const Uri & uri,const DataShareValuesBucket & value)74     int Insert(const Uri &uri, const DataShareValuesBucket &value)
75     {
76         return 0;
77     }
Update(const Uri & uri,const DataSharePredicates & predicates,const DataShareValuesBucket & value)78     int Update(const Uri &uri, const DataSharePredicates &predicates, const DataShareValuesBucket &value)
79     {
80         return 0;
81     }
Delete(const Uri & uri,const DataSharePredicates & predicates)82     int Delete(const Uri &uri, const DataSharePredicates &predicates)
83     {
84         return 0;
85     }
Query(const Uri & uri,const DataSharePredicates & predicates,std::vector<std::string> & columns,DatashareBusinessError & businessError)86     std::shared_ptr<DataShareResultSet> Query(const Uri &uri, const DataSharePredicates &predicates,
87         std::vector<std::string> &columns, DatashareBusinessError &businessError)
88     {
89         return nullptr;
90     }
GetType(const Uri & uri)91     std::string GetType(const Uri &uri)
92     {
93         return "";
94     }
BatchInsert(const Uri & uri,const std::vector<DataShareValuesBucket> & values)95     int BatchInsert(const Uri &uri, const std::vector<DataShareValuesBucket> &values)
96     {
97         return 0;
98     }
RegisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)99     bool RegisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
100     {
101         return true;
102     }
UnregisterObserver(const Uri & uri,const sptr<AAFwk::IDataAbilityObserver> & dataObserver)103     bool UnregisterObserver(const Uri &uri, const sptr<AAFwk::IDataAbilityObserver> &dataObserver)
104     {
105         return true;
106     }
NotifyChange(const Uri & uri)107     bool NotifyChange(const Uri &uri)
108     {
109         return true;
110     }
NormalizeUri(const Uri & uri)111     Uri NormalizeUri(const Uri &uri)
112     {
113         return uri;
114     }
DenormalizeUri(const Uri & uri)115     Uri DenormalizeUri(const Uri &uri)
116     {
117         return uri;
118     }
GetFileTypes(const Uri & uri,const std::string & mimeTypeFilter)119     std::vector<std::string> GetFileTypes(const Uri &uri, const std::string &mimeTypeFilter)
120     {
121         return {};
122     }
123 };
124 
125 std::string DATA_SHARE_URI = "datashare:///com.acts.datasharetest";
126 std::shared_ptr<DataShareStub> dataShareStub = std::make_shared<TestDataShareStub>();
127 std::u16string InterfaceToken = u"OHOS.DataShare.IDataShare";
128 
SetUpTestCase(void)129 void DataShareStubTest::SetUpTestCase(void) {}
TearDownTestCase(void)130 void DataShareStubTest::TearDownTestCase(void) {}
SetUp(void)131 void DataShareStubTest::SetUp(void) {}
TearDown(void)132 void DataShareStubTest::TearDown(void) {}
133 
134 /**
135 * @tc.name: DataShareStub_CmdRegisterObserverExtProvider_Test_001
136 * @tc.desc: test CmdRegisterObserverExtProvideroteRequest default func
137 * @tc.type: FUNC
138 */
139 HWTEST_F(DataShareStubTest, DataShareStub_CmdRegisterObserverExtProvider_Test_001, TestSize.Level0)
140 {
141     LOG_INFO("DataShareStub_CmdRegisterObserverExtProvider_Test_001::Start");
142 
143     Uri uri(DATA_SHARE_URI);
144     sptr<IDataAbilityObserverTest> dataObserver = new (std::nothrow) IDataAbilityObserverTest();
145     ASSERT_NE(dataObserver, nullptr);
146     uint32_t code = static_cast<uint32_t>(IDataShareInterfaceCode::CMD_REGISTER_OBSERVEREXT_PROVIDER);
147 
148     MessageParcel data;
149     data.WriteInterfaceToken(InterfaceToken);
150     RegisterOption registerOption;
151     bool ret = ITypesUtil::Marshal(data, uri, dataObserver->AsObject(), true, registerOption);
152     EXPECT_TRUE(ret);
153 
154     MessageParcel reply;
155     MessageOption option;
156     ASSERT_NE(dataShareStub, nullptr);
157     int errCode = dataShareStub->OnRemoteRequest(code, data, reply, option);
158     EXPECT_EQ(errCode, 0);
159     ret = ITypesUtil::Unmarshal(reply, errCode);
160     EXPECT_TRUE(ret);
161     // return default errCode 0(E_OK)
162     EXPECT_EQ(errCode, 0);
163 
164     LOG_INFO("DataShareStub_CmdRegisterObserverExtProvider_Test_001::End");
165 }
166 
167 /**
168 * @tc.name: DataShareStub_CmdUnregisterObserverExtProvider_Test_001
169 * @tc.desc: test CmdUnregisterObserverExtProvideroteRequest default func
170 * @tc.type: FUNC
171 */
172 HWTEST_F(DataShareStubTest, DataShareStub_CmdUnregisterObserverExtProvider_Test_001, TestSize.Level0)
173 {
174     LOG_INFO("DataShareStub_CmdUnregisterObserverExtProvider_Test_001::Start");
175 
176     Uri uri(DATA_SHARE_URI);
177     sptr<IDataAbilityObserverTest> dataObserver = new (std::nothrow) IDataAbilityObserverTest();
178     ASSERT_NE(dataObserver, nullptr);
179     uint32_t code = static_cast<uint32_t>(IDataShareInterfaceCode::CMD_UNREGISTER_OBSERVEREXT_PROVIDER);
180 
181     MessageParcel data;
182     data.WriteInterfaceToken(InterfaceToken);
183     bool ret = ITypesUtil::Marshal(data, uri, dataObserver->AsObject());
184     EXPECT_TRUE(ret);
185 
186     MessageParcel reply;
187     MessageOption option;
188     int errCode = dataShareStub->OnRemoteRequest(code, data, reply, option);
189     EXPECT_EQ(errCode, 0);
190     ret = ITypesUtil::Unmarshal(reply, errCode);
191     EXPECT_TRUE(ret);
192     // return default errCode 0(E_OK)
193     EXPECT_EQ(errCode, 0);
194 
195     LOG_INFO("DataShareStub_CmdUnregisterObserverExtProvider_Test_001::End");
196 }
197 
198 /**
199 * @tc.name: DataShareStub_CmdNotifyChangeExtProvider_Test_001
200 * @tc.desc: test CmdNotifyChangeExtProvider default func
201 * @tc.type: FUNC
202 */
203 HWTEST_F(DataShareStubTest, DataShareStub_CmdNotifyChangeExtProvider_Test_001, TestSize.Level0)
204 {
205     LOG_INFO("DataShareStub_CmdNotifyChangeExtProvider_Test_001::Start");
206 
207     Uri uri(DATA_SHARE_URI);
208     ChangeInfo changeInfo = { ChangeInfo::ChangeType::INSERT, { uri } };
209     uint32_t code = static_cast<uint32_t>(IDataShareInterfaceCode::CMD_NOTIFY_CHANGEEXT_PROVIDER);
210 
211     MessageParcel data;
212     data.WriteInterfaceToken(InterfaceToken);
213     bool ret = ChangeInfo::Marshalling(changeInfo, data);
214     EXPECT_TRUE(ret);
215 
216     MessageParcel reply;
217     MessageOption option;
218     int errCode = dataShareStub->OnRemoteRequest(code, data, reply, option);
219     EXPECT_EQ(errCode, 0);
220     ret = ITypesUtil::Unmarshal(reply, errCode);
221     EXPECT_TRUE(ret);
222     // return default errCode 0(E_OK)
223     EXPECT_EQ(errCode, 0);
224 
225     LOG_INFO("DataShareStub_CmdNotifyChangeExtProvider_Test_001::End");
226 }
227 }
228 }