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 #include "gtest/gtest.h"
16 #include "mock_constant.h"
17 #define private public
18 #define protected public
19 #include "domain_verifier.h"
20 #undef private
21 #undef protected
22 namespace OHOS::AppDomainVerify {
23 using namespace testing;
24 using namespace testing::ext;
25
26 class DomainVerifierTest : public testing::Test {
27 public:
28 static void SetUpTestCase(void);
29 static void TearDownTestCase(void);
30 void SetUp();
31 void TearDown();
32 };
33
SetUpTestCase(void)34 void DomainVerifierTest::SetUpTestCase(void)
35 {
36 }
37
TearDownTestCase(void)38 void DomainVerifierTest::TearDownTestCase(void)
39 {
40 }
41
SetUp(void)42 void DomainVerifierTest::SetUp(void)
43 {
44 }
45
TearDown(void)46 void DomainVerifierTest::TearDown(void)
47 {
48 }
49 /**
50 * @tc.name: DomainVerifierTest001
51 * @tc.desc:
52 * @tc.type: FUNC
53 */
54 HWTEST_F(DomainVerifierTest, DomainVerifierTest001, TestSize.Level0)
55 {
56 AppVerifyBaseInfo appVerifyBaseInfo;
57 std::string assetJsonsStr = "";
58 ASSERT_TRUE(DomainVerifier::VerifyHost(OHOS::NetStack::HttpClient::ResponseCode::OK, assetJsonsStr,
59 appVerifyBaseInfo) == InnerVerifyStatus::STATE_FAIL);
60 }
61 /**
62 * @tc.name: DomainVerifierTest002
63 * @tc.desc:
64 * @tc.type: FUNC
65 */
66 HWTEST_F(DomainVerifierTest, DomainVerifierTest002, TestSize.Level0)
67 {
68 ASSERT_TRUE(InnerVerifyStatus::FAILURE_REDIRECT ==
69 DomainVerifier::GetVerifyStatusFromHttpError(OHOS::NetStack::HttpClient::ResponseCode::MOVED_PERM));
70 ASSERT_TRUE(InnerVerifyStatus::FAILURE_CLIENT_ERROR ==
71 DomainVerifier::GetVerifyStatusFromHttpError(OHOS::NetStack::HttpClient::ResponseCode::UNAUTHORIZED));
72 ASSERT_TRUE(InnerVerifyStatus::FAILURE_REJECTED_BY_SERVER ==
73 DomainVerifier::GetVerifyStatusFromHttpError(OHOS::NetStack::HttpClient::ResponseCode::INTERNAL_ERROR));
74 ASSERT_TRUE(InnerVerifyStatus::FAILURE_HTTP_UNKNOWN ==
75 DomainVerifier::GetVerifyStatusFromHttpError(OHOS::NetStack::HttpClient::ResponseCode::PARTIAL));
76 }
77 /**
78 * @tc.name: DomainVerifierTest003
79 * @tc.desc: VerifyHost test.
80 * @tc.type: FUNC
81 */
82 HWTEST_F(DomainVerifierTest, DomainVerifierTest003, TestSize.Level0)
83 {
84 AssetJsonObj assetJsonObj;
85 AppVerifyBaseInfo appVerifyBaseInfo;
86 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
87 ASSERT_TRUE(
88 InnerVerifyStatus::STATE_FAIL == DomainVerifier::VerifyHostWithBundleName(assetJsonObj, appVerifyBaseInfo));
89 appVerifyBaseInfo.fingerprint = FINGERPRINT;
90 ASSERT_TRUE(
91 InnerVerifyStatus::STATE_FAIL == DomainVerifier::VerifyHostWithBundleName(assetJsonObj, appVerifyBaseInfo));
92 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfo);
93 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
94 appVerifyBaseInfo.fingerprint = FINGERPRINT;
95 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfo);
96 ASSERT_TRUE(
97 InnerVerifyStatus::STATE_SUCCESS == DomainVerifier::VerifyHostWithBundleName(assetJsonObj, appVerifyBaseInfo));
98 }
99 /**
100 * @tc.name: DomainVerifierTest004
101 * @tc.desc: VerifyHost test.
102 * @tc.type: FUNC
103 */
104 HWTEST_F(DomainVerifierTest, DomainVerifierTest004, TestSize.Level0)
105 {
106 AssetJsonObj assetJsonObj;
107 AppVerifyBaseInfo appVerifyBaseInfo;
108 AppVerifyBaseInfo appVerifyBaseInfoInApp;
109
110 // appidentifier null
111 appVerifyBaseInfo.appIdentifier = "";
112 ASSERT_TRUE(
113 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
114
115 appVerifyBaseInfo.appIdentifier = APP_IDENTIFIER;
116 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
117 // apps empty
118 ASSERT_TRUE(
119 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
120
121 // 1 app empty appIdentifier
122 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
123 ASSERT_TRUE(
124 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
125
126 // 1 app appIdentifier not null and not equal
127 appVerifyBaseInfo.appIdentifier = APP_IDENTIFIER;
128 appVerifyBaseInfoInApp.appIdentifier = FINGERPRINT;
129 assetJsonObj.applinking.apps.clear();
130 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
131 ASSERT_TRUE(
132 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
133 }
134 /**
135 * @tc.name: DomainVerifierTest005
136 * @tc.desc: VerifyHost test.
137 * @tc.type: FUNC
138 */
139 HWTEST_F(DomainVerifierTest, DomainVerifierTest005, TestSize.Level0)
140 {
141 AssetJsonObj assetJsonObj;
142 AppVerifyBaseInfo appVerifyBaseInfo;
143 AppVerifyBaseInfo appVerifyBaseInfoInApp;
144
145 // 1.1 app empty appIdentifier
146 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
147 ASSERT_TRUE(
148 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
149
150 // 1.2 app appIdentifier not null and not equal
151 appVerifyBaseInfo.appIdentifier = APP_IDENTIFIER;
152 appVerifyBaseInfoInApp.appIdentifier = FINGERPRINT;
153 assetJsonObj.applinking.apps.clear();
154 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
155 ASSERT_TRUE(
156 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
157
158 // 1.3 app appIdentifier not null and not equal-> empty bundleName
159 appVerifyBaseInfoInApp.appIdentifier = FINGERPRINT;
160 appVerifyBaseInfoInApp.bundleName = "";
161 ASSERT_TRUE(
162 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
163
164 // 1.4 app appIdentifier not null and not equal-> not empty bundleName, not equal
165 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
166 appVerifyBaseInfoInApp.bundleName = "test";
167 assetJsonObj.applinking.apps.clear();
168 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
169 ASSERT_TRUE(
170 InnerVerifyStatus::UNKNOWN == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
171
172 // 1.5 app appIdentifier not null and not equal-> not empty bundleName, equal
173 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
174 appVerifyBaseInfoInApp.bundleName = BUNDLE_NAME;
175 assetJsonObj.applinking.apps.clear();
176 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
177 ASSERT_TRUE(
178 InnerVerifyStatus::STATE_FAIL == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
179 }
180 /**
181 * @tc.name: DomainVerifierTest006
182 * @tc.desc: VerifyHost test.
183 * @tc.type: FUNC
184 */
185 HWTEST_F(DomainVerifierTest, DomainVerifierTest006, TestSize.Level0)
186 {
187 AssetJsonObj assetJsonObj;
188 AppVerifyBaseInfo appVerifyBaseInfo;
189 AppVerifyBaseInfo appVerifyBaseInfoInApp;
190 // appId equal
191 appVerifyBaseInfo.appIdentifier = APP_IDENTIFIER;
192 appVerifyBaseInfoInApp.appIdentifier = APP_IDENTIFIER;
193
194 // 2.1 equal-> base bundle null, inapp bundle null, not equal
195 appVerifyBaseInfo.bundleName = "";
196 appVerifyBaseInfoInApp.bundleName = "";
197 assetJsonObj.applinking.apps.clear();
198 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
199 ASSERT_TRUE(
200 InnerVerifyStatus::STATE_SUCCESS == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
201
202 // 2.2 equal-> base bundle not null, inapp bundle null, not equal
203 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
204 appVerifyBaseInfoInApp.bundleName = "";
205 assetJsonObj.applinking.apps.clear();
206 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
207 ASSERT_TRUE(
208 InnerVerifyStatus::STATE_SUCCESS == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
209
210 // 2.3 equal-> base bundle not null, inapp bundle not null, not equal
211 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
212 appVerifyBaseInfoInApp.bundleName = "test";
213 assetJsonObj.applinking.apps.clear();
214 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
215 ASSERT_TRUE(
216 InnerVerifyStatus::STATE_FAIL == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
217
218 // 2.4 equal-> base bundle not null, inapp bundle not null, equal
219 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
220 appVerifyBaseInfoInApp.bundleName = BUNDLE_NAME;
221 assetJsonObj.applinking.apps.clear();
222 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
223 ASSERT_TRUE(
224 InnerVerifyStatus::STATE_SUCCESS == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
225 }
226 /**
227 * @tc.name: DomainVerifierTest007
228 * @tc.desc: VerifyHost test.
229 * @tc.type: FUNC
230 */
231 HWTEST_F(DomainVerifierTest, DomainVerifierTest007, TestSize.Level0)
232 {
233 AssetJsonObj assetJsonObj;
234 AppVerifyBaseInfo appVerifyBaseInfo;
235 AppVerifyBaseInfo appVerifyBaseInfoInApp;
236 appVerifyBaseInfo.appIdentifier = APP_IDENTIFIER;
237 appVerifyBaseInfoInApp.appIdentifier = APP_IDENTIFIER;
238 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
239 appVerifyBaseInfoInApp.bundleName = BUNDLE_NAME;
240
241 // 2.5 equal-> base fingerprint null, inapp fingerprint null, not equal
242 appVerifyBaseInfo.fingerprint = "";
243 appVerifyBaseInfoInApp.fingerprint = "";
244 assetJsonObj.applinking.apps.clear();
245 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
246 ASSERT_TRUE(
247 InnerVerifyStatus::STATE_SUCCESS == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
248
249 // 2.6 equal-> base fingerprint not null, inapp fingerprint null, not equal
250 appVerifyBaseInfoInApp.fingerprint = FINGERPRINT;
251 appVerifyBaseInfo.fingerprint = "";
252 assetJsonObj.applinking.apps.clear();
253 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
254 ASSERT_TRUE(
255 InnerVerifyStatus::STATE_SUCCESS == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
256
257 // 2.7 equal-> base fingerprint not null, inapp fingerprint not null, not equal
258 appVerifyBaseInfoInApp.fingerprint = FINGERPRINT;
259 appVerifyBaseInfo.fingerprint = "test";
260 assetJsonObj.applinking.apps.clear();
261 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
262 ASSERT_TRUE(
263 InnerVerifyStatus::STATE_FAIL == DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
264
265 // 2.8 equal-> base fingerprint not null, inapp fingerprint not null, equal
266 appVerifyBaseInfoInApp.fingerprint = FINGERPRINT;
267 appVerifyBaseInfo.fingerprint = FINGERPRINT;
268 assetJsonObj.applinking.apps.clear();
269 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
270 ASSERT_TRUE(
271 InnerVerifyStatus::STATE_SUCCESS ==
272 DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
273 }
274
275 /**
276 * @tc.name: DomainVerifierTest008
277 * @tc.desc: VerifyHost test.
278 * @tc.type: FUNC
279 */
280 HWTEST_F(DomainVerifierTest, DomainVerifierTest008, TestSize.Level0)
281 {
282 AssetJsonObj assetJsonObj;
283 AppVerifyBaseInfo appVerifyBaseInfo;
284 AppVerifyBaseInfo appVerifyBaseInfoInApp;
285
286 // final
287 appVerifyBaseInfo.appIdentifier = APP_IDENTIFIER;
288 appVerifyBaseInfoInApp.appIdentifier = APP_IDENTIFIER;
289
290 appVerifyBaseInfo.bundleName = BUNDLE_NAME;
291 appVerifyBaseInfoInApp.bundleName = BUNDLE_NAME;
292
293 appVerifyBaseInfo.fingerprint = FINGERPRINT;
294 appVerifyBaseInfoInApp.fingerprint = FINGERPRINT;
295
296 assetJsonObj.applinking.apps.clear();
297 assetJsonObj.applinking.apps.emplace_back(appVerifyBaseInfoInApp);
298 ASSERT_TRUE(InnerVerifyStatus::STATE_SUCCESS ==
299 DomainVerifier::VerifyHostWithAppIdentifier(assetJsonObj, appVerifyBaseInfo));
300 }
301 }