1/* 2 * Copyright (c) 2022-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 <gtest/gtest.h> 17#include <memory> 18#include <string> 19#include <fcntl.h> 20 21#include "access_token_error.h" 22#include "constant_common.h" 23#define private public 24#include "permission_map.h" 25#undef private 26#include "json_parser.h" 27 28using namespace testing::ext; 29 30namespace OHOS { 31namespace Security { 32namespace AccessToken { 33namespace { 34const static uint32_t MAX_PERM_SIZE = 2048; 35const static uint32_t MAX_CONFIG_FILE_SIZE = 5 * 1024; 36const static std::string TEST_JSON_PATH = "/data/test.json"; 37const static std::string TEST_STR = 38 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 39 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 40 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 41 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 42 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 43 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 44 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 45 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 46 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA" 47 "iVBORw0KGgoAAAANSUhEUgAAABUAAAAXCAIAAABrvZPKAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAEXRFWHRTb2Z0d2FyZQBTbmlwYXN0ZV0Xzt0AA"; 48} 49class CommonTest : public testing::Test { 50public: 51 static void SetUpTestCase(); 52 static void TearDownTestCase(); 53 54 void SetUp(); 55 void TearDown(); 56}; 57 58void CommonTest::SetUpTestCase() {} 59void CommonTest::TearDownTestCase() {} 60void CommonTest::SetUp() {} 61void CommonTest::TearDown() {} 62 63/** 64 * @tc.name: EncryptDevId001 65 * @tc.desc: Test EncryptDevId001 function. 66 * @tc.type: FUNC 67 * @tc.require: issueI5RUCC 68 */ 69HWTEST_F(CommonTest, EncryptDevId001, TestSize.Level1) 70{ 71 std::string res; 72 res = ConstantCommon::EncryptDevId(""); 73 EXPECT_EQ(res, ""); 74 75 res = ConstantCommon::EncryptDevId("12345"); 76 EXPECT_EQ(res, "1*******"); 77 78 res = ConstantCommon::EncryptDevId("123454321"); 79 EXPECT_EQ(res, "1234****4321"); 80} 81 82/* 83 * @tc.name: TransferOpcodeToPermission001 84 * @tc.desc: TransferOpcodeToPermission function test 85 * @tc.type: FUNC 86 * @tc.require: issueI6024A 87 */ 88HWTEST_F(CommonTest, TransferOpcodeToPermission001, TestSize.Level1) 89{ 90 std::string permissionName; 91 EXPECT_TRUE(TransferOpcodeToPermission(0, permissionName)); 92 EXPECT_EQ(permissionName, "ohos.permission.ANSWER_CALL"); 93} 94 95/* 96 * @tc.name: TransferOpcodeToPermission002 97 * @tc.desc: TransferOpcodeToPermission code oversize 98 * @tc.type: FUNC 99 * @tc.require: issueI6024A 100 */ 101HWTEST_F(CommonTest, TransferOpcodeToPermission002, TestSize.Level1) 102{ 103 std::string permissionName; 104 EXPECT_FALSE(TransferOpcodeToPermission(MAX_PERM_SIZE, permissionName)); 105 EXPECT_FALSE(TransferOpcodeToPermission(MAX_PERM_SIZE - 1, permissionName)); 106} 107 108/* 109 * @tc.name: GetUnsignedIntFromJson001 110 * @tc.desc: GetUnsignedIntFromJson 111 * @tc.type: FUNC 112 * @tc.require: issueI6024A 113 */ 114HWTEST_F(CommonTest, GetUnsignedIntFromJson001, TestSize.Level1) 115{ 116 const nlohmann::json json; 117 u_int32_t out = 0; 118 EXPECT_FALSE(JsonParser::GetUnsignedIntFromJson(json, "tokenId", out)); 119 EXPECT_EQ(0, out); 120} 121 122/* 123 * @tc.name: ReadCfgFile001 124 * @tc.desc: GetUnsignedIntFromJson json invalid 125 * @tc.type: FUNC 126 * @tc.require: issueI6024A 127 */ 128HWTEST_F(CommonTest, ReadCfgFile001, TestSize.Level1) 129{ 130 int32_t fd = open(TEST_JSON_PATH.c_str(), O_RDWR | O_CREAT); 131 EXPECT_NE(-1, fd); 132 std::string rawData; 133 EXPECT_EQ(ERR_PARAM_INVALID, JsonParser::ReadCfgFile(TEST_JSON_PATH, rawData)); 134 for (int i = 0; i < MAX_CONFIG_FILE_SIZE; i++) { 135 size_t strLen = strlen(TEST_STR.c_str()); 136 write(fd, TEST_STR.c_str(), strLen); 137 } 138 EXPECT_EQ(ERR_OVERSIZE, JsonParser::ReadCfgFile(TEST_JSON_PATH, rawData)); 139 close(fd); 140 sleep(5); 141 142 remove(TEST_JSON_PATH.c_str()); 143} 144 145/* 146 * @tc.name: IsDirExsit001 147 * @tc.desc: IsDirExsit input param error 148 * @tc.type: FUNC 149 * @tc.require: issueI6024A 150 */ 151HWTEST_F(CommonTest, IsDirExsit001, TestSize.Level1) 152{ 153 EXPECT_FALSE(JsonParser::IsDirExsit("")); 154 int32_t fd = open(TEST_JSON_PATH.c_str(), O_RDWR | O_CREAT); 155 EXPECT_NE(-1, fd); 156 157 EXPECT_FALSE(JsonParser::IsDirExsit(TEST_JSON_PATH.c_str())); 158} 159} // namespace AccessToken 160} // namespace Security 161} // namespace OHOS 162