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 <vector>
19 #include "enterprise_admin_stub_mock.h"
20 #include "enterprise_bundle_connection.h"
21 #include "func_code.h"
22 #include "managed_event.h"
23 using namespace testing::ext;
24 using namespace testing;
25
26 namespace OHOS {
27 namespace EDM {
28 namespace TEST {
29 constexpr uint32_t COMMAND_ON_ADMIN_CODE = 3;
30 constexpr int32_t DEFAULT_USER_ID = 100;
31 class EnterpriseBundleConnectionTest : public testing::Test {
32 protected:
33 void SetUp() override;
34
TearDown()35 void TearDown() override {}
36
37 std::shared_ptr<EnterpriseBundleConnection> enterpriseBundleConnectionTest {nullptr};
38 sptr<EnterpriseAdminStubMock> remoteObject {nullptr};
39 };
40
SetUp()41 void EnterpriseBundleConnectionTest::SetUp()
42 {
43 remoteObject = new (std::nothrow) EnterpriseAdminStubMock();
44 }
45
46 /**
47 * @tc.name: TestOnAbilityConnectDone01
48 * @tc.desc: Test EnterpriseBundleConnection::OnAbilityConnectDone func.
49 * @tc.type: FUNC
50 */
51 HWTEST_F(EnterpriseBundleConnectionTest, TestOnAbilityConnectDone01, TestSize.Level1)
52 {
53 AppExecFwk::ElementName admin;
54 admin.SetBundleName("com.edm.test.demo");
55 admin.SetAbilityName("com.edm.test.demo.Ability");
56 AAFwk::Want connectWant;
57 connectWant.SetElementName("com.edm.test.demo", "com.edm.test.demo.Ability");
58 int32_t resultCode = 0;
59 enterpriseBundleConnectionTest =
60 std::make_shared<EnterpriseBundleConnection>(connectWant,
61 static_cast<uint32_t>(ManagedEvent::BUNDLE_ADDED), DEFAULT_USER_ID, "com.edm.test.add", DEFAULT_USER_ID);
62 EXPECT_CALL(*remoteObject, SendRequest(_, _, _, _))
63 .Times(1)
64 .WillOnce(Invoke(remoteObject.GetRefPtr(), &EnterpriseAdminStubMock::InvokeSendRequest));
65 enterpriseBundleConnectionTest->OnAbilityConnectDone(admin, remoteObject, resultCode);
66 enterpriseBundleConnectionTest->OnAbilityDisconnectDone(admin, resultCode);
67 EXPECT_TRUE(remoteObject->code_ == IEnterpriseAdmin::COMMAND_ON_BUNDLE_ADDED);
68 }
69
70 /**
71 * @tc.name: TestOnAbilityConnectDone02
72 * @tc.desc: Test EnterpriseBundleConnection::OnAbilityConnectDone func.
73 * @tc.type: FUNC
74 */
75 HWTEST_F(EnterpriseBundleConnectionTest, TestOnAbilityConnectDone02, TestSize.Level1)
76 {
77 AppExecFwk::ElementName admin;
78 admin.SetBundleName("com.edm.test.demo");
79 admin.SetAbilityName("com.edm.test.demo.Ability");
80 AAFwk::Want connectWant;
81 connectWant.SetElementName("com.edm.test.demo", "com.edm.test.demo.Ability");
82 int32_t resultCode = 0;
83 enterpriseBundleConnectionTest =
84 std::make_shared<EnterpriseBundleConnection>(connectWant,
85 static_cast<uint32_t>(ManagedEvent::BUNDLE_REMOVED), DEFAULT_USER_ID, "com.edm.test.remove", DEFAULT_USER_ID);
86 EXPECT_CALL(*remoteObject, SendRequest(_, _, _, _))
87 .Times(1)
88 .WillOnce(Invoke(remoteObject.GetRefPtr(), &EnterpriseAdminStubMock::InvokeSendRequest));
89 enterpriseBundleConnectionTest->OnAbilityConnectDone(admin, remoteObject, resultCode);
90 enterpriseBundleConnectionTest->OnAbilityDisconnectDone(admin, resultCode);
91 EXPECT_TRUE(remoteObject->code_ == IEnterpriseAdmin::COMMAND_ON_BUNDLE_REMOVED);
92 }
93
94 /**
95 * @tc.name: TestOnAbilityConnectDone03
96 * @tc.desc: Test EnterpriseBundleConnection::OnAbilityConnectDone func.
97 * @tc.type: FUNC
98 */
99 HWTEST_F(EnterpriseBundleConnectionTest, TestOnAbilityConnectDone03, TestSize.Level1)
100 {
101 AppExecFwk::ElementName admin;
102 admin.SetBundleName("com.edm.test.demo");
103 admin.SetAbilityName("com.edm.test.demo.Ability");
104 AAFwk::Want connectWant;
105 connectWant.SetElementName("com.edm.test.demo", "com.edm.test.demo.Ability");
106 int32_t resultCode = 0;
107 enterpriseBundleConnectionTest = std::make_shared<EnterpriseBundleConnection>(connectWant,
108 COMMAND_ON_ADMIN_CODE, DEFAULT_USER_ID, "com.edm.test.err", DEFAULT_USER_ID);
109 enterpriseBundleConnectionTest->OnAbilityConnectDone(admin, remoteObject, resultCode);
110 enterpriseBundleConnectionTest->OnAbilityDisconnectDone(admin, resultCode);
111 EXPECT_TRUE(remoteObject->code_ != IEnterpriseAdmin::COMMAND_ON_BUNDLE_REMOVED);
112 }
113
114 /**
115 * @tc.name: TestOnAbilityConnectDone04
116 * @tc.desc: Test EnterpriseBundleConnection::OnAbilityConnectDone func.
117 * @tc.type: FUNC
118 */
119 HWTEST_F(EnterpriseBundleConnectionTest, TestOnAbilityConnectDone04, TestSize.Level1)
120 {
121 AppExecFwk::ElementName admin;
122 admin.SetBundleName("com.edm.test.demo");
123 admin.SetAbilityName("com.edm.test.demo.Ability");
124 AAFwk::Want connectWant;
125 connectWant.SetElementName("com.edm.test.demo", "com.edm.test.demo.Ability");
126 int32_t resultCode = 0;
127 enterpriseBundleConnectionTest =
128 std::make_shared<EnterpriseBundleConnection>(connectWant,
129 static_cast<uint32_t>(ManagedEvent::APP_START), DEFAULT_USER_ID, "com.edm.test.start", DEFAULT_USER_ID);
130 EXPECT_CALL(*remoteObject, SendRequest(_, _, _, _))
131 .Times(1)
132 .WillOnce(Invoke(remoteObject.GetRefPtr(), &EnterpriseAdminStubMock::InvokeSendRequest));
133 enterpriseBundleConnectionTest->OnAbilityConnectDone(admin, remoteObject, resultCode);
134 enterpriseBundleConnectionTest->OnAbilityDisconnectDone(admin, resultCode);
135 EXPECT_TRUE(remoteObject->code_ == IEnterpriseAdmin::COMMAND_ON_APP_START);
136 }
137
138 /**
139 * @tc.name: TestOnAbilityConnectDone05
140 * @tc.desc: Test EnterpriseBundleConnection::OnAbilityConnectDone func.
141 * @tc.type: FUNC
142 */
143 HWTEST_F(EnterpriseBundleConnectionTest, TestOnAbilityConnectDone05, TestSize.Level1)
144 {
145 AppExecFwk::ElementName admin;
146 admin.SetBundleName("com.edm.test.demo");
147 admin.SetAbilityName("com.edm.test.demo.Ability");
148 AAFwk::Want connectWant;
149 connectWant.SetElementName("com.edm.test.demo", "com.edm.test.demo.Ability");
150 int32_t resultCode = 0;
151 enterpriseBundleConnectionTest =
152 std::make_shared<EnterpriseBundleConnection>(connectWant,
153 static_cast<uint32_t>(ManagedEvent::SYSTEM_UPDATE), DEFAULT_USER_ID, "com.edm.test.update", DEFAULT_USER_ID);
154 enterpriseBundleConnectionTest->OnAbilityConnectDone(admin, remoteObject, resultCode);
155 enterpriseBundleConnectionTest->OnAbilityDisconnectDone(admin, resultCode);
156 EXPECT_TRUE(remoteObject->code_ == ERR_OK);
157 }
158
159 } // namespace TEST
160 } // namespace EDM
161 } // namespace OHOS