1ea497e4dSopenharmony_ci/*
2ea497e4dSopenharmony_ci * Copyright (c) 2021-2023 Huawei Device Co., Ltd.
3ea497e4dSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
4ea497e4dSopenharmony_ci * you may not use this file except in compliance with the License.
5ea497e4dSopenharmony_ci * You may obtain a copy of the License at
6ea497e4dSopenharmony_ci *
7ea497e4dSopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
8ea497e4dSopenharmony_ci *
9ea497e4dSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
10ea497e4dSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
11ea497e4dSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12ea497e4dSopenharmony_ci * See the License for the specific language governing permissions and
13ea497e4dSopenharmony_ci * limitations under the License.
14ea497e4dSopenharmony_ci */
15ea497e4dSopenharmony_ci
16ea497e4dSopenharmony_ci#include "gtest/gtest.h"
17ea497e4dSopenharmony_ci
18ea497e4dSopenharmony_ci#include "accesstoken_kit.h"
19ea497e4dSopenharmony_ci#include "message_parcel.h"
20ea497e4dSopenharmony_ci#include "nativetoken_kit.h"
21ea497e4dSopenharmony_ci#include "token_setproc.h"
22ea497e4dSopenharmony_ci
23ea497e4dSopenharmony_ci#include "face_auth_service.h"
24ea497e4dSopenharmony_ci
25ea497e4dSopenharmony_ciusing namespace testing;
26ea497e4dSopenharmony_ciusing namespace testing::ext;
27ea497e4dSopenharmony_ci
28ea497e4dSopenharmony_cinamespace OHOS {
29ea497e4dSopenharmony_cinamespace UserIam {
30ea497e4dSopenharmony_cinamespace FaceAuth {
31ea497e4dSopenharmony_ciclass FaceAuthServiceTest : public testing::Test {
32ea497e4dSopenharmony_cipublic:
33ea497e4dSopenharmony_ci    static void SetUpTestCase();
34ea497e4dSopenharmony_ci    static void TearDownTestCase();
35ea497e4dSopenharmony_ci    void SetUp();
36ea497e4dSopenharmony_ci    void TearDown();
37ea497e4dSopenharmony_ci};
38ea497e4dSopenharmony_ci
39ea497e4dSopenharmony_civoid FaceAuthServiceTest::SetUpTestCase()
40ea497e4dSopenharmony_ci{
41ea497e4dSopenharmony_ci    static const char *perms[] = { "ohos.permission.MANAGE_USER_IDM" };
42ea497e4dSopenharmony_ci    NativeTokenInfoParams infoInstance = {
43ea497e4dSopenharmony_ci        .dcapsNum = 0,
44ea497e4dSopenharmony_ci        .permsNum = 1,
45ea497e4dSopenharmony_ci        .aclsNum = 0,
46ea497e4dSopenharmony_ci        .dcaps = nullptr,
47ea497e4dSopenharmony_ci        .perms = perms,
48ea497e4dSopenharmony_ci        .acls = nullptr,
49ea497e4dSopenharmony_ci        .processName = "face_auth_service_test",
50ea497e4dSopenharmony_ci        .aplStr = "system_core",
51ea497e4dSopenharmony_ci    };
52ea497e4dSopenharmony_ci    uint64_t tokenId = GetAccessTokenId(&infoInstance);
53ea497e4dSopenharmony_ci    SetSelfTokenID(tokenId);
54ea497e4dSopenharmony_ci    Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo();
55ea497e4dSopenharmony_ci}
56ea497e4dSopenharmony_ci
57ea497e4dSopenharmony_civoid FaceAuthServiceTest::TearDownTestCase()
58ea497e4dSopenharmony_ci{
59ea497e4dSopenharmony_ci}
60ea497e4dSopenharmony_ci
61ea497e4dSopenharmony_civoid FaceAuthServiceTest::SetUp()
62ea497e4dSopenharmony_ci{
63ea497e4dSopenharmony_ci}
64ea497e4dSopenharmony_ci
65ea497e4dSopenharmony_civoid FaceAuthServiceTest::TearDown()
66ea497e4dSopenharmony_ci{
67ea497e4dSopenharmony_ci}
68ea497e4dSopenharmony_ci
69ea497e4dSopenharmony_ciHWTEST_F(FaceAuthServiceTest, FaceAuthServiceTest_001, TestSize.Level0)
70ea497e4dSopenharmony_ci{
71ea497e4dSopenharmony_ci    auto service = FaceAuthService::GetInstance();
72ea497e4dSopenharmony_ci    EXPECT_NE(service, nullptr);
73ea497e4dSopenharmony_ci    sptr<IBufferProducer> producer(nullptr);
74ea497e4dSopenharmony_ci    int32_t ret = service->SetBufferProducer(producer);
75ea497e4dSopenharmony_ci    EXPECT_EQ(ret, FACE_AUTH_SUCCESS);
76ea497e4dSopenharmony_ci}
77ea497e4dSopenharmony_ci
78ea497e4dSopenharmony_ciHWTEST_F(FaceAuthServiceTest, FaceAuthServiceTest_002, TestSize.Level0)
79ea497e4dSopenharmony_ci{
80ea497e4dSopenharmony_ci    MessageParcel data;
81ea497e4dSopenharmony_ci    MessageParcel reply;
82ea497e4dSopenharmony_ci    MessageOption option(MessageOption::TF_SYNC);
83ea497e4dSopenharmony_ci    uint32_t code = IFaceAuthInterfaceCode::FACE_AUTH_SET_BUFFER_PRODUCER;
84ea497e4dSopenharmony_ci
85ea497e4dSopenharmony_ci    auto service = FaceAuthService::GetInstance();
86ea497e4dSopenharmony_ci    EXPECT_NE(service, nullptr);
87ea497e4dSopenharmony_ci    EXPECT_EQ(service->OnRemoteRequest(code, data, reply, option), 1);
88ea497e4dSopenharmony_ci    EXPECT_TRUE(data.WriteInterfaceToken(IFaceAuth::GetDescriptor()));
89ea497e4dSopenharmony_ci    EXPECT_EQ(service->OnRemoteRequest(code, data, reply, option), 0);
90ea497e4dSopenharmony_ci    int32_t result = -1;
91ea497e4dSopenharmony_ci    EXPECT_TRUE(reply.ReadInt32(result));
92ea497e4dSopenharmony_ci    EXPECT_EQ(result, FACE_AUTH_SUCCESS);
93ea497e4dSopenharmony_ci}
94ea497e4dSopenharmony_ci} // namespace FaceAuth
95ea497e4dSopenharmony_ci} // namespace UserIam
96ea497e4dSopenharmony_ci} // namespace OHOS
97