1 /*
2  * Copyright (c) 2023 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 "asset_remove_test.h"
17 
18 #include <gtest/gtest.h>
19 
20 #include "asset_api.h"
21 #include "asset_test_common.h"
22 
23 using namespace testing::ext;
24 namespace UnitTest::AssetRemoveTest {
25 class AssetRemoveTest : public testing::Test {
26 public:
27     static void SetUpTestCase(void);
28 
29     static void TearDownTestCase(void);
30 
31     void SetUp(void);
32 
33     void TearDown(void);
34 };
35 
SetUpTestCase(void)36 void AssetRemoveTest::SetUpTestCase(void)
37 {
38 }
39 
TearDownTestCase(void)40 void AssetRemoveTest::TearDownTestCase(void)
41 {
42 }
43 
SetUp(void)44 void AssetRemoveTest::SetUp(void)
45 {
46 }
47 
TearDown(void)48 void AssetRemoveTest::TearDown(void)
49 {
50 }
51 
52 /**
53  * @tc.name: AssetRemoveTest.AssetRemoveTest001
54  * @tc.desc: Add alias and secret, then remove it, expect success
55  * @tc.type: FUNC
56  * @tc.result:0
57  */
58 HWTEST_F(AssetRemoveTest, AssetRemoveTest001, TestSize.Level0)
59 {
60     Asset_Blob funcName = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
61     Asset_Attr attr[] = {
62         { .tag = ASSET_TAG_ALIAS, .value.blob = funcName },
63         { .tag = ASSET_TAG_SECRET, .value.blob = funcName },
64         { .tag = ASSET_TAG_ACCESSIBILITY, .value.u32 = ASSET_ACCESSIBILITY_DEVICE_POWERED_ON },
65         { .tag = ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
66         { .tag = ASSET_TAG_AUTH_TYPE, .value.u32 = ASSET_AUTH_TYPE_NONE },
67         { .tag = ASSET_TAG_SYNC_TYPE, .value.u32 = ASSET_SYNC_TYPE_NEVER },
68         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_1, .value.blob = funcName },
69         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_2, .value.blob = funcName },
70         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_3, .value.blob = funcName },
71         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_4, .value.blob = funcName },
72         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_1, .value.blob = funcName },
73         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_2, .value.blob = funcName },
74         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_3, .value.blob = funcName },
75         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_4, .value.blob = funcName },
76         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_1, .value.blob = funcName },
77         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_2, .value.blob = funcName },
78         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_3, .value.blob = funcName },
79         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_4, .value.blob = funcName }
80     };
81     ASSERT_EQ(ASSET_SUCCESS, OH_Asset_Add(attr, ARRAY_SIZE(attr)));
82     Asset_Attr attr2[] = {
83         { .tag = ASSET_TAG_ALIAS, .value.blob = funcName },
84         { .tag = ASSET_TAG_ACCESSIBILITY, .value.u32 = ASSET_ACCESSIBILITY_DEVICE_POWERED_ON },
85         { .tag = ASSET_TAG_REQUIRE_PASSWORD_SET, .value.boolean = false },
86         { .tag = ASSET_TAG_AUTH_TYPE, .value.u32 = ASSET_AUTH_TYPE_NONE },
87         { .tag = ASSET_TAG_SYNC_TYPE, .value.u32 = ASSET_SYNC_TYPE_NEVER },
88         { .tag = ASSET_TAG_IS_PERSISTENT, .value.boolean = false },
89         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_1, .value.blob = funcName },
90         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_2, .value.blob = funcName },
91         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_3, .value.blob = funcName },
92         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_4, .value.blob = funcName },
93         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_1, .value.blob = funcName },
94         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_2, .value.blob = funcName },
95         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_3, .value.blob = funcName },
96         { .tag = ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_4, .value.blob = funcName },
97         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_1, .value.blob = funcName },
98         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_2, .value.blob = funcName },
99         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_3, .value.blob = funcName },
100         { .tag = ASSET_TAG_DATA_LABEL_CRITICAL_4, .value.blob = funcName }
101     };
102     ASSERT_EQ(ASSET_SUCCESS, OH_Asset_Remove(attr2, ARRAY_SIZE(attr2)));
103 }
104 
105 /**
106  * @tc.name: AssetRemoveTest.AssetRemoveTest002
107  * @tc.desc: remove wrong blob type, expect fail
108  * @tc.type: FUNC
109  * @tc.result:0
110  */
111 HWTEST_F(AssetRemoveTest, AssetRemoveTest002, TestSize.Level0)
112 {
113     int arr[] = {
114         ASSET_TAG_ALIAS,
115         ASSET_TAG_DATA_LABEL_NORMAL_1, ASSET_TAG_DATA_LABEL_NORMAL_2,
116         ASSET_TAG_DATA_LABEL_NORMAL_3, ASSET_TAG_DATA_LABEL_NORMAL_4,
117         ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_1, ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_2,
118         ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_3, ASSET_TAG_DATA_LABEL_NORMAL_LOCAL_4,
119         ASSET_TAG_DATA_LABEL_CRITICAL_1, ASSET_TAG_DATA_LABEL_CRITICAL_2,
120         ASSET_TAG_DATA_LABEL_CRITICAL_3, ASSET_TAG_DATA_LABEL_CRITICAL_4
121     };
122     for (int i = 0; i < ARRAY_SIZE(arr); i++) {
123         Asset_Blob tmpBlob = { .size = strlen(__func__), .data = nullptr };
124         Asset_Attr attr[] = {
125             { .tag = arr[i], .value.blob = tmpBlob }
126         };
127         ASSERT_EQ(ASSET_INVALID_ARGUMENT, OH_Asset_Remove(attr, ARRAY_SIZE(attr)));
128 
129         attr[0].value.u32 = 0;
130         ASSERT_EQ(ASSET_INVALID_ARGUMENT, OH_Asset_Remove(attr, ARRAY_SIZE(attr)));
131 
132         attr[0].value.boolean = true;
133         ASSERT_EQ(ASSET_INVALID_ARGUMENT, OH_Asset_Remove(attr, ARRAY_SIZE(attr)));
134     }
135 }
136 
137 /**
138  * @tc.name: AssetRemoveTest.AssetRemoveTest003
139  * @tc.desc: remove wrong u32 type, expect fail
140  * @tc.type: FUNC
141  * @tc.result:0
142  */
143 HWTEST_F(AssetRemoveTest, AssetRemoveTest003, TestSize.Level0)
144 {
145     int arr[] = { ASSET_TAG_ACCESSIBILITY, ASSET_TAG_AUTH_TYPE, ASSET_TAG_SYNC_TYPE };
146     for (int i = 0; i < ARRAY_SIZE(arr); i++) {
147         Asset_Blob tmpBlob = { .size = strlen(__func__), .data = nullptr };
148         Asset_Attr attr[] = {
149             { .tag = arr[i], .value.blob = tmpBlob }
150         };
151         ASSERT_EQ(ASSET_INVALID_ARGUMENT, OH_Asset_Remove(attr, ARRAY_SIZE(attr)));
152 
153         tmpBlob = { .size = strlen(__func__), .data = reinterpret_cast<uint8_t*>(const_cast<char*>(__func__)) };
154         attr[0].value.blob = tmpBlob;
155         ASSERT_EQ(ASSET_INVALID_ARGUMENT, OH_Asset_Remove(attr, ARRAY_SIZE(attr)));
156     }
157 }
158 }