1 /*
2 * Copyright (c) 2022-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 #include <gtest/gtest.h>
17 #include <string>
18 #include <system_ability_definition.h>
19
20 #include "datetime_manager_proxy.h"
21 #include "edm_sys_manager_mock.h"
22 #include "enterprise_device_mgr_stub_mock.h"
23 #include "utils.h"
24
25 using namespace testing::ext;
26 using namespace testing;
27
28 namespace OHOS {
29 namespace EDM {
30 namespace TEST {
31 class DatetimeManagerProxyTest : public testing::Test {
32 protected:
33 void SetUp() override;
34
35 void TearDown() override;
36
37 static void TearDownTestSuite(void);
38 std::shared_ptr<DatetimeManagerProxy> dateTimeManagerProxy;
39 std::shared_ptr<EdmSysManager> edmSysManager_ = nullptr;
40 sptr<EnterpriseDeviceMgrStubMock> object_ = nullptr;
41 };
42
SetUp()43 void DatetimeManagerProxyTest::SetUp()
44 {
45 dateTimeManagerProxy = DatetimeManagerProxy::GetDatetimeManagerProxy();
46 edmSysManager_ = std::make_shared<EdmSysManager>();
47 object_ = new (std::nothrow) EnterpriseDeviceMgrStubMock();
48 edmSysManager_->RegisterSystemAbilityOfRemoteObject(ENTERPRISE_DEVICE_MANAGER_SA_ID, object_);
49 Utils::SetEdmServiceEnable();
50 }
51
TearDown()52 void DatetimeManagerProxyTest::TearDown()
53 {
54 if (dateTimeManagerProxy) {
55 dateTimeManagerProxy.reset();
56 }
57 edmSysManager_->UnregisterSystemAbilityOfRemoteObject(ENTERPRISE_DEVICE_MANAGER_SA_ID);
58 object_ = nullptr;
59 Utils::SetEdmServiceDisable();
60 }
61
TearDownTestSuite()62 void DatetimeManagerProxyTest::TearDownTestSuite()
63 {
64 ASSERT_FALSE(Utils::GetEdmServiceState());
65 std::cout << "EdmServiceState : " << Utils::GetEdmServiceState() << std::endl;
66 }
67
68 /**
69 * @tc.name: TestSetDateTimeSuc
70 * @tc.desc: Test SetDateTime success func.
71 * @tc.type: FUNC
72 */
73 HWTEST_F(DatetimeManagerProxyTest, TestSetDateTimeSuc, TestSize.Level1)
74 {
75 AppExecFwk::ElementName admin;
76 admin.SetBundleName("com.edm.test.demo");
77 admin.SetAbilityName("com.edm.test.demo.Ability");
78 int64_t time = 1674365400000;
79 EXPECT_CALL(*object_, SendRequest(_, _, _, _))
80 .Times(1)
81 .WillOnce(Invoke(object_.GetRefPtr(), &EnterpriseDeviceMgrStubMock::InvokeSendRequestSetPolicy));
82 int32_t ret = dateTimeManagerProxy->SetDateTime(admin, time);
83 EXPECT_TRUE(ret == ERR_OK);
84 }
85
86 /**
87 * @tc.name: TestSetDateTimeFail
88 * @tc.desc: Test SetDateTime without enable edm service func.
89 * @tc.type: FUNC
90 */
91 HWTEST_F(DatetimeManagerProxyTest, TestSetDateTimeFail, TestSize.Level1)
92 {
93 Utils::SetEdmServiceDisable();
94 AppExecFwk::ElementName admin;
95 admin.SetBundleName("com.edm.test.demo");
96 admin.SetAbilityName("com.edm.test.demo.Ability");
97 int64_t time = 1674365400000;
98 int32_t ret = dateTimeManagerProxy->SetDateTime(admin, time);
99 EXPECT_TRUE(ret == EdmReturnErrCode::ADMIN_INACTIVE);
100 }
101
102 /**
103 * @tc.name: TestDisallowModifyDateTimeSuc
104 * @tc.desc: Test DisallowModifyDateTime success func.
105 * @tc.type: FUNC
106 */
107 HWTEST_F(DatetimeManagerProxyTest, TestDisallowModifyDateTimeSuc, TestSize.Level1)
108 {
109 OHOS::AppExecFwk::ElementName admin;
110 EXPECT_CALL(*object_, SendRequest(_, _, _, _))
111 .Times(1)
112 .WillOnce(Invoke(object_.GetRefPtr(), &EnterpriseDeviceMgrStubMock::InvokeSendRequestSetPolicy));
113 ErrCode ret = dateTimeManagerProxy->DisallowModifyDateTime(admin, true);
114 ASSERT_TRUE(ret == ERR_OK);
115 }
116
117 /**
118 * @tc.name: TestDisallowModifyDateTimeFail
119 * @tc.desc: Test DisallowModifyDateTime without enable edm service func.
120 * @tc.type: FUNC
121 */
122 HWTEST_F(DatetimeManagerProxyTest, TestDisallowModifyDateTimeFail, TestSize.Level1)
123 {
124 Utils::SetEdmServiceDisable();
125 OHOS::AppExecFwk::ElementName admin;
126 ErrCode ret = dateTimeManagerProxy->DisallowModifyDateTime(admin, true);
127 ASSERT_TRUE(ret == EdmReturnErrCode::ADMIN_INACTIVE);
128 }
129
130 /**
131 * @tc.name: TestIsModifyDateTimeDisallowed
132 * @tc.desc: Test IsModifyDateTimeDisallowed success func if have Admin parameter.
133 * @tc.type: FUNC
134 */
135 HWTEST_F(DatetimeManagerProxyTest, TestIsModifyDateTimeDisallowed001, TestSize.Level1)
136 {
137 OHOS::AppExecFwk::ElementName admin;
138 bool result = true;
139 EXPECT_CALL(*object_, SendRequest(_, _, _, _))
140 .Times(1)
141 .WillOnce(Invoke(object_.GetRefPtr(), &EnterpriseDeviceMgrStubMock::InvokeSendRequestGetPolicy));
142 ErrCode ret = dateTimeManagerProxy->IsModifyDateTimeDisallowed(&admin, result);
143 ASSERT_TRUE(ret == ERR_OK);
144 }
145
146 /**
147 * @tc.name: TestIsModifyDateTimeDisallowed
148 * @tc.desc: Test IsModifyDateTimeDisallowed func if have Admin parameter without enable edm service.
149 * @tc.type: FUNC
150 */
151 HWTEST_F(DatetimeManagerProxyTest, TestIsModifyDateTimeDisallowed002, TestSize.Level1)
152 {
153 Utils::SetEdmServiceDisable();
154 OHOS::AppExecFwk::ElementName admin;
155 bool result = true;
156 ErrCode ret = dateTimeManagerProxy->IsModifyDateTimeDisallowed(&admin, result);
157 ASSERT_TRUE(ret == EdmReturnErrCode::ADMIN_INACTIVE);
158 }
159
160 /**
161 * @tc.name: TestIsModifyDateTimeDisallowed
162 * @tc.desc: Test IsModifyDateTimeDisallowed success func if does not have Admin parameter.
163 * @tc.type: FUNC
164 */
165 HWTEST_F(DatetimeManagerProxyTest, TestIsModifyDateTimeDisallowed003, TestSize.Level1)
166 {
167 OHOS::AppExecFwk::ElementName admin;
168 bool result = false;
169 EXPECT_CALL(*object_, SendRequest(_, _, _, _))
170 .Times(1)
171 .WillOnce(Invoke(object_.GetRefPtr(), &EnterpriseDeviceMgrStubMock::InvokeBoolSendRequestGetPolicy));
172 ErrCode ret = dateTimeManagerProxy->IsModifyDateTimeDisallowed(nullptr, result);
173 ASSERT_TRUE(ret == ERR_OK);
174 ASSERT_TRUE(result);
175 }
176
177 /**
178 * @tc.name: TestIsModifyDateTimeDisallowed
179 * @tc.desc: Test IsModifyDateTimeDisallowed func if does not have Admin parameter without enable edm service.
180 * @tc.type: FUNC
181 */
182 HWTEST_F(DatetimeManagerProxyTest, TestIsModifyDateTimeDisallowed004, TestSize.Level1)
183 {
184 Utils::SetEdmServiceDisable();
185 bool result = false;
186 ErrCode ret = dateTimeManagerProxy->IsModifyDateTimeDisallowed(nullptr, result);
187 ASSERT_TRUE(ret == ERR_OK);
188 ASSERT_FALSE(result);
189 }
190 } // namespace TEST
191 } // namespace EDM
192 } // namespace OHOS
193