1 /*
2  * Copyright (c) 2024 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 
18 #include "access_token.h"
19 #include "accesstoken_kit.h"
20 #include "app_manager_access_client.h"
21 #include "app_manager_access_proxy.h"
22 #include "app_state_data.h"
23 #define private public
24 #include "audio_manager_privacy_client.h"
25 #include "camera_manager_privacy_client.h"
26 #undef private
27 #include "audio_manager_privacy_proxy.h"
28 #include "camera_manager_privacy_proxy.h"
29 #include "token_setproc.h"
30 
31 using namespace testing::ext;
32 
33 namespace OHOS {
34 namespace Security {
35 namespace AccessToken {
36 class SensitiveManagerCoverageTest : public testing::Test {
37 public:
38     static void SetUpTestCase();
39     static void TearDownTestCase();
40     void SetUp();
41     void TearDown();
42 };
SetUpTestCase()43 void SensitiveManagerCoverageTest::SetUpTestCase()
44 {
45 }
46 
TearDownTestCase()47 void SensitiveManagerCoverageTest::TearDownTestCase()
48 {
49 }
50 
SetUp()51 void SensitiveManagerCoverageTest::SetUp()
52 {
53 }
54 
TearDown()55 void SensitiveManagerCoverageTest::TearDown()
56 {
57 }
58 
59 class SensitiveManagerCoverageTestCb1 : public ApplicationStateObserverStub {
60 public:
61     SensitiveManagerCoverageTestCb1() = default;
62     virtual ~SensitiveManagerCoverageTestCb1() = default;
63 
OnAppStateChanged(const AppStateData & appStateData)64     void OnAppStateChanged(const AppStateData &appStateData)
65     {
66         GTEST_LOG_(INFO) << "OnAppStateChanged, state is "
67             << appStateData.state;
68     }
69 };
70 
71 /**
72  * @tc.name: OnRemoteRequest001
73  * @tc.desc: ApplicationStateObserverStub::OnRemoteRequest function test
74  * @tc.type: FUNC
75  * @tc.require:
76  */
77 HWTEST_F(SensitiveManagerCoverageTest, OnRemoteRequest001, TestSize.Level1)
78 {
79     AppStateData appData;
80     SensitiveManagerCoverageTestCb1 callback;
81 
82     OHOS::MessageParcel data;
83     OHOS::MessageParcel reply;
84     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
85 
86     ASSERT_EQ(true, data.WriteInterfaceToken(IApplicationStateObserver::GetDescriptor()));
87     ASSERT_EQ(true, data.WriteParcelable(&appData));
88     uint32_t code = -1;
89     ASSERT_NE(0, callback.OnRemoteRequest(code, data, reply, option)); // code default
90 }
91 
92 /**
93  * @tc.name: OnRemoteRequest002
94  * @tc.desc: ApplicationStateObserverStub::OnRemoteRequest function test
95  * @tc.type: FUNC
96  * @tc.require:
97  */
98 HWTEST_F(SensitiveManagerCoverageTest, OnRemoteRequest002, TestSize.Level1)
99 {
100     AppStateData appData;
101     SensitiveManagerCoverageTestCb1 callback;
102 
103     OHOS::MessageParcel data;
104     OHOS::MessageParcel reply;
105     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
106 
107     appData.state = static_cast<int32_t>(ApplicationState::APP_STATE_FOREGROUND);
108     ASSERT_EQ(true, data.WriteInterfaceToken(IApplicationStateObserver::GetDescriptor()));
109     ASSERT_EQ(true, data.WriteParcelable(&appData));
110     // code not default + state = 3
111     ASSERT_EQ(0, callback.OnRemoteRequest(static_cast<uint32_t>(
112         IApplicationStateObserver::Message::TRANSACT_ON_APP_STATE_CHANGED), data, reply, option));
113 }
114 
115 /**
116  * @tc.name: OnRemoteRequest003
117  * @tc.desc: ApplicationStateObserverStub::OnRemoteRequest function test
118  * @tc.type: FUNC
119  * @tc.require:
120  */
121 HWTEST_F(SensitiveManagerCoverageTest, OnRemoteRequest003, TestSize.Level1)
122 {
123     AppStateData appData;
124     SensitiveManagerCoverageTestCb1 callback;
125 
126     OHOS::MessageParcel data;
127     OHOS::MessageParcel reply;
128     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
129 
130     appData.state = static_cast<int32_t>(ApplicationState::APP_STATE_BACKGROUND);
131     ASSERT_EQ(true, data.WriteInterfaceToken(IApplicationStateObserver::GetDescriptor()));
132     ASSERT_EQ(true, data.WriteParcelable(&appData));
133     // code not default + state = 5
134     ASSERT_EQ(0, callback.OnRemoteRequest(static_cast<uint32_t>(
135         IApplicationStateObserver::Message::TRANSACT_ON_APP_STATE_CHANGED), data, reply, option));
136 }
137 
138 /*
139  * @tc.name: AudioRemoteDiedHandle001
140  * @tc.desc: test audio remote die
141  * @tc.type: FUNC
142  * @tc.require: issueI5RWXF
143  */
144 HWTEST_F(SensitiveManagerCoverageTest, AudioRemoteDiedHandle001, TestSize.Level1)
145 {
146     AudioManagerPrivacyClient::GetInstance().OnRemoteDiedHandle();
147     EXPECT_EQ(AudioManagerPrivacyClient::GetInstance().proxy_, nullptr);
148 }
149 
150 /*
151  * @tc.name: CameraRemoteDiedHandle001
152  * @tc.desc: test camera remote die
153  * @tc.type: FUNC
154  * @tc.require: issueI5RWXF
155  */
156 HWTEST_F(SensitiveManagerCoverageTest, CameraRemoteDiedHandle001, TestSize.Level1)
157 {
158     CameraManagerPrivacyClient::GetInstance().OnRemoteDiedHandle();
159     EXPECT_EQ(CameraManagerPrivacyClient::GetInstance().proxy_, nullptr);
160 }
161 } // namespace AccessToken
162 } // namespace Security
163 } // namespace OHOS
164