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