1 /*
2 * Copyright (c) 2022 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 "auth_level.h"
19 #include "idm_common.h"
20 #include "pool.h"
21
22 extern "C" {
23 extern LinkedList *g_poolList;
24 extern LinkedList *g_userInfoList;
25 extern void DestroyExecutorInfo(void *data);
26 extern ResultCode QueryScheduleAsl(const CoAuthSchedule *coAuthSchedule, uint32_t *asl);
27 extern ResultCode GetExecutorAslAndAcl(uint32_t authType, uint32_t *asl, uint32_t *acl);
28 }
29
30 namespace OHOS {
31 namespace UserIam {
32 namespace UserAuth {
33 using namespace testing;
34 using namespace testing::ext;
35
36 class AuthLevelTest : public testing::Test {
37 public:
SetUpTestCase()38 static void SetUpTestCase() {};
39
TearDownTestCase()40 static void TearDownTestCase() {};
41
SetUp()42 void SetUp() {};
43
TearDown()44 void TearDown() {};
45 };
46
HWTEST_F(AuthLevelTest, TestGetAtl, TestSize.Level0)47 HWTEST_F(AuthLevelTest, TestGetAtl, TestSize.Level0)
48 {
49 EXPECT_EQ(GetAtl(0, 0), 0);
50 }
51
HWTEST_F(AuthLevelTest, TestQueryScheduleAsl_001, TestSize.Level0)52 HWTEST_F(AuthLevelTest, TestQueryScheduleAsl_001, TestSize.Level0)
53 {
54 EXPECT_EQ(QueryScheduleAsl(nullptr, nullptr), RESULT_BAD_PARAM);
55 CoAuthSchedule schedule = {};
56 EXPECT_EQ(QueryScheduleAsl(&schedule, nullptr), RESULT_BAD_PARAM);
57 uint32_t asl = 0;
58 schedule.executorSize = 0;
59 EXPECT_EQ(QueryScheduleAsl(&schedule, &asl), RESULT_BAD_PARAM);
60 }
61
HWTEST_F(AuthLevelTest, TestQueryScheduleAsl_002, TestSize.Level0)62 HWTEST_F(AuthLevelTest, TestQueryScheduleAsl_002, TestSize.Level0)
63 {
64 CoAuthSchedule schedule = {};
65 ExecutorInfoHal executorInfo = {};
66 constexpr uint32_t esl = 10;
67 constexpr uint32_t excutorSize = 1;
68 executorInfo.esl = esl;
69 schedule.executors[0] = executorInfo;
70 schedule.executorSize = excutorSize;
71 uint32_t asl = 0;
72 EXPECT_EQ(QueryScheduleAsl(&schedule, &asl), RESULT_SUCCESS);
73 }
74
HWTEST_F(AuthLevelTest, TestQueryScheduleAtl, TestSize.Level0)75 HWTEST_F(AuthLevelTest, TestQueryScheduleAtl, TestSize.Level0)
76 {
77 EXPECT_EQ(QueryScheduleAtl(nullptr, 0, nullptr), RESULT_BAD_PARAM);
78 CoAuthSchedule schedule = {};
79 EXPECT_EQ(QueryScheduleAtl(&schedule, 0, nullptr), RESULT_BAD_PARAM);
80 uint32_t atl = 0;
81 schedule.executorSize = 0;
82 EXPECT_EQ(QueryScheduleAtl(&schedule, 0, &atl), RESULT_BAD_PARAM);
83 }
84
HWTEST_F(AuthLevelTest, TestGetExecutorAslAndAcl_001, TestSize.Level0)85 HWTEST_F(AuthLevelTest, TestGetExecutorAslAndAcl_001, TestSize.Level0)
86 {
87 constexpr uint32_t authType = 1;
88 uint32_t asl = 0;
89 uint32_t acl = 0;
90 EXPECT_EQ(GetExecutorAslAndAcl(authType, &asl, &acl), RESULT_UNKNOWN);
91 }
92
HWTEST_F(AuthLevelTest, TestGetExecutorAslAndAcl_002, TestSize.Level0)93 HWTEST_F(AuthLevelTest, TestGetExecutorAslAndAcl_002, TestSize.Level0)
94 {
95 g_poolList = CreateLinkedList(DestroyExecutorInfo);
96 EXPECT_NE(g_poolList, nullptr);
97 ExecutorInfoHal executorInfo = {};
98 executorInfo.authType = 1;
99 executorInfo.executorRole = COLLECTOR;
100 g_poolList->insert(g_poolList, static_cast<void *>(&executorInfo));
101 constexpr uint32_t authType = 1;
102 uint32_t asl = 0;
103 uint32_t acl = 0;
104 EXPECT_EQ(GetExecutorAslAndAcl(authType, &asl, &acl), RESULT_SUCCESS);
105 }
106
HWTEST_F(AuthLevelTest, TestGetExecutorAslAndAcl_003, TestSize.Level0)107 HWTEST_F(AuthLevelTest, TestGetExecutorAslAndAcl_003, TestSize.Level0)
108 {
109 g_poolList = CreateLinkedList(DestroyExecutorInfo);
110 EXPECT_NE(g_poolList, nullptr);
111 ExecutorInfoHal executorInfo = {};
112 executorInfo.authType = 1;
113 executorInfo.executorRole = ALL_IN_ONE;
114 executorInfo.esl = 0;
115 g_poolList->insert(g_poolList, static_cast<void *>(&executorInfo));
116 constexpr uint32_t authType = 1;
117 uint32_t asl = 0;
118 uint32_t acl = 0;
119 EXPECT_EQ(GetExecutorAslAndAcl(authType, &asl, &acl), RESULT_SUCCESS);
120 }
121 } // namespace UserAuth
122 } // namespace UserIam
123 } // namespace OHOS
124