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 #include <cstring>
17 #include <gmock/gmock.h>
18 #include <gtest/gtest.h>
19
20 #define private public
21 #include "enterprise_device_management_adapter_impl.h"
22 #if defined(NWEB_ENTERPRISE_DEVICE_MANAGER_ENABLE)
23 #include "browser_proxy.h"
24 #endif
25 #include "common_event_data.h"
26
27 using namespace testing;
28 using namespace testing::ext;
29 #if defined(NWEB_ENTERPRISE_DEVICE_MANAGER_ENABLE)
30 using namespace OHOS::EDM;
31 #endif
32 using namespace OHOS::EventFwk;
33
34 namespace OHOS {
35 namespace {
36 bool g_subscribeCommonEventRet = true;
37 bool g_unSubscribeCommonEventRet = true;
38 using Want = OHOS::AAFwk::Want;
39 } //namespace
40 namespace EventFwk {
SubscribeCommonEvent(const std::shared_ptr<CommonEventSubscriber> & subscriber)41 bool CommonEventManager::SubscribeCommonEvent(const std::shared_ptr<CommonEventSubscriber> &subscriber)
42 {
43 return g_subscribeCommonEventRet;
44 }
UnSubscribeCommonEvent(const std::shared_ptr<CommonEventSubscriber> & subscriber)45 bool CommonEventManager::UnSubscribeCommonEvent(const std::shared_ptr<CommonEventSubscriber> &subscriber)
46 {
47 return g_unSubscribeCommonEventRet;
48 }
49 }
50
51 #if defined(NWEB_ENTERPRISE_DEVICE_MANAGER_ENABLE)
52 namespace EDM {
53 namespace {
54 std::shared_ptr<BrowserProxy> g_browserProxy = nullptr;
55 } // namespace
GetBrowserProxy()56 std::shared_ptr<BrowserProxy> BrowserProxy::GetBrowserProxy()
57 {
58 return g_browserProxy;
59 }
60 }
61 #endif
62
63 namespace NWeb {
64 class EnterpriseDeviceImplTest : public testing::Test {
65 public:
66 static void SetUpTestCase(void);
67 static void TearDownTestCase(void);
68 void SetUp();
69 void TearDown();
70 };
71
SetUpTestCase(void)72 void EnterpriseDeviceImplTest::SetUpTestCase(void)
73 {}
74
TearDownTestCase(void)75 void EnterpriseDeviceImplTest::TearDownTestCase(void)
76 {}
77
SetUp(void)78 void EnterpriseDeviceImplTest::SetUp(void)
79 {}
80
TearDown(void)81 void EnterpriseDeviceImplTest::TearDown(void)
82 {}
83
84 class MockEdmPolicyChangedEventCallbackAdapter : public EdmPolicyChangedEventCallbackAdapter {
85 public:
86 MockEdmPolicyChangedEventCallbackAdapter() = default;
Changed()87 void Changed() {}
88 };
89
90 /**
91 * @tc.name: EnterpriseDeviceImplTest_BackgroundTaskAdapter_001
92 * @tc.desc: BackgroundTaskAdapter.
93 * @tc.type: FUNC
94 * @tc.require:
95 */
96 HWTEST_F(EnterpriseDeviceImplTest, EnterpriseDeviceImplTest_BackgroundTaskAdapter_001, TestSize.Level1)
97 {
98 #if defined(NWEB_ENTERPRISE_DEVICE_MANAGER_ENABLE)
99 std::string policies = "web_test";
100 int32_t result = EnterpriseDeviceManagementAdapterImpl::GetInstance().GetPolicies(policies);
101 EXPECT_EQ(result, -1);
102 g_browserProxy = std::make_shared<BrowserProxy>();
103 result = EnterpriseDeviceManagementAdapterImpl::GetInstance().GetPolicies(policies);
104 EXPECT_EQ(result, 0);
105
106 bool start = EnterpriseDeviceManagementAdapterImpl::GetInstance().StartObservePolicyChange();
107 EXPECT_TRUE(start);
108 g_subscribeCommonEventRet = false;
109 start = EnterpriseDeviceManagementAdapterImpl::GetInstance().StartObservePolicyChange();
110 EXPECT_FALSE(start);
111
112 bool stop = EnterpriseDeviceManagementAdapterImpl::GetInstance().StopObservePolicyChange();
113 EXPECT_TRUE(stop);
114 g_unSubscribeCommonEventRet = false;
115 stop = EnterpriseDeviceManagementAdapterImpl::GetInstance().StopObservePolicyChange();
116 EXPECT_FALSE(stop);
117 EnterpriseDeviceManagementAdapterImpl::GetInstance().commonEventSubscriber_ = nullptr;
118 stop = EnterpriseDeviceManagementAdapterImpl::GetInstance().StopObservePolicyChange();
119 EXPECT_TRUE(stop);
120 #else
121 std::string policies = "web_test";
122 int32_t result = EnterpriseDeviceManagementAdapterImpl::GetInstance().GetPolicies(policies);
123 EXPECT_EQ(result, -1);
124 #endif
125 }
126
127 /**
128 * @tc.name: EnterpriseDeviceImplTest_OnReceiveEvent_002
129 * @tc.desc: OnReceiveEvent.
130 * @tc.type: FUNC
131 * @tc.require:
132 */
133 #if defined(NWEB_ENTERPRISE_DEVICE_MANAGER_ENABLE)
134 HWTEST_F(EnterpriseDeviceImplTest, EnterpriseDeviceImplTest_OnReceiveEvent_002, TestSize.Level2)
135 {
136 Want want;
137 want.SetAction("web_test");
138 OHOS::EventFwk::CommonEventData data(want);
139 OHOS::EventFwk::CommonEventSubscribeInfo in;
140 std::shared_ptr<EdmPolicyChangedEventCallbackAdapter> cb =
141 std::make_shared<MockEdmPolicyChangedEventCallbackAdapter>();
142 std::shared_ptr<NWebEdmEventSubscriber> result = std::make_shared<NWebEdmEventSubscriber>(in, cb);
143 EXPECT_NE(result, nullptr);
144 result->OnReceiveEvent(data);
145 Want setwant;
146 setwant.SetAction("com.ohos.edm.browserpolicychanged");
147 OHOS::EventFwk::CommonEventData test(setwant);
148 result->OnReceiveEvent(test);
149 }
150 #endif
151 }
152 } // namespace OHOS
153