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, TestCheckSessionTimeout, TestSize.Level0) 134 { 135 g_session = nullptr; 136 EXPECT_EQ(CheckSessionTimeout(), RESULT_NEED_INIT); 137 struct SessionInfo session; 138 session.time = UINT64_MAX; 139 g_session = &session; 140 EXPECT_EQ(CheckSessionTimeout(), RESULT_GENERAL_ERROR); 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, TestCheckSessionValid, TestSize.Level0) 150 { 151 struct SessionInfo session; 152 constexpr int32_t userId = 2135; 153 session.userId = userId; 154 session.time = UINT64_MAX; 155 g_session = &session; 156 EXPECT_EQ(CheckSessionValid(0), RESULT_GENERAL_ERROR); 157 session.time = GetSystemTime(); 158 EXPECT_EQ(CheckSessionValid(0), RESULT_GENERAL_ERROR); 159 g_session = nullptr; 160 } 161 162 HWTEST_F(IdmSessionTest, TestGetChallenge, TestSize.Level0) 163 { 164 constexpr uint32_t arrayLen = 32; 165 uint8_t challengeArray[arrayLen] = {}; 166 EXPECT_EQ(GetChallenge(nullptr, 0), RESULT_BAD_PARAM); 167 EXPECT_EQ(GetChallenge(nullptr, arrayLen), RESULT_BAD_PARAM); 168 EXPECT_EQ(GetChallenge(challengeArray, arrayLen), RESULT_NEED_INIT); 169 } 170 171 HWTEST_F(IdmSessionTest, TestGetCacheRootSecret, TestSize.Level0) 172 { 173 constexpr int32_t userId = 0; 174 Buffer *rootSecret = GetCacheRootSecret(userId); 175 EXPECT_EQ(rootSecret, nullptr); 176 struct SessionInfo session; 177 session.userId = userId; 178 rootSecret = GetCacheRootSecret(userId); 179 EXPECT_EQ(rootSecret, nullptr); 180 } 181 182 HWTEST_F(IdmSessionTest, TestCacheRootSecret, TestSize.Level0) 183 { 184 constexpr int32_t userId = 0; 185 CacheRootSecret(userId, nullptr); 186 constexpr int32_t dataLen = 32; 187 Buffer *test = CreateBufferBySize(dataLen); 188 CacheRootSecret(userId, test); 189 DestoryBuffer(test); 190 } 191 192 HWTEST_F(IdmSessionTest, TestIsValidUserType, TestSize.Level0) 193 { 194 constexpr int32_t userType = 1024; 195 EXPECT_EQ(IsValidUserType(userType), RESULT_BAD_PARAM); 196 } 197 198 } // namespace UserAuth 199 } // namespace UserIam 200 } // namespace OHOS 201