1c29fa5a6Sopenharmony_ci/*
2c29fa5a6Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
3c29fa5a6Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4c29fa5a6Sopenharmony_ci * you may not use this file except in compliance with the License.
5c29fa5a6Sopenharmony_ci * You may obtain a copy of the License at
6c29fa5a6Sopenharmony_ci *
7c29fa5a6Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8c29fa5a6Sopenharmony_ci *
9c29fa5a6Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10c29fa5a6Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11c29fa5a6Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12c29fa5a6Sopenharmony_ci * See the License for the specific language governing permissions and
13c29fa5a6Sopenharmony_ci * limitations under the License.
14c29fa5a6Sopenharmony_ci */
15c29fa5a6Sopenharmony_ci
16c29fa5a6Sopenharmony_ci#include <memory>
17c29fa5a6Sopenharmony_ci
18c29fa5a6Sopenharmony_ci#include "accesstoken_kit.h"
19c29fa5a6Sopenharmony_ci#include "gtest/gtest.h"
20c29fa5a6Sopenharmony_ci#include "ipc_skeleton.h"
21c29fa5a6Sopenharmony_ci
22c29fa5a6Sopenharmony_ci#include "cooperate_params.h"
23c29fa5a6Sopenharmony_ci#include "cooperate_server.h"
24c29fa5a6Sopenharmony_ci#include "default_params.h"
25c29fa5a6Sopenharmony_ci#include "fi_log.h"
26c29fa5a6Sopenharmony_ci#include "nativetoken_kit.h"
27c29fa5a6Sopenharmony_ci#include "test_context.h"
28c29fa5a6Sopenharmony_ci#include "token_setproc.h"
29c29fa5a6Sopenharmony_ci
30c29fa5a6Sopenharmony_ci#undef LOG_TAG
31c29fa5a6Sopenharmony_ci#define LOG_TAG "CooperateServerTest"
32c29fa5a6Sopenharmony_ci
33c29fa5a6Sopenharmony_cinamespace OHOS {
34c29fa5a6Sopenharmony_cinamespace Msdp {
35c29fa5a6Sopenharmony_cinamespace DeviceStatus {
36c29fa5a6Sopenharmony_ciusing namespace testing::ext;
37c29fa5a6Sopenharmony_cinamespace {
38c29fa5a6Sopenharmony_ciuint64_t g_tokenID { 0 };
39c29fa5a6Sopenharmony_ciconst std::string SYSTEM_BASIC { "system_basic" };
40c29fa5a6Sopenharmony_ciconst char* g_basics[] = { "ohos.permission.COOPERATE_MANAGER" };
41c29fa5a6Sopenharmony_ci} // namespace
42c29fa5a6Sopenharmony_ci
43c29fa5a6Sopenharmony_ciclass CooperateServerTest : public testing::Test {
44c29fa5a6Sopenharmony_cipublic:
45c29fa5a6Sopenharmony_ci    CooperateServerTest();
46c29fa5a6Sopenharmony_ci    ~CooperateServerTest() = default;
47c29fa5a6Sopenharmony_ci
48c29fa5a6Sopenharmony_ci    void SetUp();
49c29fa5a6Sopenharmony_ci    void TearDown();
50c29fa5a6Sopenharmony_ci    static void SetUpTestCase();
51c29fa5a6Sopenharmony_ci    static void TearDownTestCase();
52c29fa5a6Sopenharmony_ci    static void SetPermission(const std::string &level, const char** perms, size_t permAmount);
53c29fa5a6Sopenharmony_ci    static void RemovePermission();
54c29fa5a6Sopenharmony_ci
55c29fa5a6Sopenharmony_ciprivate:
56c29fa5a6Sopenharmony_ci    Intention intention_ { Intention::COOPERATE };
57c29fa5a6Sopenharmony_ci    std::shared_ptr<TestContext> context_ { nullptr };
58c29fa5a6Sopenharmony_ci    std::shared_ptr<CooperateServer> cooperateServer_ { nullptr };
59c29fa5a6Sopenharmony_ci};
60c29fa5a6Sopenharmony_ci
61c29fa5a6Sopenharmony_ciCooperateServerTest::CooperateServerTest()
62c29fa5a6Sopenharmony_ci{
63c29fa5a6Sopenharmony_ci    context_ = std::make_shared<TestContext>();
64c29fa5a6Sopenharmony_ci    cooperateServer_ = std::make_shared<CooperateServer>(context_.get());
65c29fa5a6Sopenharmony_ci}
66c29fa5a6Sopenharmony_ci
67c29fa5a6Sopenharmony_civoid CooperateServerTest::SetUp()
68c29fa5a6Sopenharmony_ci{}
69c29fa5a6Sopenharmony_ci
70c29fa5a6Sopenharmony_civoid CooperateServerTest::TearDown()
71c29fa5a6Sopenharmony_ci{}
72c29fa5a6Sopenharmony_ci
73c29fa5a6Sopenharmony_civoid CooperateServerTest::SetUpTestCase()
74c29fa5a6Sopenharmony_ci{
75c29fa5a6Sopenharmony_ci    SetPermission(SYSTEM_BASIC, g_basics, sizeof(g_basics) / sizeof(g_basics[0]));
76c29fa5a6Sopenharmony_ci}
77c29fa5a6Sopenharmony_ci
78c29fa5a6Sopenharmony_civoid CooperateServerTest::TearDownTestCase()
79c29fa5a6Sopenharmony_ci{
80c29fa5a6Sopenharmony_ci    RemovePermission();
81c29fa5a6Sopenharmony_ci}
82c29fa5a6Sopenharmony_ci
83c29fa5a6Sopenharmony_civoid CooperateServerTest::SetPermission(const std::string &level, const char** perms, size_t permAmount)
84c29fa5a6Sopenharmony_ci{
85c29fa5a6Sopenharmony_ci    CALL_DEBUG_ENTER;
86c29fa5a6Sopenharmony_ci    if (perms == nullptr || permAmount == 0) {
87c29fa5a6Sopenharmony_ci        FI_HILOGE("The perms is empty");
88c29fa5a6Sopenharmony_ci        return;
89c29fa5a6Sopenharmony_ci    }
90c29fa5a6Sopenharmony_ci
91c29fa5a6Sopenharmony_ci    NativeTokenInfoParams infoInstance = {
92c29fa5a6Sopenharmony_ci        .dcapsNum = 0,
93c29fa5a6Sopenharmony_ci        .permsNum = permAmount,
94c29fa5a6Sopenharmony_ci        .aclsNum = 0,
95c29fa5a6Sopenharmony_ci        .dcaps = nullptr,
96c29fa5a6Sopenharmony_ci        .perms = perms,
97c29fa5a6Sopenharmony_ci        .acls = nullptr,
98c29fa5a6Sopenharmony_ci        .processName = "CooperateServerTest",
99c29fa5a6Sopenharmony_ci        .aplStr = level.c_str(),
100c29fa5a6Sopenharmony_ci    };
101c29fa5a6Sopenharmony_ci    g_tokenID = GetAccessTokenId(&infoInstance);
102c29fa5a6Sopenharmony_ci    SetSelfTokenID(g_tokenID);
103c29fa5a6Sopenharmony_ci    OHOS::Security::AccessToken::AccessTokenKit::AccessTokenKit::ReloadNativeTokenInfo();
104c29fa5a6Sopenharmony_ci}
105c29fa5a6Sopenharmony_ci
106c29fa5a6Sopenharmony_civoid CooperateServerTest::RemovePermission()
107c29fa5a6Sopenharmony_ci{
108c29fa5a6Sopenharmony_ci    CALL_DEBUG_ENTER;
109c29fa5a6Sopenharmony_ci    int32_t ret = OHOS::Security::AccessToken::AccessTokenKit::DeleteToken(g_tokenID);
110c29fa5a6Sopenharmony_ci    if (ret != RET_OK) {
111c29fa5a6Sopenharmony_ci        FI_HILOGE("Failed to remove permission");
112c29fa5a6Sopenharmony_ci        return;
113c29fa5a6Sopenharmony_ci    }
114c29fa5a6Sopenharmony_ci}
115c29fa5a6Sopenharmony_ci
116c29fa5a6Sopenharmony_ci/**
117c29fa5a6Sopenharmony_ci * @tc.name: EnableTest1
118c29fa5a6Sopenharmony_ci * @tc.desc: Test func named enable
119c29fa5a6Sopenharmony_ci * @tc.type: FUNC
120c29fa5a6Sopenharmony_ci * @tc.require:
121c29fa5a6Sopenharmony_ci */
122c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, EnableTest1, TestSize.Level0)
123c29fa5a6Sopenharmony_ci{
124c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
125c29fa5a6Sopenharmony_ci    CallingContext context {
126c29fa5a6Sopenharmony_ci        .intention = intention_,
127c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
128c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
129c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
130c29fa5a6Sopenharmony_ci    };
131c29fa5a6Sopenharmony_ci    MessageParcel datas;
132c29fa5a6Sopenharmony_ci    MessageParcel reply;
133c29fa5a6Sopenharmony_ci    int32_t ret = cooperateServer_->Enable(context, datas, reply);
134c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
135c29fa5a6Sopenharmony_ci}
136c29fa5a6Sopenharmony_ci
137c29fa5a6Sopenharmony_ci/**
138c29fa5a6Sopenharmony_ci * @tc.name: DisableTest1
139c29fa5a6Sopenharmony_ci * @tc.desc: Test func named disable
140c29fa5a6Sopenharmony_ci * @tc.type: FUNC
141c29fa5a6Sopenharmony_ci * @tc.require:
142c29fa5a6Sopenharmony_ci */
143c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, DisableTest1, TestSize.Level0)
144c29fa5a6Sopenharmony_ci{
145c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
146c29fa5a6Sopenharmony_ci    CallingContext context {
147c29fa5a6Sopenharmony_ci        .intention = intention_,
148c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
149c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
150c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
151c29fa5a6Sopenharmony_ci    };
152c29fa5a6Sopenharmony_ci    MessageParcel datas;
153c29fa5a6Sopenharmony_ci    MessageParcel reply;
154c29fa5a6Sopenharmony_ci    int32_t ret = cooperateServer_->Disable(context, datas, reply);
155c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
156c29fa5a6Sopenharmony_ci}
157c29fa5a6Sopenharmony_ci
158c29fa5a6Sopenharmony_ci/**
159c29fa5a6Sopenharmony_ci * @tc.name: StartTest1
160c29fa5a6Sopenharmony_ci * @tc.desc: Test func named start
161c29fa5a6Sopenharmony_ci * @tc.type: FUNC
162c29fa5a6Sopenharmony_ci * @tc.require:
163c29fa5a6Sopenharmony_ci */
164c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, StartTest1, TestSize.Level0)
165c29fa5a6Sopenharmony_ci{
166c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
167c29fa5a6Sopenharmony_ci    CallingContext context {
168c29fa5a6Sopenharmony_ci        .intention = intention_,
169c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
170c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
171c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
172c29fa5a6Sopenharmony_ci    };
173c29fa5a6Sopenharmony_ci    MessageParcel datas;
174c29fa5a6Sopenharmony_ci    MessageParcel reply;
175c29fa5a6Sopenharmony_ci    int32_t ret = cooperateServer_->Start(context, datas, reply);
176c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
177c29fa5a6Sopenharmony_ci}
178c29fa5a6Sopenharmony_ci
179c29fa5a6Sopenharmony_ci/**
180c29fa5a6Sopenharmony_ci * @tc.name: StopTest1
181c29fa5a6Sopenharmony_ci * @tc.desc: Test func named stop
182c29fa5a6Sopenharmony_ci * @tc.type: FUNC
183c29fa5a6Sopenharmony_ci * @tc.require:
184c29fa5a6Sopenharmony_ci */
185c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, StopTest1, TestSize.Level0)
186c29fa5a6Sopenharmony_ci{
187c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
188c29fa5a6Sopenharmony_ci    CallingContext context {
189c29fa5a6Sopenharmony_ci        .intention = intention_,
190c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
191c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
192c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
193c29fa5a6Sopenharmony_ci    };
194c29fa5a6Sopenharmony_ci    MessageParcel datas;
195c29fa5a6Sopenharmony_ci    MessageParcel reply;
196c29fa5a6Sopenharmony_ci    int32_t ret = cooperateServer_->Stop(context, datas, reply);
197c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
198c29fa5a6Sopenharmony_ci}
199c29fa5a6Sopenharmony_ci
200c29fa5a6Sopenharmony_ci/**
201c29fa5a6Sopenharmony_ci * @tc.name: EnableTest2
202c29fa5a6Sopenharmony_ci * @tc.desc: Test func named enable
203c29fa5a6Sopenharmony_ci * @tc.type: FUNC
204c29fa5a6Sopenharmony_ci * @tc.require:
205c29fa5a6Sopenharmony_ci */
206c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, EnableTest2, TestSize.Level0)
207c29fa5a6Sopenharmony_ci{
208c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
209c29fa5a6Sopenharmony_ci    CallingContext context {
210c29fa5a6Sopenharmony_ci        .intention = intention_,
211c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
212c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
213c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
214c29fa5a6Sopenharmony_ci    };
215c29fa5a6Sopenharmony_ci    MessageParcel data;
216c29fa5a6Sopenharmony_ci    MessageParcel reply;
217c29fa5a6Sopenharmony_ci    DefaultParam param { 1 };
218c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(data));
219c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->Enable(context, data, reply);
220c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
221c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
222c29fa5a6Sopenharmony_ci}
223c29fa5a6Sopenharmony_ci
224c29fa5a6Sopenharmony_ci/**
225c29fa5a6Sopenharmony_ci * @tc.name: AddWatchTest1
226c29fa5a6Sopenharmony_ci * @tc.desc: Test func named add watch
227c29fa5a6Sopenharmony_ci * @tc.type: FUNC
228c29fa5a6Sopenharmony_ci * @tc.require:
229c29fa5a6Sopenharmony_ci */
230c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, AddWatchTest1, TestSize.Level0)
231c29fa5a6Sopenharmony_ci{
232c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
233c29fa5a6Sopenharmony_ci    CallingContext context {
234c29fa5a6Sopenharmony_ci        .intention = intention_,
235c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
236c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
237c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
238c29fa5a6Sopenharmony_ci    };
239c29fa5a6Sopenharmony_ci    MessageParcel data;
240c29fa5a6Sopenharmony_ci    MessageParcel reply;
241c29fa5a6Sopenharmony_ci    DefaultParam param { 1 };
242c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(data));
243c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->AddWatch(context, CooperateRequestID::REGISTER_LISTENER, data, reply);
244c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
245c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
246c29fa5a6Sopenharmony_ci}
247c29fa5a6Sopenharmony_ci
248c29fa5a6Sopenharmony_ci/**
249c29fa5a6Sopenharmony_ci * @tc.name: DisableTest2
250c29fa5a6Sopenharmony_ci * @tc.desc: Test func named disable
251c29fa5a6Sopenharmony_ci * @tc.type: FUNC
252c29fa5a6Sopenharmony_ci * @tc.require:
253c29fa5a6Sopenharmony_ci */
254c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, DisableTest2, TestSize.Level0)
255c29fa5a6Sopenharmony_ci{
256c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
257c29fa5a6Sopenharmony_ci    CallingContext context {
258c29fa5a6Sopenharmony_ci        .intention = intention_,
259c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
260c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
261c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
262c29fa5a6Sopenharmony_ci    };
263c29fa5a6Sopenharmony_ci    DefaultParam param { 1 };
264c29fa5a6Sopenharmony_ci    MessageParcel datas;
265c29fa5a6Sopenharmony_ci    MessageParcel reply;
266c29fa5a6Sopenharmony_ci    param.Marshalling(datas);
267c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(datas));
268c29fa5a6Sopenharmony_ci    int32_t ret = cooperateServer_->Disable(context, datas, reply);
269c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
270c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
271c29fa5a6Sopenharmony_ci}
272c29fa5a6Sopenharmony_ci
273c29fa5a6Sopenharmony_ci/**
274c29fa5a6Sopenharmony_ci * @tc.name: AddWatchTest2
275c29fa5a6Sopenharmony_ci * @tc.desc: Test func named add watch
276c29fa5a6Sopenharmony_ci * @tc.type: FUNC
277c29fa5a6Sopenharmony_ci * @tc.require:
278c29fa5a6Sopenharmony_ci */
279c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, AddWatchTest2, TestSize.Level0)
280c29fa5a6Sopenharmony_ci{
281c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
282c29fa5a6Sopenharmony_ci    CallingContext context {
283c29fa5a6Sopenharmony_ci        .intention = intention_,
284c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
285c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
286c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
287c29fa5a6Sopenharmony_ci    };
288c29fa5a6Sopenharmony_ci    MessageParcel data;
289c29fa5a6Sopenharmony_ci    MessageParcel reply;
290c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->AddWatch(context, CooperateRequestID::UNKNOWN_COOPERATE_ACTION, data, reply);
291c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
292c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
293c29fa5a6Sopenharmony_ci}
294c29fa5a6Sopenharmony_ci
295c29fa5a6Sopenharmony_ci/**
296c29fa5a6Sopenharmony_ci * @tc.name: AddWatchTest3
297c29fa5a6Sopenharmony_ci * @tc.desc: Test func named add watch
298c29fa5a6Sopenharmony_ci * @tc.type: FUNC
299c29fa5a6Sopenharmony_ci * @tc.require:
300c29fa5a6Sopenharmony_ci */
301c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, AddWatchTest3, TestSize.Level0)
302c29fa5a6Sopenharmony_ci{
303c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
304c29fa5a6Sopenharmony_ci    CallingContext context {
305c29fa5a6Sopenharmony_ci        .intention = intention_,
306c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
307c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
308c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
309c29fa5a6Sopenharmony_ci    };
310c29fa5a6Sopenharmony_ci    MessageParcel data;
311c29fa5a6Sopenharmony_ci    MessageParcel reply;
312c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->AddWatch(context, CooperateRequestID::REGISTER_HOTAREA_LISTENER, data, reply);
313c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
314c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
315c29fa5a6Sopenharmony_ci}
316c29fa5a6Sopenharmony_ci
317c29fa5a6Sopenharmony_ci/**
318c29fa5a6Sopenharmony_ci * @tc.name: AddWatchTest4
319c29fa5a6Sopenharmony_ci * @tc.desc: Test func named add watch
320c29fa5a6Sopenharmony_ci * @tc.type: FUNC
321c29fa5a6Sopenharmony_ci * @tc.require:
322c29fa5a6Sopenharmony_ci */
323c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, AddWatchTest4, TestSize.Level0)
324c29fa5a6Sopenharmony_ci{
325c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
326c29fa5a6Sopenharmony_ci    CallingContext context {
327c29fa5a6Sopenharmony_ci        .intention = intention_,
328c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
329c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
330c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
331c29fa5a6Sopenharmony_ci    };
332c29fa5a6Sopenharmony_ci    MessageParcel data;
333c29fa5a6Sopenharmony_ci    MessageParcel reply;
334c29fa5a6Sopenharmony_ci    RegisterEventListenerParam param { "networkId" };
335c29fa5a6Sopenharmony_ci    param.Marshalling(data);
336c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(data));
337c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->AddWatch(context, CooperateRequestID::REGISTER_EVENT_LISTENER, data, reply);
338c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
339c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
340c29fa5a6Sopenharmony_ci}
341c29fa5a6Sopenharmony_ci
342c29fa5a6Sopenharmony_ci/**
343c29fa5a6Sopenharmony_ci * @tc.name: AddWatchTest5
344c29fa5a6Sopenharmony_ci * @tc.desc: Test func named add watch
345c29fa5a6Sopenharmony_ci * @tc.type: FUNC
346c29fa5a6Sopenharmony_ci * @tc.require:
347c29fa5a6Sopenharmony_ci */
348c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, AddWatchTest5, TestSize.Level0)
349c29fa5a6Sopenharmony_ci{
350c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
351c29fa5a6Sopenharmony_ci    CallingContext context {
352c29fa5a6Sopenharmony_ci        .intention = intention_,
353c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
354c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
355c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
356c29fa5a6Sopenharmony_ci    };
357c29fa5a6Sopenharmony_ci    MessageParcel data;
358c29fa5a6Sopenharmony_ci    MessageParcel reply;
359c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->AddWatch(context, CooperateRequestID::REGISTER_EVENT_LISTENER, data, reply);
360c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
361c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
362c29fa5a6Sopenharmony_ci}
363c29fa5a6Sopenharmony_ci
364c29fa5a6Sopenharmony_ci/**
365c29fa5a6Sopenharmony_ci * @tc.name: RemoveWatch1
366c29fa5a6Sopenharmony_ci * @tc.desc: Test func named remove watch
367c29fa5a6Sopenharmony_ci * @tc.type: FUNC
368c29fa5a6Sopenharmony_ci * @tc.require:
369c29fa5a6Sopenharmony_ci */
370c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, RemoveWatch1, TestSize.Level0)
371c29fa5a6Sopenharmony_ci{
372c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
373c29fa5a6Sopenharmony_ci    CallingContext context {
374c29fa5a6Sopenharmony_ci        .intention = intention_,
375c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
376c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
377c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
378c29fa5a6Sopenharmony_ci    };
379c29fa5a6Sopenharmony_ci    MessageParcel data;
380c29fa5a6Sopenharmony_ci    MessageParcel reply;
381c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->RemoveWatch(context, CooperateRequestID::UNREGISTER_LISTENER, data, reply);
382c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
383c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
384c29fa5a6Sopenharmony_ci}
385c29fa5a6Sopenharmony_ci
386c29fa5a6Sopenharmony_ci/**
387c29fa5a6Sopenharmony_ci * @tc.name: RemoveWatch2
388c29fa5a6Sopenharmony_ci * @tc.desc: Test func named remove watch
389c29fa5a6Sopenharmony_ci * @tc.type: FUNC
390c29fa5a6Sopenharmony_ci * @tc.require:
391c29fa5a6Sopenharmony_ci */
392c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, RemoveWatch2, TestSize.Level0)
393c29fa5a6Sopenharmony_ci{
394c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
395c29fa5a6Sopenharmony_ci    CallingContext context {
396c29fa5a6Sopenharmony_ci        .intention = intention_,
397c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
398c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
399c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
400c29fa5a6Sopenharmony_ci    };
401c29fa5a6Sopenharmony_ci    MessageParcel data;
402c29fa5a6Sopenharmony_ci    MessageParcel reply;
403c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->RemoveWatch(context, CooperateRequestID::UNKNOWN_COOPERATE_ACTION, data, reply);
404c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
405c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
406c29fa5a6Sopenharmony_ci}
407c29fa5a6Sopenharmony_ci
408c29fa5a6Sopenharmony_ci/**
409c29fa5a6Sopenharmony_ci * @tc.name: RemoveWatch3
410c29fa5a6Sopenharmony_ci * @tc.desc: Test func named remove watch
411c29fa5a6Sopenharmony_ci * @tc.type: FUNC
412c29fa5a6Sopenharmony_ci * @tc.require:
413c29fa5a6Sopenharmony_ci */
414c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, RemoveWatch3, TestSize.Level0)
415c29fa5a6Sopenharmony_ci{
416c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
417c29fa5a6Sopenharmony_ci    CallingContext context {
418c29fa5a6Sopenharmony_ci        .intention = intention_,
419c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
420c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
421c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
422c29fa5a6Sopenharmony_ci    };
423c29fa5a6Sopenharmony_ci    MessageParcel data;
424c29fa5a6Sopenharmony_ci    MessageParcel reply;
425c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->RemoveWatch(context, CooperateRequestID::UNREGISTER_HOTAREA_LISTENER, data, reply);
426c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
427c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
428c29fa5a6Sopenharmony_ci}
429c29fa5a6Sopenharmony_ci
430c29fa5a6Sopenharmony_ci/**
431c29fa5a6Sopenharmony_ci * @tc.name: RemoveWatch4
432c29fa5a6Sopenharmony_ci * @tc.desc: Test func named remove watch
433c29fa5a6Sopenharmony_ci * @tc.type: FUNC
434c29fa5a6Sopenharmony_ci * @tc.require:
435c29fa5a6Sopenharmony_ci */
436c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, RemoveWatch4, TestSize.Level0)
437c29fa5a6Sopenharmony_ci{
438c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
439c29fa5a6Sopenharmony_ci    CallingContext context {
440c29fa5a6Sopenharmony_ci        .intention = intention_,
441c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
442c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
443c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
444c29fa5a6Sopenharmony_ci    };
445c29fa5a6Sopenharmony_ci    MessageParcel data;
446c29fa5a6Sopenharmony_ci    MessageParcel reply;
447c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->RemoveWatch(context, CooperateRequestID::UNREGISTER_EVENT_LISTENER, data, reply);
448c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
449c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
450c29fa5a6Sopenharmony_ci}
451c29fa5a6Sopenharmony_ci
452c29fa5a6Sopenharmony_ci/**
453c29fa5a6Sopenharmony_ci * @tc.name: RemoveWatch5
454c29fa5a6Sopenharmony_ci * @tc.desc: Test func named remove watch
455c29fa5a6Sopenharmony_ci * @tc.type: FUNC
456c29fa5a6Sopenharmony_ci * @tc.require:
457c29fa5a6Sopenharmony_ci */
458c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, RemoveWatch5, TestSize.Level0)
459c29fa5a6Sopenharmony_ci{
460c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
461c29fa5a6Sopenharmony_ci    CallingContext context {
462c29fa5a6Sopenharmony_ci        .intention = intention_,
463c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
464c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
465c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
466c29fa5a6Sopenharmony_ci    };
467c29fa5a6Sopenharmony_ci    MessageParcel data;
468c29fa5a6Sopenharmony_ci    MessageParcel reply;
469c29fa5a6Sopenharmony_ci    UnregisterEventListenerParam param { "networkId" };
470c29fa5a6Sopenharmony_ci    param.Marshalling(data);
471c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(data));
472c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->RemoveWatch(context, CooperateRequestID::UNREGISTER_EVENT_LISTENER, data, reply);
473c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
474c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
475c29fa5a6Sopenharmony_ci}
476c29fa5a6Sopenharmony_ci
477c29fa5a6Sopenharmony_ci/**
478c29fa5a6Sopenharmony_ci * @tc.name: SetParam1
479c29fa5a6Sopenharmony_ci * @tc.desc: Test func named set param
480c29fa5a6Sopenharmony_ci * @tc.type: FUNC
481c29fa5a6Sopenharmony_ci * @tc.require:
482c29fa5a6Sopenharmony_ci */
483c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, SetParam1, TestSize.Level0)
484c29fa5a6Sopenharmony_ci{
485c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
486c29fa5a6Sopenharmony_ci    CallingContext context {
487c29fa5a6Sopenharmony_ci        .intention = intention_,
488c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
489c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
490c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
491c29fa5a6Sopenharmony_ci    };
492c29fa5a6Sopenharmony_ci    MessageParcel data;
493c29fa5a6Sopenharmony_ci    MessageParcel reply;
494c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->SetParam(context, CooperateRequestID::REGISTER_LISTENER, data, reply);
495c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
496c29fa5a6Sopenharmony_ci}
497c29fa5a6Sopenharmony_ci
498c29fa5a6Sopenharmony_ci/**
499c29fa5a6Sopenharmony_ci * @tc.name: GetParam1
500c29fa5a6Sopenharmony_ci * @tc.desc: Test func named get param
501c29fa5a6Sopenharmony_ci * @tc.type: FUNC
502c29fa5a6Sopenharmony_ci * @tc.require:
503c29fa5a6Sopenharmony_ci */
504c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, GetParam1, TestSize.Level0)
505c29fa5a6Sopenharmony_ci{
506c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
507c29fa5a6Sopenharmony_ci    CallingContext context {
508c29fa5a6Sopenharmony_ci        .intention = intention_,
509c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
510c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
511c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
512c29fa5a6Sopenharmony_ci    };
513c29fa5a6Sopenharmony_ci    MessageParcel data;
514c29fa5a6Sopenharmony_ci    MessageParcel reply;
515c29fa5a6Sopenharmony_ci    GetCooperateStateParam param {1, "networkId", true};
516c29fa5a6Sopenharmony_ci    param.Marshalling(data);
517c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(data));
518c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->GetParam(context, CooperateRequestID::GET_COOPERATE_STATE, data, reply);
519c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
520c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
521c29fa5a6Sopenharmony_ci}
522c29fa5a6Sopenharmony_ci
523c29fa5a6Sopenharmony_ci/**
524c29fa5a6Sopenharmony_ci * @tc.name: GetParam2
525c29fa5a6Sopenharmony_ci * @tc.desc: Test func named get param
526c29fa5a6Sopenharmony_ci * @tc.type: FUNC
527c29fa5a6Sopenharmony_ci * @tc.require:
528c29fa5a6Sopenharmony_ci */
529c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, GetParam2, TestSize.Level0)
530c29fa5a6Sopenharmony_ci{
531c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
532c29fa5a6Sopenharmony_ci    CallingContext context {
533c29fa5a6Sopenharmony_ci        .intention = intention_,
534c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
535c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
536c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
537c29fa5a6Sopenharmony_ci    };
538c29fa5a6Sopenharmony_ci    MessageParcel data;
539c29fa5a6Sopenharmony_ci    MessageParcel reply;
540c29fa5a6Sopenharmony_ci    GetCooperateStateSyncParam param { "networkId" };
541c29fa5a6Sopenharmony_ci    param.Marshalling(data);
542c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(data));
543c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->GetParam(context, CooperateRequestID::GET_COOPERATE_STATE_SYNC, data, reply);
544c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
545c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
546c29fa5a6Sopenharmony_ci}
547c29fa5a6Sopenharmony_ci
548c29fa5a6Sopenharmony_ci/**
549c29fa5a6Sopenharmony_ci * @tc.name: GetParam3
550c29fa5a6Sopenharmony_ci * @tc.desc: Test func named get param
551c29fa5a6Sopenharmony_ci * @tc.type: FUNC
552c29fa5a6Sopenharmony_ci * @tc.require:
553c29fa5a6Sopenharmony_ci */
554c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, GetParam3, TestSize.Level0)
555c29fa5a6Sopenharmony_ci{
556c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
557c29fa5a6Sopenharmony_ci    CallingContext context {
558c29fa5a6Sopenharmony_ci        .intention = intention_,
559c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
560c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
561c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
562c29fa5a6Sopenharmony_ci    };
563c29fa5a6Sopenharmony_ci    MessageParcel data;
564c29fa5a6Sopenharmony_ci    MessageParcel reply;
565c29fa5a6Sopenharmony_ci    auto ret = cooperateServer_->GetParam(context, CooperateRequestID::GET_COOPERATE_STATE_SYNC, data, reply);
566c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
567c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
568c29fa5a6Sopenharmony_ci}
569c29fa5a6Sopenharmony_ci
570c29fa5a6Sopenharmony_ci/**
571c29fa5a6Sopenharmony_ci * @tc.name: StopTest2
572c29fa5a6Sopenharmony_ci * @tc.desc: Test func named stop
573c29fa5a6Sopenharmony_ci * @tc.type: FUNC
574c29fa5a6Sopenharmony_ci * @tc.require:
575c29fa5a6Sopenharmony_ci */
576c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, StopTest2, TestSize.Level0)
577c29fa5a6Sopenharmony_ci{
578c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
579c29fa5a6Sopenharmony_ci    CallingContext context {
580c29fa5a6Sopenharmony_ci        .intention = intention_,
581c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
582c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
583c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
584c29fa5a6Sopenharmony_ci    };
585c29fa5a6Sopenharmony_ci    StopCooperateParam param {1, false, true};
586c29fa5a6Sopenharmony_ci    MessageParcel data;
587c29fa5a6Sopenharmony_ci    MessageParcel reply;
588c29fa5a6Sopenharmony_ci    param.Marshalling(data);
589c29fa5a6Sopenharmony_ci    ASSERT_TRUE(param.Marshalling(data));
590c29fa5a6Sopenharmony_ci    int32_t ret = cooperateServer_->Stop(context, data, reply);
591c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_OK);
592c29fa5a6Sopenharmony_ci    context_->GetPluginManager().UnloadCooperate();
593c29fa5a6Sopenharmony_ci}
594c29fa5a6Sopenharmony_ci
595c29fa5a6Sopenharmony_ci/**
596c29fa5a6Sopenharmony_ci * @tc.name: ControlTest1
597c29fa5a6Sopenharmony_ci * @tc.desc: Test func named control
598c29fa5a6Sopenharmony_ci * @tc.type: FUNC
599c29fa5a6Sopenharmony_ci * @tc.require:
600c29fa5a6Sopenharmony_ci */
601c29fa5a6Sopenharmony_ciHWTEST_F(CooperateServerTest, ControlTest1, TestSize.Level0)
602c29fa5a6Sopenharmony_ci{
603c29fa5a6Sopenharmony_ci    CALL_TEST_DEBUG;
604c29fa5a6Sopenharmony_ci    CallingContext context {
605c29fa5a6Sopenharmony_ci        .intention = intention_,
606c29fa5a6Sopenharmony_ci        .tokenId = IPCSkeleton::GetCallingTokenID(),
607c29fa5a6Sopenharmony_ci        .uid = IPCSkeleton::GetCallingUid(),
608c29fa5a6Sopenharmony_ci        .pid = IPCSkeleton::GetCallingPid(),
609c29fa5a6Sopenharmony_ci    };
610c29fa5a6Sopenharmony_ci    MessageParcel data;
611c29fa5a6Sopenharmony_ci    MessageParcel reply;
612c29fa5a6Sopenharmony_ci    int32_t ret = cooperateServer_->Control(context, CooperateRequestID::UNKNOWN_COOPERATE_ACTION, data, reply);
613c29fa5a6Sopenharmony_ci    EXPECT_EQ(ret, RET_ERR);
614c29fa5a6Sopenharmony_ci}
615c29fa5a6Sopenharmony_ci} // namespace DeviceStatus
616c29fa5a6Sopenharmony_ci} // namespace Msdp
617c29fa5a6Sopenharmony_ci} // namespace OHOS