1 /* 2 * Copyright (c) 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 <cstdio> 17 #include <cstring> 18 #include <fcntl.h> 19 #include <gtest/gtest.h> 20 #include <gtest/hwext/gtest-multithread.h> 21 #include <random> 22 #include <securec.h> 23 #include <sys/mman.h> 24 #include <sys/ioctl.h> 25 #include <unistd.h> 26 27 #include "errcode.h" 28 #include "code_sign_attr_utils.h" 29 #include "ownerid_utils.h" 30 31 namespace OHOS { 32 namespace Security { 33 namespace CodeSign { 34 using namespace std; 35 using namespace testing::ext; 36 using namespace testing::mt; 37 38 class CodeSignAttrUtilsTest : public testing::Test { 39 public: CodeSignAttrUtilsTest()40 CodeSignAttrUtilsTest() {}; ~CodeSignAttrUtilsTest()41 virtual ~CodeSignAttrUtilsTest() {}; SetUpTestCase()42 static void SetUpTestCase() {}; TearDownTestCase()43 static void TearDownTestCase() {}; SetUp()44 void SetUp() {}; TearDown()45 void TearDown() {}; 46 }; 47 48 /** 49 * @tc.name: CodeSignAttrUtilsTest_0001 50 * @tc.desc: test InitXpm with valid param should success 51 * @tc.type: Func 52 * @tc.require: IAHWOP 53 */ 54 HWTEST_F(CodeSignAttrUtilsTest, CodeSignAttrUtilsTest_0001, TestSize.Level0) 55 { 56 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_APP, NULL, NULL), CS_SUCCESS); 57 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_COMPAT, NULL, NULL), CS_SUCCESS); 58 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_DEBUG, NULL, NULL), CS_SUCCESS); 59 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_EXTEND, NULL, NULL), CS_SUCCESS); 60 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_DEBUG_PLATFORM, NULL, NULL), CS_SUCCESS); 61 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_PLATFORM, NULL, NULL), CS_SUCCESS); 62 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_NWEB, NULL, NULL), CS_SUCCESS); 63 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_SHARED, NULL, NULL), CS_SUCCESS); 64 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_SYSTEM, NULL, NULL), CS_SUCCESS); 65 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_APP, "test", NULL), CS_SUCCESS); 66 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_APP, "test", "20"), CS_SUCCESS); 67 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_APP, "test", "NaN"), CS_SUCCESS); 68 } 69 70 /** 71 * @tc.name: CodeSignAttrUtilsTest_0002 72 * @tc.desc: test InitXpm with invalid params should fail 73 * @tc.type: Func 74 * @tc.require: IAHWOP 75 */ 76 HWTEST_F(CodeSignAttrUtilsTest, CodeSignAttrUtilsTest_0002, TestSize.Level0) 77 { 78 // test invalid ownerid type 79 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_MAX, NULL, NULL), CS_ERR_PARAM_INVALID); 80 // test invalid ownerid valud 81 char ownerid[MAX_OWNERID_LEN + 1] = { 0 }; 82 (void)memset_s(ownerid, MAX_OWNERID_LEN + 1, 'a', MAX_OWNERID_LEN + 1); 83 EXPECT_EQ(InitXpm(0, PROCESS_OWNERID_APP, ownerid, NULL), CS_ERR_MEMORY); 84 } 85 86 /** 87 * @tc.name: CodeSignAttrUtilsTest_0003 88 * @tc.desc: test ConvertIdType 89 * @tc.type: Func 90 * @tc.require: IALFAX 91 */ 92 HWTEST_F(CodeSignAttrUtilsTest, CodeSignAttrUtilsTest_0003, TestSize.Level0) 93 { 94 // test non OWNERID_APP, retval is origin idType 95 EXPECT_EQ(ConvertIdType(PROCESS_OWNERID_DEBUG, nullptr), PROCESS_OWNERID_DEBUG); 96 EXPECT_EQ(ConvertIdType(PROCESS_OWNERID_DEBUG, "1"), PROCESS_OWNERID_DEBUG); 97 // test app not in list, retval is OWNERID_APP 98 EXPECT_EQ(ConvertIdType(PROCESS_OWNERID_APP, "1"), PROCESS_OWNERID_APP); 99 // test OWNERID_APP_TEMPA_ALLOW, retval is OWNERID_APP 100 EXPECT_EQ(ConvertIdType(PROCESS_OWNERID_APP_TEMP_ALLOW, "1"), PROCESS_OWNERID_APP); 101 // test nullptr 102 EXPECT_EQ(ConvertIdType(PROCESS_OWNERID_APP, nullptr), PROCESS_OWNERID_APP); 103 } 104 } 105 } 106 } 107