• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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