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 "securec.h" 19 20 #include "adaptor_time.h" 21 #include "defines.h" 22 #include "idm_session.h" 23 24 extern "C" { 25 extern struct SessionInfo { 26 int32_t userId; 27 uint32_t authType; 28 uint64_t time; 29 uint64_t validAuthTokenTime; 30 uint8_t challenge[CHALLENGE_LEN]; 31 uint64_t scheduleId; 32 bool isUpdate; 33 bool isScheduleValid; 34 } *g_session; 35 extern ResultCode GenerateChallenge(uint8_t *challenge, uint32_t challengeLen); 36 } 37 38 namespace OHOS { 39 namespace UserIam { 40 namespace UserAuth { 41 using namespace testing; 42 using namespace testing::ext; 43 44 class IdmSessionTest : public testing::Test { 45 public: SetUpTestCase()46 static void SetUpTestCase() {}; 47 TearDownTestCase()48 static void TearDownTestCase() {}; 49 SetUp()50 void SetUp() {}; 51 TearDown()52 void TearDown() {}; 53 }; 54 55 HWTEST_F(IdmSessionTest, TestOpenEditSession, TestSize.Level0) 56 { 57 EXPECT_EQ(OpenEditSession(0, nullptr, 0), RESULT_BAD_PARAM); 58 } 59 60 HWTEST_F(IdmSessionTest, TestRefreshValidTokenTime, TestSize.Level0) 61 { 62 g_session = nullptr; 63 RefreshValidTokenTime(); 64 struct SessionInfo session = {}; 65 g_session = &session; 66 RefreshValidTokenTime(); 67 EXPECT_LE(g_session->validAuthTokenTime, GetSystemTime()); 68 g_session = nullptr; 69 } 70 71 HWTEST_F(IdmSessionTest, TestIsValidTokenTime, TestSize.Level0) 72 { 73 g_session = nullptr; 74 EXPECT_FALSE(IsValidTokenTime(0)); 75 } 76 77 HWTEST_F(IdmSessionTest, TestGetUserId, TestSize.Level0) 78 { 79 g_session = nullptr; 80 EXPECT_EQ(GetUserId(nullptr), RESULT_BAD_PARAM); 81 int32_t userId = 0; 82 EXPECT_EQ(GetUserId(&userId), RESULT_BAD_PARAM); 83 } 84 85 HWTEST_F(IdmSessionTest, TestCheckChallenge_001, TestSize.Level0) 86 { 87 g_session = nullptr; 88 EXPECT_EQ(CheckChallenge(nullptr, 0), RESULT_BAD_PARAM); 89 uint8_t challenge = 0; 90 EXPECT_EQ(CheckChallenge(&challenge, 0), RESULT_BAD_PARAM); 91 EXPECT_EQ(CheckChallenge(&challenge, CHALLENGE_LEN), RESULT_NEED_INIT); 92 } 93 94 HWTEST_F(IdmSessionTest, TestCheckChallenge_002, TestSize.Level0) 95 { 96 uint8_t challenge[CHALLENGE_LEN]; 97 EXPECT_EQ(memset_s(challenge, CHALLENGE_LEN, 0, CHALLENGE_LEN), EOK); 98 struct SessionInfo session; 99 EXPECT_EQ(GenerateChallenge(session.challenge, CHALLENGE_LEN), RESULT_SUCCESS); 100 g_session = &session; 101 EXPECT_EQ(CheckChallenge(challenge, CHALLENGE_LEN), RESULT_BAD_MATCH); 102 g_session = nullptr; 103 } 104 105 HWTEST_F(IdmSessionTest, TestAssociateCoauthSchedule, TestSize.Level0) 106 { 107 g_session = nullptr; 108 EXPECT_EQ(AssociateCoauthSchedule(0, 0, true), RESULT_NEED_INIT); 109 } 110 111 HWTEST_F(IdmSessionTest, TestGetEnrollScheduleInfo_001, TestSize.Level0) 112 { 113 EXPECT_EQ(GetEnrollScheduleInfo(nullptr, nullptr), RESULT_BAD_PARAM); 114 uint64_t scheduleId = 0; 115 EXPECT_EQ(GetEnrollScheduleInfo(&scheduleId, nullptr), RESULT_BAD_PARAM); 116 } 117 118 HWTEST_F(IdmSessionTest, TestGetEnrollScheduleInfo_002, TestSize.Level0) 119 { 120 g_session = nullptr; 121 uint64_t scheduleId = 0; 122 uint32_t authType = 1; 123 EXPECT_EQ(GetEnrollScheduleInfo(&scheduleId, &authType), RESULT_NEED_INIT); 124 struct SessionInfo session; 125 session.isScheduleValid = false; 126 g_session = &session; 127 EXPECT_EQ(GetEnrollScheduleInfo(&scheduleId, &authType), RESULT_NEED_INIT); 128 session.isScheduleValid = true; 129 EXPECT_EQ(GetEnrollScheduleInfo(&scheduleId, &authType), RESULT_SUCCESS); 130 g_session = nullptr; 131 } 132 133 HWTEST_F(IdmSessionTest, TestIsSessionTimeout, TestSize.Level0) 134 { 135 g_session = nullptr; 136 EXPECT_TRUE(IsSessionTimeout()); 137 struct SessionInfo session; 138 session.time = UINT64_MAX; 139 g_session = &session; 140 EXPECT_TRUE(IsSessionTimeout()); 141 g_session = nullptr; 142 } 143 144 HWTEST_F(IdmSessionTest, TestGetIsUpdate, TestSize.Level0) 145 { 146 EXPECT_EQ(GetIsUpdate(nullptr), RESULT_BAD_PARAM); 147 } 148 149 HWTEST_F(IdmSessionTest, TestIsSessionValid, TestSize.Level0) 150 { 151 struct SessionInfo session; 152 session.userId = 2135; 153 session.time = UINT64_MAX; 154 g_session = &session; 155 EXPECT_FALSE(IsSessionValid(0)); 156 session.time = GetSystemTime(); 157 EXPECT_FALSE(IsSessionValid(0)); 158 g_session = nullptr; 159 } 160 } // namespace UserAuth 161 } // namespace UserIam 162 } // namespace OHOS 163