• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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