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 use crate::common::*;
17 use asset_sdk::*;
18
19 #[test]
pre_query_non_exist_with_alias()20 fn pre_query_non_exist_with_alias() {
21 let alias = function!().as_bytes();
22 let mut query = AssetMap::new();
23 query.insert_attr(Tag::Alias, alias.to_owned());
24 expect_error_eq(ErrCode::NotFound, asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap_err());
25 }
26
27 #[test]
pre_query_with_wrong_auth_type()28 fn pre_query_with_wrong_auth_type() {
29 let function_name = function!().as_bytes();
30 add_default_asset(function_name, function_name).unwrap();
31
32 let mut query = AssetMap::new();
33 query.insert_attr(Tag::Alias, function_name.to_owned());
34 expect_error_eq(ErrCode::NotFound, asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap_err());
35 remove_by_alias(function_name).unwrap();
36 }
37
38 #[test]
pre_query_with_wrong_accessibility()39 fn pre_query_with_wrong_accessibility() {
40 let function_name = function!().as_bytes();
41 add_default_auth_asset(function_name, function_name).unwrap();
42
43 let mut query = AssetMap::new();
44 query.insert_attr(Tag::Accessibility, Accessibility::DeviceUnlocked);
45 expect_error_eq(ErrCode::NotFound, asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap_err());
46 remove_by_alias(function_name).unwrap();
47 }
48
49 #[test]
pre_query_with_unsupported_auth_type()50 fn pre_query_with_unsupported_auth_type() {
51 let function_name = function!().as_bytes();
52 add_default_auth_asset(function_name, function_name).unwrap();
53
54 let mut query = AssetMap::new();
55 query.insert_attr(Tag::AuthType, AuthType::None);
56 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap_err());
57 remove_by_alias(function_name).unwrap();
58 }
59
60 #[test]
pre_query_with_wrong_persistent()61 fn pre_query_with_wrong_persistent() {
62 let function_name = function!().as_bytes();
63 add_default_auth_asset(function_name, function_name).unwrap();
64
65 let mut query = AssetMap::new();
66 query.insert_attr(Tag::IsPersistent, true);
67 expect_error_eq(ErrCode::NotFound, asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap_err());
68 remove_by_alias(function_name).unwrap();
69 }
70
71 #[test]
pre_query_with_wrong_sync_type()72 fn pre_query_with_wrong_sync_type() {
73 let function_name = function!().as_bytes();
74 add_default_auth_asset(function_name, function_name).unwrap();
75
76 let mut query = AssetMap::new();
77 query.insert_attr(Tag::SyncType, SyncType::TrustedDevice);
78 expect_error_eq(ErrCode::NotFound, asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap_err());
79 remove_by_alias(function_name).unwrap();
80 }
81
82 #[test]
pre_query_batch_data()83 fn pre_query_batch_data() {
84 let function_name = function!().as_bytes();
85 add_default_auth_asset(function_name, function_name).unwrap();
86
87 let mut query = AssetMap::new();
88 let challenge = asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap();
89 assert_eq!(CHALLENGE_SIZE, challenge.len());
90
91 query.insert_attr(Tag::AuthChallenge, challenge);
92 asset_sdk::Manager::build().unwrap().post_query(&query).unwrap();
93
94 remove_by_alias(function_name).unwrap();
95 }
96
97 #[test]
pre_query_single_data()98 fn pre_query_single_data() {
99 let function_name = function!().as_bytes();
100 add_default_auth_asset(function_name, function_name).unwrap();
101
102 let mut query = AssetMap::new();
103 query.insert_attr(Tag::Alias, function_name.to_owned());
104 query.insert_attr(Tag::Accessibility, Accessibility::DevicePowerOn);
105 query.insert_attr(Tag::AuthType, AuthType::Any);
106 query.insert_attr(Tag::RequirePasswordSet, false);
107 let challenge = asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap();
108 assert_eq!(CHALLENGE_SIZE, challenge.len());
109
110 let mut query = AssetMap::new();
111 query.insert_attr(Tag::AuthChallenge, challenge);
112 asset_sdk::Manager::build().unwrap().post_query(&query).unwrap();
113
114 remove_by_alias(function_name).unwrap();
115 }
116
117 #[test]
pre_query_max_times()118 fn pre_query_max_times() {
119 let function_name = function!().as_bytes();
120 add_default_auth_asset(function_name, function_name).unwrap();
121
122 let query = AssetMap::new();
123 let mut challenges = vec![];
124 for _i in 0..CRYPTO_CAPACITY {
125 let challenge = asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap();
126 assert_eq!(CHALLENGE_SIZE, challenge.len());
127 challenges.push(challenge);
128 }
129 expect_error_eq(ErrCode::LimitExceeded, asset_sdk::Manager::build().unwrap().pre_query(&query).unwrap_err());
130
131 for challenge in challenges.into_iter() {
132 let mut query = AssetMap::new();
133 query.insert_attr(Tag::AuthChallenge, challenge);
134 asset_sdk::Manager::build().unwrap().post_query(&query).unwrap();
135 }
136 remove_by_alias(function_name).unwrap();
137 }
138