• 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 "set_domain_account_policy_plugin.h"
17 
18 #include <gtest/gtest.h>
19 
20 #include "domain_account_common.h"
21 #include "domain_account_policy.h"
22 #include "edm_ipc_interface_code.h"
23 #include "iplugin_manager.h"
24 #include "plugin_singleton.h"
25 #include "utils.h"
26 
27 using namespace testing::ext;
28 using namespace testing;
29 
30 namespace OHOS {
31 namespace EDM {
32 namespace TEST {
33 
34 class SetDomainAccountPolicyPluginTest : public testing::Test {
35 protected:
36     static void SetUpTestSuite(void);
37 
38     static void TearDownTestSuite(void);
39 };
40 
SetUpTestSuite(void)41 void SetDomainAccountPolicyPluginTest::SetUpTestSuite(void)
42 {
43     Utils::SetEdmServiceEnable();
44     Utils::SetEdmInitialEnv();
45 }
46 
TearDownTestSuite(void)47 void SetDomainAccountPolicyPluginTest::TearDownTestSuite(void)
48 {
49     Utils::SetEdmServiceDisable();
50     Utils::ResetTokenTypeAndUid();
51     ASSERT_TRUE(Utils::IsOriginalUTEnv());
52     std::cout << "now ut process is orignal ut env : " << Utils::IsOriginalUTEnv() << std::endl;
53 }
54 
55 /**
56  * @tc.name: TestOnHandlePolicyFuncCodeError
57  * @tc.desc: Test OnHandlePolicy error
58  * @tc.type: FUNC
59  */
60 HWTEST_F(SetDomainAccountPolicyPluginTest, TestOnHandlePolicyFuncCodeError, TestSize.Level1)
61 {
62     std::shared_ptr<SetDomainAccountPolicyPlugin> plugin = std::make_shared<SetDomainAccountPolicyPlugin>();
63     MessageParcel data;
64     MessageParcel reply;
65     HandlePolicyData handlePolicyData{"TestString", "", false};
66     std::uint32_t funcCode = POLICY_FUNC_CODE((std::uint32_t)FuncOperateType::REMOVE,
67         EdmInterfaceCode::DOMAIN_ACCOUNT_POLICY);
68     ErrCode ret = plugin->OnHandlePolicy(funcCode, data, reply, handlePolicyData, DEFAULT_USER_ID);
69     ASSERT_TRUE(ret == EdmReturnErrCode::SYSTEM_ABNORMALLY);
70 }
71 
72 /**
73  * @tc.name: TestOnHandlePolicyParamTypeError
74  * @tc.desc: Test OnHandlePolicy param type error
75  * @tc.type: FUNC
76  */
77 HWTEST_F(SetDomainAccountPolicyPluginTest, TestOnHandlePolicyParamTypeError, TestSize.Level1)
78 {
79     std::shared_ptr<SetDomainAccountPolicyPlugin> plugin = std::make_shared<SetDomainAccountPolicyPlugin>();
80     MessageParcel data;
81     data.WriteBool(false); // correct value should is DomainPolicyInfo
82     DomainAccountPolicy domainAccountPolicy(300, 200, 100);
83     domainAccountPolicy.Marshalling(data);
84     MessageParcel reply;
85     HandlePolicyData handlePolicyData{"TestString", "", false};
86     std::uint32_t funcCode = POLICY_FUNC_CODE((std::uint32_t)FuncOperateType::SET,
87         EdmInterfaceCode::DOMAIN_ACCOUNT_POLICY);
88     ErrCode ret = plugin->OnHandlePolicy(funcCode, data, reply, handlePolicyData, DEFAULT_USER_ID);
89     ASSERT_TRUE(ret == EdmReturnErrCode::PARAM_ERROR);
90 
91     MessageParcel data2;
92     OHOS::AccountSA::DomainAccountInfo domainAccountInfo;
93     domainAccountInfo.Marshalling(data2);
94     MessageParcel reply2;
95     ret = plugin->OnHandlePolicy(funcCode, data2, reply2, handlePolicyData, DEFAULT_USER_ID);
96     ASSERT_TRUE(ret == EdmReturnErrCode::PARAM_ERROR);
97 }
98 
99 /**
100  * @tc.name: TestOnHandlePolicyDomainAccountPolicyCheckParameterValidityError
101  * @tc.desc: Test OnHandlePolicy DomainAccountPolicy CheckParameterValidity error
102  * @tc.type: FUNC
103  */
104 HWTEST_F(SetDomainAccountPolicyPluginTest, TestOnHandlePolicyDomainAccountPolicyCheckParameterValidityError,
105     TestSize.Level1)
106 {
107     std::shared_ptr<SetDomainAccountPolicyPlugin> plugin = std::make_shared<SetDomainAccountPolicyPlugin>();
108     MessageParcel data;
109     OHOS::AccountSA::DomainAccountInfo domainAccountInfo;
110     domainAccountInfo.Marshalling(data);
111     DomainAccountPolicy domainAccountPolicy(300, -2, 100); // -2 is error param
112     domainAccountPolicy.Marshalling(data);
113     MessageParcel reply;
114     HandlePolicyData handlePolicyData{"TestString", "", false};
115     std::uint32_t funcCode = POLICY_FUNC_CODE((std::uint32_t)FuncOperateType::SET,
116         EdmInterfaceCode::DOMAIN_ACCOUNT_POLICY);
117     ErrCode ret = plugin->OnHandlePolicy(funcCode, data, reply, handlePolicyData, DEFAULT_USER_ID);
118     ASSERT_TRUE(ret == EdmReturnErrCode::PARAM_ERROR);
119 }
120 
121 /**
122  * @tc.name: TestOnHandlePolicyDomainAccountInfoError
123  * @tc.desc: Test OnHandlePolicy DomainAccountInfo error
124  * @tc.type: FUNC
125  */
126 HWTEST_F(SetDomainAccountPolicyPluginTest, TestOnHandlePolicyDomainAccountInfoError, TestSize.Level1)
127 {
128     std::shared_ptr<SetDomainAccountPolicyPlugin> plugin = std::make_shared<SetDomainAccountPolicyPlugin>();
129     MessageParcel data;
130     OHOS::AccountSA::DomainAccountInfo domainAccountInfo;
131     std::string errValue = "errValue";
132     domainAccountInfo.accountId_ = errValue;
133     domainAccountInfo.accountName_ = errValue;
134     domainAccountInfo.domain_ = errValue;
135     domainAccountInfo.serverConfigId_ = errValue;
136     domainAccountInfo.Marshalling(data);
137     DomainAccountPolicy domainAccountPolicy(300, 200, 100);
138     domainAccountPolicy.Marshalling(data);
139     MessageParcel reply;
140     HandlePolicyData handlePolicyData{"TestString", "", false};
141     std::uint32_t funcCode = POLICY_FUNC_CODE((std::uint32_t)FuncOperateType::SET,
142         EdmInterfaceCode::DOMAIN_ACCOUNT_POLICY);
143     ErrCode ret = plugin->OnHandlePolicy(funcCode, data, reply, handlePolicyData, DEFAULT_USER_ID);
144     ASSERT_TRUE(ret == EdmReturnErrCode::SYSTEM_ABNORMALLY);
145 }
146 
147 /**
148  * @tc.name: TestOnGetPolicyParamTypeError
149  * @tc.desc: Test OnGetPolicy param type error
150  * @tc.type: FUNC
151  */
152 HWTEST_F(SetDomainAccountPolicyPluginTest, TestOnGetPolicyParamTypeError, TestSize.Level1)
153 {
154     std::shared_ptr<SetDomainAccountPolicyPlugin> plugin = std::make_shared<SetDomainAccountPolicyPlugin>();
155     MessageParcel data;
156     data.WriteBool(false);
157     MessageParcel reply;
158     std::string policyData{"TestString"};
159     ErrCode ret = plugin->OnGetPolicy(policyData, data, reply, DEFAULT_USER_ID);
160     int32_t replyCode = reply.ReadInt32();
161     ASSERT_TRUE(ret == EdmReturnErrCode::PARAM_ERROR);
162     ASSERT_TRUE(replyCode == EdmReturnErrCode::PARAM_ERROR);
163 }
164 
165 /**
166  * @tc.name: TestOnGetPolicyDomainAccountInfoError
167  * @tc.desc: Test OnGetPolicy DomainAccountInfo error
168  * @tc.type: FUNC
169  */
170 HWTEST_F(SetDomainAccountPolicyPluginTest, TestOnGetPolicyDomainAccountInfoError, TestSize.Level1)
171 {
172     std::shared_ptr<SetDomainAccountPolicyPlugin> plugin = std::make_shared<SetDomainAccountPolicyPlugin>();
173     MessageParcel data;
174     OHOS::AccountSA::DomainAccountInfo domainAccountInfo;
175     std::string errValue = "errValue";
176     domainAccountInfo.accountId_ = errValue;
177     domainAccountInfo.accountName_ = errValue;
178     domainAccountInfo.domain_ = errValue;
179     domainAccountInfo.serverConfigId_ = errValue;
180     domainAccountInfo.Marshalling(data);
181     MessageParcel reply;
182     std::string policyData{"TestString"};
183     ErrCode ret = plugin->OnGetPolicy(policyData, data, reply, DEFAULT_USER_ID);
184     int32_t replyCode = reply.ReadInt32();
185     ASSERT_TRUE(ret == EdmReturnErrCode::SYSTEM_ABNORMALLY);
186     ASSERT_TRUE(replyCode == EdmReturnErrCode::SYSTEM_ABNORMALLY);
187 }
188 
189 /**
190  * @tc.name: TestOnHandlePolicyAndOnGetPolicyNormal
191  * @tc.desc: Test OnHandlePolicy And OnGetPolicy normal
192  * @tc.type: FUNC
193  */
194 HWTEST_F(SetDomainAccountPolicyPluginTest, TestOnHandlePolicyAndOnGetPolicyNormal, TestSize.Level1)
195 {
196     std::shared_ptr<SetDomainAccountPolicyPlugin> plugin = std::make_shared<SetDomainAccountPolicyPlugin>();
197     MessageParcel data;
198     OHOS::AccountSA::DomainAccountInfo domainAccountInfo;
199     domainAccountInfo.Marshalling(data);
200     DomainAccountPolicy domainAccountPolicy(300, 200, 100);
201     domainAccountPolicy.Marshalling(data);
202     MessageParcel reply;
203     HandlePolicyData handlePolicyData{"TestString", "", false};
204     std::uint32_t funcCode = POLICY_FUNC_CODE((std::uint32_t)FuncOperateType::SET,
205         EdmInterfaceCode::DOMAIN_ACCOUNT_POLICY);
206     ErrCode ret = plugin->OnHandlePolicy(funcCode, data, reply, handlePolicyData, DEFAULT_USER_ID);
207     ASSERT_TRUE(ret == ERR_OK);
208 
209     MessageParcel dataOnGetPolicy;
210     OHOS::AccountSA::DomainAccountInfo domainAccountInfo2;
211     domainAccountInfo2.Marshalling(dataOnGetPolicy);
212     MessageParcel replyOnGetPolicy;
213     std::string policyData{"TestString"};
214     ret = plugin->OnGetPolicy(policyData, dataOnGetPolicy, replyOnGetPolicy, DEFAULT_USER_ID);
215     int32_t replyCode = reply.ReadInt32();
216     ASSERT_TRUE(ret == ERR_OK);
217     ASSERT_TRUE(replyCode == ERR_OK);
218 
219     DomainAccountPolicy domainAccountPolicy2;
220     bool unmar = DomainAccountPolicy::Unmarshalling(replyOnGetPolicy, domainAccountPolicy2);
221     ASSERT_TRUE(unmar);
222 }
223 } // namespace TEST
224 } // namespace EDM
225 } // namespace OHOS