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]
remove_invalid_alias()20 fn remove_invalid_alias() {
21 let mut query = AssetMap::new();
22 query.insert_attr(Tag::Alias, vec![]);
23 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
24
25 query.insert_attr(Tag::Alias, vec![0; MAX_ALIAS_SIZE + 1]);
26 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
27 }
28
29 #[test]
remove_invalid_accessibility()30 fn remove_invalid_accessibility() {
31 let mut query = AssetMap::new();
32
33 query.insert_attr(Tag::Accessibility, (Accessibility::DeviceUnlocked as u32) + 1);
34 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
35 }
36
37 #[test]
remove_invalid_auth_type()38 fn remove_invalid_auth_type() {
39 let mut query = AssetMap::new();
40 query.insert_attr(Tag::AuthType, (AuthType::None as u32) + 1);
41 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
42
43 query.insert_attr(Tag::AuthType, (AuthType::Any as u32) + 1);
44 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
45 }
46
47 #[test]
remove_invalid_sync_type()48 fn remove_invalid_sync_type() {
49 let mut query = AssetMap::new();
50 let sync_type = SyncType::ThisDevice as u32 | SyncType::TrustedDevice as u32 | SyncType::TrustedAccount as u32;
51 query.insert_attr(Tag::SyncType, sync_type + 1);
52 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
53 }
54
55 #[test]
remove_invalid_label()56 fn remove_invalid_label() {
57 let labels = &[CRITICAL_LABEL_ATTRS, NORMAL_LABEL_ATTRS].concat();
58 for &label in labels {
59 let mut query = AssetMap::new();
60 query.insert_attr(label, vec![]);
61 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
62
63 query.insert_attr(label, vec![0; MAX_LABEL_SIZE + 1]);
64 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
65 }
66 }
67
68 #[test]
remove_bool_tag_with_unmatched_type()69 fn remove_bool_tag_with_unmatched_type() {
70 let tags = [Tag::RequirePasswordSet, Tag::IsPersistent];
71 for tag in tags {
72 let mut query = AssetMap::new();
73 query.insert_attr(tag, vec![]);
74 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
75
76 query.insert_attr(tag, 0);
77 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
78 }
79 }
80
81 #[test]
remove_bytes_tag_with_unmatched_type()82 fn remove_bytes_tag_with_unmatched_type() {
83 let mut tags_bytes = [CRITICAL_LABEL_ATTRS, NORMAL_LABEL_ATTRS].concat();
84 tags_bytes.extend(&[Tag::Alias]);
85 for tag in tags_bytes {
86 let mut query = AssetMap::new();
87 query.insert_attr(tag, 0);
88 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
89
90 query.insert_attr(tag, true);
91 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
92 }
93 }
94
95 #[test]
remove_number_tag_with_unmatched_type()96 fn remove_number_tag_with_unmatched_type() {
97 let tags_bytes = [Tag::Accessibility, Tag::AuthType, Tag::SyncType];
98 for tag in tags_bytes {
99 let mut query = AssetMap::new();
100 query.insert_attr(tag, vec![]);
101 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
102
103 query.insert_attr(tag, true);
104 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
105 }
106 }
107
108 #[test]
remove_unsupported_tags()109 fn remove_unsupported_tags() {
110 let tags_bytes = [Tag::Secret, Tag::AuthChallenge, Tag::AuthToken];
111 for tag in tags_bytes {
112 let mut query = AssetMap::new();
113 query.insert_attr(tag, vec![0; MIN_ARRAY_SIZE + 1]);
114 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
115 }
116
117 let tags_num = [
118 Tag::AuthValidityPeriod,
119 Tag::ConflictResolution,
120 Tag::ReturnLimit,
121 Tag::ReturnOffset,
122 Tag::ReturnOrderedBy,
123 Tag::ReturnType,
124 ];
125 for tag in tags_num {
126 let mut query = AssetMap::new();
127 query.insert_attr(tag, 1);
128 expect_error_eq(ErrCode::InvalidArgument, asset_sdk::Manager::build().unwrap().remove(&query).unwrap_err());
129 }
130 }
131