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
28 using namespace testing::ext;
29
30 namespace OHOS {
31 namespace Security {
32 namespace AccessToken {
33 namespace {
34 const static uint32_t MAX_PERM_SIZE = 2048;
35 const static uint32_t MAX_CONFIG_FILE_SIZE = 5 * 1024;
36 const static std::string TEST_JSON_PATH = "/data/test.json";
37 const 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 }
49 class CommonTest : public testing::Test {
50 public:
51 static void SetUpTestCase();
52 static void TearDownTestCase();
53
54 void SetUp();
55 void TearDown();
56 };
57
SetUpTestCase()58 void CommonTest::SetUpTestCase() {}
TearDownTestCase()59 void CommonTest::TearDownTestCase() {}
SetUp()60 void CommonTest::SetUp() {}
TearDown()61 void CommonTest::TearDown() {}
62
63 /**
64 * @tc.name: EncryptDevId001
65 * @tc.desc: Test EncryptDevId001 function.
66 * @tc.type: FUNC
67 * @tc.require: issueI5RUCC
68 */
69 HWTEST_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 */
88 HWTEST_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 */
101 HWTEST_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 */
114 HWTEST_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 */
128 HWTEST_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 */
151 HWTEST_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