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 "el5_filekey_manager_stub_unittest.h"
17 #include "singleton.h"
18 
19 #include "accesstoken_kit.h"
20 #include "el5_filekey_callback_stub.h"
21 #include "token_setproc.h"
22 
23 using namespace testing::ext;
24 using namespace OHOS::Security::AccessToken;
25 
SetUpTestCase()26 void El5FilekeyManagerStubTest::SetUpTestCase()
27 {
28 }
29 
TearDownTestCase()30 void El5FilekeyManagerStubTest::TearDownTestCase()
31 {
32 }
33 
SetUp()34 void El5FilekeyManagerStubTest::SetUp()
35 {
36     el5FilekeyManagerStub_ = DelayedSingleton<El5FilekeyManagerService>::GetInstance();
37 }
38 
TearDown()39 void El5FilekeyManagerStubTest::TearDown()
40 {
41 }
42 
43 /**
44  * @tc.name: OnRemoteRequest001
45  * @tc.desc: EFMInterfaceCode::GENERATE_APP_KEY.
46  * @tc.type: FUNC
47  * @tc.require: issueI9JGMV
48  */
49 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest001, TestSize.Level1)
50 {
51     OHOS::MessageParcel data;
52     OHOS::MessageParcel reply;
53     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
54 
55     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
56 
57     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
58         static_cast<uint32_t>(EFMInterfaceCode::GENERATE_APP_KEY), data, reply, option), OHOS::NO_ERROR);
59 }
60 
61 /**
62  * @tc.name: OnRemoteRequest002
63  * @tc.desc: EFMInterfaceCode::DELETE_APP_KEY.
64  * @tc.type: FUNC
65  * @tc.require: issueI9JGMV
66  */
67 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest002, TestSize.Level1)
68 {
69     OHOS::MessageParcel data;
70     OHOS::MessageParcel reply;
71     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
72 
73     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
74 
75     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
76         static_cast<uint32_t>(EFMInterfaceCode::DELETE_APP_KEY), data, reply, option), OHOS::NO_ERROR);
77 }
78 
79 /**
80  * @tc.name: OnRemoteRequest003
81  * @tc.desc: EFMInterfaceCode::ACQUIRE_ACCESS.
82  * @tc.type: FUNC
83  * @tc.require: issueI9JGMV
84  */
85 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest003, TestSize.Level1)
86 {
87     OHOS::MessageParcel data;
88     OHOS::MessageParcel reply;
89     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
90 
91     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
92 
93     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
94         static_cast<uint32_t>(EFMInterfaceCode::ACQUIRE_ACCESS), data, reply, option), OHOS::NO_ERROR);
95 }
96 
97 /**
98  * @tc.name: OnRemoteRequest004
99  * @tc.desc: EFMInterfaceCode::RELEASE_ACCESS.
100  * @tc.type: FUNC
101  * @tc.require: issueI9JGMV
102  */
103 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest004, TestSize.Level1)
104 {
105     OHOS::MessageParcel data;
106     OHOS::MessageParcel reply;
107     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
108 
109     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
110 
111     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
112         static_cast<uint32_t>(EFMInterfaceCode::RELEASE_ACCESS), data, reply, option), OHOS::NO_ERROR);
113 }
114 
115 /**
116  * @tc.name: OnRemoteRequest005
117  * @tc.desc: EFMInterfaceCode::GET_USER_APP_KEY.
118  * @tc.type: FUNC
119  * @tc.require: issueI9JGMV
120  */
121 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest005, TestSize.Level1)
122 {
123     OHOS::MessageParcel data;
124     OHOS::MessageParcel reply;
125     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
126 
127     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
128 
129     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
130         static_cast<uint32_t>(EFMInterfaceCode::GET_USER_APP_KEY), data, reply, option), OHOS::NO_ERROR);
131 }
132 
133 /**
134  * @tc.name: OnRemoteRequest006
135  * @tc.desc: EFMInterfaceCode::CHANGE_USER_APP_KEYS_LOAD_INFO.
136  * @tc.type: FUNC
137  * @tc.require: issueI9JGMV
138  */
139 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest006, TestSize.Level1)
140 {
141     OHOS::MessageParcel data;
142     OHOS::MessageParcel reply;
143     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
144 
145     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
146 
147     data.WriteUint32(1);
148     data.WriteString("test");
149     data.WriteBool(false);
150 
151     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
152         static_cast<uint32_t>(EFMInterfaceCode::CHANGE_USER_APP_KEYS_LOAD_INFO), data, reply, option), OHOS::NO_ERROR);
153 }
154 
155 /**
156  * @tc.name: OnRemoteRequest007
157  * @tc.desc: EFMInterfaceCode::CHANGE_USER_APP_KEYS_LOAD_INFO.
158  * @tc.type: FUNC
159  * @tc.require: issueI9JGMV
160  */
161 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest007, TestSize.Level1)
162 {
163     OHOS::MessageParcel data;
164     OHOS::MessageParcel reply;
165     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
166 
167     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
168 
169     data.WriteUint32(10000);
170     data.WriteString("test");
171     data.WriteBool(false);
172 
173     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
174         static_cast<uint32_t>(EFMInterfaceCode::CHANGE_USER_APP_KEYS_LOAD_INFO), data, reply, option), OHOS::NO_ERROR);
175 }
176 
177 /**
178  * @tc.name: OnRemoteRequest008
179  * @tc.desc: EFMInterfaceCode::SET_FILE_PATH_POLICY.
180  * @tc.type: FUNC
181  * @tc.require: issueI9JGMV
182  */
183 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest008, TestSize.Level1)
184 {
185     OHOS::MessageParcel data;
186     OHOS::MessageParcel reply;
187     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
188 
189     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
190 
191     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
192         static_cast<uint32_t>(EFMInterfaceCode::SET_FILE_PATH_POLICY), data, reply, option), OHOS::NO_ERROR);
193 }
194 
195 /**
196  * @tc.name: OnRemoteRequest009
197  * @tc.desc: EFMInterfaceCode::REGISTER_CALLBACK.
198  * @tc.type: FUNC
199  * @tc.require: issueI9JGMV
200  */
201 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest009, TestSize.Level1)
202 {
203     OHOS::MessageParcel data;
204     OHOS::MessageParcel reply;
205     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
206 
207     ASSERT_EQ(true, data.WriteInterfaceToken(El5FilekeyManagerInterface::GetDescriptor()));
208 
209     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
210         static_cast<uint32_t>(EFMInterfaceCode::REGISTER_CALLBACK), data, reply, option), OHOS::NO_ERROR);
211 }
212 
213 /**
214  * @tc.name: OnRemoteRequest010
215  * @tc.desc: data.ReadInterfaceToken() != El5FilekeyManagerInterface::GetDescriptor().
216  * @tc.type: FUNC
217  * @tc.require: issueI9JGMV
218  */
219 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest010, TestSize.Level1)
220 {
221     OHOS::MessageParcel data;
222     OHOS::MessageParcel reply;
223     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
224 
225     std::string des = "I don't know";
226     data.WriteInterfaceToken(OHOS::Str8ToStr16(des));
227 
228     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(
229         static_cast<uint32_t>(EFMInterfaceCode::GENERATE_APP_KEY), data, reply, option), EFM_ERR_IPC_TOKEN_INVALID);
230 }
231 
232 /**
233  * @tc.name: OnRemoteRequest011
234  * @tc.desc: OnRemoteRequest, code < 0.
235  * @tc.type: FUNC
236  * @tc.require: issueI9JGMV
237  */
238 HWTEST_F(El5FilekeyManagerStubTest, OnRemoteRequest011, TestSize.Level1)
239 {
240     OHOS::MessageParcel data;
241     OHOS::MessageParcel reply;
242     OHOS::MessageOption option(OHOS::MessageOption::TF_SYNC);
243 
244     std::string des = "I don't know";
245     data.WriteInterfaceToken(OHOS::Str8ToStr16(des));
246     int32_t code = -1;
247 
248     ASSERT_EQ(el5FilekeyManagerStub_->OnRemoteRequest(code, data, reply, option), EFM_ERR_IPC_TOKEN_INVALID);
249 }