• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2021-2022 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 <gtest/gtest.h>
16 #include <unistd.h>
17 
18 #include "accesstoken_kit.h"
19 #include "datashare_helper.h"
20 #include "datashare_log.h"
21 #include "hap_token_info.h"
22 #include "iservice_registry.h"
23 #include "system_ability_definition.h"
24 #include "token_setproc.h"
25 
26 namespace OHOS {
27 namespace DataShare {
28 using namespace testing::ext;
29 using namespace OHOS::Security::AccessToken;
30 constexpr int STORAGE_MANAGER_MANAGER_ID = 5003;
31 std::string DATA_SHARE_URI = "datashare:///com.acts.datasharetest";
32 std::string SLIENT_ACCESS_URI = "datashare:///com.acts.datasharetest/entry/DB00/TBL00?Proxy=true";
33 std::string TBL_STU_NAME = "name";
34 std::string TBL_STU_AGE = "age";
35 std::shared_ptr<DataShare::DataShareHelper> g_slientAccessHelper;
36 
37 class SlientAccessTest : public testing::Test {
38 public:
39     static void SetUpTestCase(void);
40     static void TearDownTestCase(void);
41     void SetUp();
42     void TearDown();
43 };
44 
CreateDataShareHelper(int32_t systemAbilityId,std::string uri)45 std::shared_ptr<DataShare::DataShareHelper> CreateDataShareHelper(int32_t systemAbilityId, std::string uri)
46 {
47     LOG_INFO("CreateDataShareHelper start");
48     auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
49     if (saManager == nullptr) {
50         LOG_ERROR("GetSystemAbilityManager get samgr failed.");
51         return nullptr;
52     }
53     auto remoteObj = saManager->GetSystemAbility(systemAbilityId);
54     if (remoteObj == nullptr) {
55         LOG_ERROR("GetSystemAbility service failed.");
56         return nullptr;
57     }
58     return DataShare::DataShareHelper::Creator(remoteObj, uri);
59 }
60 
SetUpTestCase(void)61 void SlientAccessTest::SetUpTestCase(void)
62 {
63     LOG_INFO("SetUpTestCase invoked");
64     auto dataShareHelper = CreateDataShareHelper(STORAGE_MANAGER_MANAGER_ID, DATA_SHARE_URI);
65     ASSERT_TRUE(dataShareHelper != nullptr);
66     int sleepTime = 3;
67     sleep(sleepTime);
68 
69     HapInfoParams info = {
70         .userID = 100,
71         .bundleName = "ohos.datashareclienttest.demo",
72         .instIndex = 0,
73         .appIDDesc = "ohos.datashareclienttest.demo"
74     };
75     HapPolicyParams policy = {
76         .apl = APL_NORMAL,
77         .domain = "test.domain",
78         .permList = {
79             {
80                 .permissionName = "ohos.permission.test",
81                 .bundleName = "ohos.datashareclienttest.demo",
82                 .grantMode = 1,
83                 .availableLevel = APL_NORMAL,
84                 .label = "label",
85                 .labelId = 1,
86                 .description = "ohos.datashareclienttest.demo",
87                 .descriptionId = 1
88             }
89         },
90         .permStateList = {
91             {
92                 .permissionName = "ohos.permission.test",
93                 .isGeneral = true,
94                 .resDeviceID = { "local" },
95                 .grantStatus = { PermissionState::PERMISSION_GRANTED },
96                 .grantFlags = { 1 }
97             }
98         }
99     };
100     AccessTokenKit::AllocHapToken(info, policy);
101     auto testTokenId = Security::AccessToken::AccessTokenKit::GetHapTokenID(
102         info.userID, info.bundleName, info.instIndex);
103     SetSelfTokenID(testTokenId);
104 
105     g_slientAccessHelper = CreateDataShareHelper(STORAGE_MANAGER_MANAGER_ID, SLIENT_ACCESS_URI);
106     ASSERT_TRUE(g_slientAccessHelper != nullptr);
107     LOG_INFO("SetUpTestCase end");
108 }
109 
TearDownTestCase(void)110 void SlientAccessTest::TearDownTestCase(void)
111 {
112     auto tokenId = AccessTokenKit::GetHapTokenID(100, "ohos.datashareclienttest.demo", 0);
113     AccessTokenKit::DeleteToken(tokenId);
114     g_slientAccessHelper = nullptr;
115 }
116 
SetUp(void)117 void SlientAccessTest::SetUp(void) {}
TearDown(void)118 void SlientAccessTest::TearDown(void) {}
119 
120 HWTEST_F(SlientAccessTest, SlientAccess_Insert_Test_001, TestSize.Level0)
121 {
122     LOG_INFO("SlientAccess_Insert_Test_001::Start");
123     auto helper = g_slientAccessHelper;
124     Uri uri(SLIENT_ACCESS_URI);
125     DataShare::DataShareValuesBucket valuesBucket;
126     std::string value = "lisi";
127     valuesBucket.Put(TBL_STU_NAME, value);
128     int age = 25;
129     valuesBucket.Put(TBL_STU_AGE, age);
130 
131     int retVal = helper->Insert(uri, valuesBucket);
132     EXPECT_EQ((retVal > 0), true);
133     LOG_INFO("SlientAccess_Insert_Test_001::End");
134 }
135 
136 HWTEST_F(SlientAccessTest, SlientAccess_Update_Test_001, TestSize.Level0)
137 {
138     LOG_INFO("SlientAccess_Update_Test_001::Start");
139     auto helper = g_slientAccessHelper;
140     Uri uri(SLIENT_ACCESS_URI);
141     DataShare::DataShareValuesBucket valuesBucket;
142     int value = 50;
143     valuesBucket.Put(TBL_STU_AGE, value);
144     DataShare::DataSharePredicates predicates;
145     std::string selections = TBL_STU_NAME + " = 'lisi'";
146     predicates.SetWhereClause(selections);
147     int retVal = helper->Update(uri, predicates, valuesBucket);
148     EXPECT_EQ((retVal > 0), true);
149     LOG_INFO("SlientAccess_Update_Test_001::End");
150 }
151 
152 HWTEST_F(SlientAccessTest, SlientAccess_Query_Test_001, TestSize.Level0)
153 {
154     LOG_INFO("SlientAccess_Query_Test_001::Start");
155     auto helper = g_slientAccessHelper;
156     Uri uri(SLIENT_ACCESS_URI);
157     DataShare::DataSharePredicates predicates;
158     predicates.EqualTo(TBL_STU_NAME, "lisi");
159     vector<string> columns;
160     auto resultSet = helper->Query(uri, predicates, columns);
161     int result = 0;
162     if (resultSet != nullptr) {
163         resultSet->GetRowCount(result);
164     }
165     EXPECT_EQ(result, 1);
166     LOG_INFO("SlientAccess_Query_Test_001::End");
167 }
168 
169 HWTEST_F(SlientAccessTest, SlientAccess_Delete_Test_001, TestSize.Level0)
170 {
171     LOG_INFO("SlientAccess_Delete_Test_001::Start");
172     auto helper = g_slientAccessHelper;
173     Uri uri(SLIENT_ACCESS_URI);
174 
175     DataShare::DataSharePredicates deletePredicates;
176     std::string selections = TBL_STU_NAME + " = 'lisi'";
177     deletePredicates.SetWhereClause(selections);
178     int retVal = helper->Delete(uri, deletePredicates);
179     EXPECT_EQ((retVal > 0), true);
180     LOG_INFO("SlientAccess_Delete_Test_001::End");
181 }
182 } // namespace DataShare
183 } // namespace OHOS