Skip to content

Commit 34094d4

Browse files
authored
fix(rust/signed-doc): ParametersRule impl (#337)
* fix `ParametersRule` impl * fix clippy
1 parent b573bff commit 34094d4

File tree

1 file changed

+19
-101
lines changed

1 file changed

+19
-101
lines changed

rust/signed_doc/src/validator/rules/parameters.rs

Lines changed: 19 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -35,37 +35,12 @@ impl ParametersRule {
3535
{
3636
if let Some(parameters) = doc.doc_meta().parameters() {
3737
let parameters_validator = |replied_doc: CatalystSignedDocument| {
38-
if !referenced_doc_check(
38+
referenced_doc_check(
3939
&replied_doc,
4040
exp_parameters_type.uuid(),
4141
"parameters",
4242
doc.report(),
43-
) {
44-
return false;
45-
}
46-
let Some(doc_ref) = doc.doc_meta().doc_ref() else {
47-
doc.report()
48-
.missing_field("ref", "Document must have a ref field");
49-
return false;
50-
};
51-
52-
let Some(replied_doc_ref) = replied_doc.doc_meta().doc_ref() else {
53-
doc.report()
54-
.missing_field("ref", "Referenced document must have ref field");
55-
return false;
56-
};
57-
58-
if replied_doc_ref.id != doc_ref.id {
59-
doc.report().invalid_value(
60-
"parameters",
61-
doc_ref.id .to_string().as_str(),
62-
replied_doc_ref.id.to_string().as_str(),
63-
"Invalid referenced document. Document ID should aligned with the replied document.",
64-
);
65-
return false;
66-
}
67-
68-
true
43+
)
6944
};
7045
return validate_provided_doc(
7146
&parameters,
@@ -102,66 +77,47 @@ mod tests {
10277
use super::*;
10378
use crate::{providers::tests::TestCatalystSignedDocumentProvider, Builder};
10479

105-
#[allow(clippy::too_many_lines)]
10680
#[tokio::test]
10781
async fn ref_rule_specified_test() {
10882
let mut provider = TestCatalystSignedDocumentProvider::default();
10983

11084
let exp_parameters_type = UuidV4::new();
111-
let common_ref_id = UuidV7::new();
112-
let common_ref_ver = UuidV7::new();
11385

114-
let valid_replied_doc_id = UuidV7::new();
115-
let valid_replied_doc_ver = UuidV7::new();
116-
let another_type_replied_doc_ver = UuidV7::new();
117-
let another_type_replied_doc_id = UuidV7::new();
118-
let missing_ref_replied_doc_ver = UuidV7::new();
119-
let missing_ref_replied_doc_id = UuidV7::new();
120-
let missing_type_replied_doc_ver = UuidV7::new();
121-
let missing_type_replied_doc_id = UuidV7::new();
86+
let valid_category_doc_id = UuidV7::new();
87+
let valid_category_doc_ver = UuidV7::new();
88+
let another_type_category_doc_id = UuidV7::new();
89+
let another_type_category_doc_ver = UuidV7::new();
90+
let missing_type_category_doc_id = UuidV7::new();
91+
let missing_type_category_doc_ver = UuidV7::new();
12292

12393
// prepare replied documents
12494
{
12595
let ref_doc = Builder::new()
12696
.with_json_metadata(serde_json::json!({
127-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
128-
"id": valid_replied_doc_id.to_string(),
129-
"ver": valid_replied_doc_ver.to_string(),
97+
"id": valid_category_doc_id.to_string(),
98+
"ver": valid_category_doc_ver.to_string(),
13099
"type": exp_parameters_type.to_string()
131100
}))
132101
.unwrap()
133102
.build();
134103
provider.add_document(ref_doc).unwrap();
135104

136-
// parameters doc with other `type` field
105+
// reply doc with other `type` field
137106
let ref_doc = Builder::new()
138107
.with_json_metadata(serde_json::json!({
139-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
140-
"id": another_type_replied_doc_id.to_string(),
141-
"ver": another_type_replied_doc_ver.to_string(),
108+
"id": another_type_category_doc_id.to_string(),
109+
"ver": another_type_category_doc_ver.to_string(),
142110
"type": UuidV4::new().to_string()
143111
}))
144112
.unwrap()
145113
.build();
146114
provider.add_document(ref_doc).unwrap();
147115

148-
// missing `ref` field in the referenced document
149-
let ref_doc = Builder::new()
150-
.with_json_metadata(serde_json::json!({
151-
"id": missing_ref_replied_doc_id.to_string(),
152-
"ver": missing_ref_replied_doc_ver.to_string(),
153-
"type": exp_parameters_type.to_string()
154-
}))
155-
.unwrap()
156-
.build();
157-
provider.add_document(ref_doc).unwrap();
158-
159116
// missing `type` field in the referenced document
160117
let ref_doc = Builder::new()
161118
.with_json_metadata(serde_json::json!({
162-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
163-
"id": missing_type_replied_doc_id.to_string(),
164-
"ver": missing_type_replied_doc_ver.to_string(),
119+
"id": missing_type_category_doc_id.to_string(),
120+
"ver": missing_type_category_doc_ver.to_string(),
165121
}))
166122
.unwrap()
167123
.build();
@@ -175,8 +131,7 @@ mod tests {
175131
};
176132
let doc = Builder::new()
177133
.with_json_metadata(serde_json::json!({
178-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
179-
"parameters": { "id": valid_replied_doc_id.to_string(), "ver": valid_replied_doc_ver.to_string() }
134+
"parameters": {"id": valid_category_doc_id.to_string(), "ver": valid_category_doc_ver }
180135
}))
181136
.unwrap()
182137
.build();
@@ -195,38 +150,13 @@ mod tests {
195150
exp_parameters_type,
196151
optional: false,
197152
};
198-
let doc = Builder::new()
199-
.with_json_metadata(serde_json::json!({
200-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
201-
}))
202-
.unwrap()
203-
.build();
204-
assert!(!rule.check(&doc, &provider).await.unwrap());
205-
206-
// missing `ref` field
207-
let doc = Builder::new()
208-
.with_json_metadata(serde_json::json!({
209-
"parameters": { "id": valid_replied_doc_id.to_string(), "ver": valid_replied_doc_ver.to_string() }
210-
}))
211-
.unwrap()
212-
.build();
153+
let doc = Builder::new().build();
213154
assert!(!rule.check(&doc, &provider).await.unwrap());
214155

215156
// reference to the document with another `type` field
216157
let doc = Builder::new()
217158
.with_json_metadata(serde_json::json!({
218-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
219-
"parameters": { "id": another_type_replied_doc_id.to_string(), "ver": another_type_replied_doc_ver.to_string() }
220-
}))
221-
.unwrap()
222-
.build();
223-
assert!(!rule.check(&doc, &provider).await.unwrap());
224-
225-
// missing `ref` field in the referenced document
226-
let doc = Builder::new()
227-
.with_json_metadata(serde_json::json!({
228-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
229-
"parameters": { "id": missing_ref_replied_doc_id.to_string(), "ver": missing_type_replied_doc_ver.to_string() }
159+
"parameters": {"id": another_type_category_doc_id.to_string(), "ver": another_type_category_doc_ver.to_string() }
230160
}))
231161
.unwrap()
232162
.build();
@@ -235,18 +165,7 @@ mod tests {
235165
// missing `type` field in the referenced document
236166
let doc = Builder::new()
237167
.with_json_metadata(serde_json::json!({
238-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
239-
"parameters": { "id": missing_type_replied_doc_id.to_string(), "ver": missing_type_replied_doc_ver.to_string() }
240-
}))
241-
.unwrap()
242-
.build();
243-
assert!(!rule.check(&doc, &provider).await.unwrap());
244-
245-
// `ref` field does not align with the referenced document
246-
let doc = Builder::new()
247-
.with_json_metadata(serde_json::json!({
248-
"ref": { "id": UuidV7::new().to_string(), "ver": UuidV7::new().to_string() },
249-
"parameters": { "id": valid_replied_doc_id.to_string(), "ver": valid_replied_doc_ver.to_string() }
168+
"parameters": {"id": missing_type_category_doc_id.to_string(), "ver": missing_type_category_doc_ver.to_string() }
250169
}))
251170
.unwrap()
252171
.build();
@@ -255,7 +174,6 @@ mod tests {
255174
// cannot find a referenced document
256175
let doc = Builder::new()
257176
.with_json_metadata(serde_json::json!({
258-
"ref": { "id": common_ref_id.to_string(), "ver": common_ref_ver.to_string() },
259177
"parameters": {"id": UuidV7::new().to_string(), "ver": UuidV7::new().to_string() }
260178
}))
261179
.unwrap()

0 commit comments

Comments
 (0)