1 /*
2 * Copyright (C) 2023 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 #define private public
17 #define protected public
18 #include "security_mode_parser.h"
19
20 #include "ime_cfg_manager.h"
21 #include "ime_info_inquirer.h"
22 #include "input_method_system_ability.h"
23 #undef private
24
25 #include <gtest/gtest.h>
26
27 using namespace testing::ext;
28 using namespace OHOS::DataShare;
29 namespace OHOS {
30 namespace MiscServices {
31 const std::string SECURITY_KEY = "settings.inputmethod.full_experience";
32 constexpr uint32_t USER_100_TOTAL_COUNT = 3;
33 constexpr uint32_t USER_101_TOTAL_COUNT = 1;
34 class SecurityModeParserTest : public testing::Test {
35 public:
36 static void SetUpTestCase(void);
37 static void TearDownTestCase(void);
38 void SetUp();
39 void TearDown();
40 static std::shared_ptr<DataShareHelper> helper_;
41 static std::shared_ptr<DataShareResultSet> resultSet_;
42 static std::shared_ptr<InputMethodSystemAbility> service_;
43 static constexpr int32_t USER_ID = 100;
44 };
45 std::shared_ptr<DataShareHelper> SecurityModeParserTest::helper_;
46 std::shared_ptr<DataShareResultSet> SecurityModeParserTest::resultSet_;
47 std::shared_ptr<InputMethodSystemAbility> SecurityModeParserTest::service_;
SetUpTestCase(void)48 void SecurityModeParserTest::SetUpTestCase(void)
49 {
50 std::vector<std::string> columns = { "VALUE" };
51 helper_ = DataShare::DataShareHelper::Creator(nullptr, "tsetUri", "tsetUri");
52 DataSharePredicates predicates;
53 Uri uri("tsetUri");
54 resultSet_ = helper_->Query(uri, predicates, columns);
55 SecurityModeParser::GetInstance()->Initialize(USER_ID);
56
57 service_ = std::make_shared<InputMethodSystemAbility>();
58 service_->OnStart();
59 service_->userId_ = USER_ID;
60 }
61
TearDownTestCase(void)62 void SecurityModeParserTest::TearDownTestCase(void)
63 {
64 }
65
SetUp()66 void SecurityModeParserTest::SetUp()
67 {
68 resultSet_->strValue_ = "{\"fullExperienceList\" : {\"100\" : [ \"xiaoyiIme\", \"baiduIme\", "
69 "\"sougouIme\"],\"101\" : [\"sougouIme\"]}}";
70
71 SecurityModeParser::GetInstance()->fullModeList_.clear();
72 }
73
TearDown()74 void SecurityModeParserTest::TearDown()
75 {
76 }
77
78 /**
79 * @tc.name: testGetFullModeList_001
80 * @tc.desc: Get 101 user fullModeList
81 * @tc.type: FUNC
82 * @tc.require:
83 * @tc.author: guojin
84 */
85 HWTEST_F(SecurityModeParserTest, testGetFullModeList_001, TestSize.Level0)
86 {
87 IMSA_HILOGI("SecurityModeParserTest testGetFullModeList_001 START");
88 int32_t ret = SecurityModeParser::GetInstance()->GetFullModeList(101);
89 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
90 EXPECT_EQ(SecurityModeParser::GetInstance()->fullModeList_.size(), USER_101_TOTAL_COUNT);
91 if (SecurityModeParser::GetInstance()->fullModeList_.size() == USER_101_TOTAL_COUNT) {
92 EXPECT_EQ(SecurityModeParser::GetInstance()->fullModeList_[0], "sougouIme");
93 }
94 }
95
96 /**
97 * @tc.name: testGetFullModeList_002
98 * @tc.desc: Get 100 user fullModeList
99 * @tc.type: FUNC
100 * @tc.require:
101 * @tc.author: guojin
102 */
103 HWTEST_F(SecurityModeParserTest, testGetFullModeList_002, TestSize.Level0)
104 {
105 IMSA_HILOGI("SecurityModeParserTest testGetFullModeList_002 START");
106 int32_t ret = SecurityModeParser::GetInstance()->GetFullModeList(SecurityModeParserTest::USER_ID);
107 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
108 EXPECT_EQ(SecurityModeParser::GetInstance()->fullModeList_.size(), USER_100_TOTAL_COUNT);
109 if (SecurityModeParser::GetInstance()->fullModeList_.size() == USER_100_TOTAL_COUNT) {
110 EXPECT_EQ(SecurityModeParser::GetInstance()->fullModeList_[0], "xiaoyiIme");
111 EXPECT_EQ(SecurityModeParser::GetInstance()->fullModeList_[1], "baiduIme");
112 EXPECT_EQ(SecurityModeParser::GetInstance()->fullModeList_[2], "sougouIme");
113 }
114 }
115
116 /**
117 * @tc.name: testGetSecurityMode_001
118 * @tc.desc: Get 100 user security mode
119 * @tc.type: FUNC
120 * @tc.require:
121 * @tc.author: guojin
122 */
123 HWTEST_F(SecurityModeParserTest, testGetSecurityMode_001, TestSize.Level0)
124 {
125 IMSA_HILOGI("SecurityModeParserTest testGetSecurityMode_001 START");
126 int32_t ret = SecurityModeParser::GetInstance()->GetFullModeList(SecurityModeParserTest::USER_ID);
127 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
128 int32_t security;
129 ret = SecurityModeParser::GetInstance()->GetSecurityMode("xiaoyiIme", security, SecurityModeParserTest::USER_ID);
130 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
131 EXPECT_EQ(security, 1);
132 }
133
134 /**
135 * @tc.name: testGetSecurityMode_002
136 * @tc.desc: Get 100 user security mode
137 * @tc.type: FUNC
138 * @tc.require:
139 * @tc.author: guojin
140 */
141 HWTEST_F(SecurityModeParserTest, testGetSecurityMode_002, TestSize.Level0)
142 {
143 IMSA_HILOGI("SecurityModeParserTest testGetSecurityMode_002 START");
144 int32_t ret = SecurityModeParser::GetInstance()->GetFullModeList(SecurityModeParserTest::USER_ID);
145 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
146 int32_t security;
147 ret = SecurityModeParser::GetInstance()->GetSecurityMode("test", security, SecurityModeParserTest::USER_ID);
148 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
149 EXPECT_EQ(security, 0);
150 }
151
152 /**
153 * @tc.name: testGetSecurityMode_003
154 * @tc.desc: Get 100 user security mode
155 * @tc.type: FUNC
156 * @tc.require:
157 * @tc.author: guojin
158 */
159 HWTEST_F(SecurityModeParserTest, testGetSecurityMode_003, TestSize.Level0)
160 {
161 IMSA_HILOGI("SecurityModeParserTest testGetSecurityMode_003 START");
162 service_->enableSecurityMode_ = false;
163 int32_t securityMode;
164 auto ret = service_->GetSecurityMode(securityMode);
165 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
166 EXPECT_EQ(securityMode, 1);
167 }
168
169 /**
170 * @tc.name: testGetSecurityMode_004
171 * @tc.desc: Get 100 user security mode
172 * @tc.type: FUNC
173 * @tc.require:
174 * @tc.author: guojin
175 */
176 HWTEST_F(SecurityModeParserTest, testGetSecurityMode_004, TestSize.Level0)
177 {
178 IMSA_HILOGI("SecurityModeParserTest testGetSecurityMode_004 START");
179 service_->enableSecurityMode_ = true;
180 int32_t securityMode;
181 auto ret = service_->GetSecurityMode(securityMode);
182 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
183 EXPECT_EQ(securityMode, 0);
184 }
185
186 /**
187 * @tc.name: testIsSecurityChange_001
188 * @tc.desc: is security change
189 * @tc.type: FUNC
190 * @tc.require:
191 * @tc.author: guojin
192 */
193 HWTEST_F(SecurityModeParserTest, testIsSecurityChange_001, TestSize.Level0)
194 {
195 IMSA_HILOGI("SecurityModeParserTest testIsSecurityChange_001 START");
196 int32_t ret = SecurityModeParser::GetInstance()->GetFullModeList(SecurityModeParserTest::USER_ID);
197 EXPECT_EQ(ret, ErrorCode::NO_ERROR);
198 SecurityModeParserTest::resultSet_->strValue_ = "{\"fullExperienceList\" : {\"100\" : [ \"baiduIme\", "
199 "\"sougouIme\"],\"101\" : [\"sougouIme\"]}}";
200 bool isSecurityChange =
201 SecurityModeParser::GetInstance()->IsSecurityChange("xiaoyiIme", SecurityModeParserTest::USER_ID);
202 EXPECT_EQ(isSecurityChange, true);
203 }
204 } // namespace MiscServices
205 } // namespace OHOS