Skip to content

Commit 40f90e1

Browse files
committed
wip
1 parent 07c9440 commit 40f90e1

File tree

5 files changed

+82
-87
lines changed

5 files changed

+82
-87
lines changed

rust/signed_doc/tests/common/mod.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ pub mod dummies;
77
pub mod proposal;
88
pub mod proposal_comment_form_template;
99
pub mod proposal_form_template;
10+
pub mod proposal_submission_action;
1011

1112
use std::str::FromStr;
1213

@@ -18,6 +19,7 @@ pub use category_parameters::category_parameters_doc;
1819
pub use proposal::proposal_doc;
1920
pub use proposal_comment_form_template::proposal_comment_form_template_doc;
2021
pub use proposal_form_template::proposal_form_template_doc;
22+
pub use proposal_submission_action::proposal_submission_action_doc;
2123

2224
pub fn create_dummy_key_pair(
2325
role_index: RoleId

rust/signed_doc/tests/common/proposal.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ pub fn proposal_doc(
1111
provider: &mut TestCatalystProvider,
1212
) -> anyhow::Result<CatalystSignedDocument> {
1313
let id = UuidV7::new();
14-
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Proposer)?;
15-
provider.add_pk(kid.clone(), pk);
16-
14+
let (sk, _, kid) = create_dummy_key_pair(RoleId::Proposer)
15+
.inspect(|(_, pk, kid)| provider.add_pk(kid.clone(), pk.clone()))?;
1716
Ok(Builder::new()
1817
.with_json_metadata(serde_json::json!({
1918
"content-type": ContentType::Json.to_string(),

rust/signed_doc/tests/common/proposal_form_template.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,25 +3,20 @@ use super::*;
33
pub fn proposal_form_template_doc(
44
parameters_doc: &CatalystSignedDocument
55
) -> anyhow::Result<CatalystSignedDocument> {
6+
let id = UuidV7::new();
67
let doc = Builder::new()
78
.with_json_metadata(serde_json::json!({
89
"content-type": ContentType::Json.to_string(),
910
"content-encoding": ContentEncoding::Brotli.to_string(),
1011
"type": doc_types::PROPOSAL_FORM_TEMPLATE.clone(),
11-
"id": UuidV7::new(),
12-
"ver": UuidV7::new(),
12+
"id": id,
13+
"ver": id,
1314
"parameters": {
1415
"id": parameters_doc.doc_id()?,
1516
"ver": parameters_doc.doc_ver()?,
1617
},
1718
}))?
18-
.with_json_content(&serde_json::json!({
19-
"$schema": "http://json-schema.org/draft-07/schema#",
20-
"type": "object",
21-
"properties": {},
22-
"required": [],
23-
"additionalProperties": false
24-
}))?
19+
.with_json_content(&serde_json::json!({}))?
2520
.build()?;
2621
Ok(doc)
2722
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
use catalyst_signed_doc::providers::tests::TestCatalystProvider;
2+
use ed25519_dalek::ed25519::signature::Signer;
3+
4+
use super::*;
5+
6+
pub fn proposal_submission_action_doc(
7+
ref_doc: &CatalystSignedDocument,
8+
parameters_doc: &CatalystSignedDocument,
9+
provider: &mut TestCatalystProvider,
10+
) -> anyhow::Result<CatalystSignedDocument> {
11+
let id = UuidV7::new();
12+
let (sk, _, kid) = create_dummy_key_pair(RoleId::Proposer)
13+
.inspect(|(_, pk, kid)| provider.add_pk(kid.clone(), pk.clone()))?;
14+
Ok(Builder::new()
15+
.with_json_metadata(serde_json::json!({
16+
"content-type": ContentType::Json.to_string(),
17+
"content-encoding": ContentEncoding::Brotli.to_string(),
18+
"type": doc_types::PROPOSAL_SUBMISSION_ACTION.clone(),
19+
"id": id,
20+
"ver": id,
21+
"ref": {
22+
"id": ref_doc.doc_id()?,
23+
"ver": ref_doc.doc_ver()?,
24+
},
25+
"parameters": {
26+
"id": parameters_doc.doc_id()?,
27+
"ver": parameters_doc.doc_ver()?,
28+
}
29+
}))?
30+
.with_json_content(&serde_json::json!({
31+
"action": "final"
32+
}))?
33+
.add_signature(|m| sk.sign(&m).to_vec(), kid)?
34+
.build()?)
35+
}

rust/signed_doc/tests/proposal.rs

Lines changed: 39 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -9,69 +9,47 @@ use test_case::test_case;
99

1010
use crate::common::{
1111
brand_parameters_doc, campaign_parameters_doc, category_parameters_doc, create_dummy_key_pair,
12-
dummies::{
13-
BRAND_PARAMETERS_DOC, CAMPAIGN_PARAMETERS_DOC, CATEGORY_PARAMETERS_DOC,
14-
PROPOSAL_TEMPLATE_FOR_BRAND_DOC, PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC,
15-
PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC,
16-
},
1712
proposal_doc, proposal_form_template_doc,
1813
};
1914

2015
mod common;
2116

2217
#[test_case(
2318
|provider| {
24-
let brand_parameters_doc = brand_parameters_doc().and_then(|doc| {
25-
provider.add_document(None, &doc)?;
26-
Ok(doc)
27-
})?;
28-
let proposal_form_template_doc = proposal_form_template_doc(&brand_parameters_doc).and_then(|doc| {
29-
provider.add_document(None, &doc)?;
30-
Ok(doc)
31-
})?;
32-
proposal_doc(&proposal_form_template_doc, &brand_parameters_doc, provider)
19+
let parameters = brand_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
20+
let template = proposal_form_template_doc(&parameters).inspect(|v| provider.add_document(None, v).unwrap())?;
21+
proposal_doc(&template, &parameters, provider)
3322
}
3423
=> true
3524
;
3625
"valid document with brand 'parameters'"
3726
)]
3827
#[test_case(
3928
|provider| {
40-
let parameters_doc = campaign_parameters_doc().and_then(|doc| {
41-
provider.add_document(None, &doc)?;
42-
Ok(doc)
43-
})?;
44-
let template_doc = proposal_form_template_doc(&parameters_doc).and_then(|doc| {
45-
provider.add_document(None, &doc)?;
46-
Ok(doc)
47-
})?;
48-
proposal_doc(&template_doc, &parameters_doc, provider)
29+
let parameters = campaign_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
30+
let template = proposal_form_template_doc(&parameters).inspect(|v| provider.add_document(None, v).unwrap())?;
31+
proposal_doc(&template, &parameters, provider)
4932
}
5033
=> true
5134
;
5235
"valid document with campaign 'parameters'"
5336
)]
5437
#[test_case(
5538
|provider| {
56-
let parameters_doc = category_parameters_doc().and_then(|doc| {
57-
provider.add_document(None, &doc)?;
58-
Ok(doc)
59-
})?;
60-
let template_doc = proposal_form_template_doc(&parameters_doc).and_then(|doc| {
61-
provider.add_document(None, &doc)?;
62-
Ok(doc)
63-
})?;
64-
proposal_doc(&template_doc, &parameters_doc, provider)
39+
let parameters = category_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
40+
let template = proposal_form_template_doc(&parameters).inspect(|v| provider.add_document(None, v).unwrap())?;
41+
proposal_doc(&template, &parameters, provider)
6542
}
6643
=> true
6744
;
6845
"valid document with category 'parameters'"
6946
)]
7047
#[test_case(
7148
|provider| {
49+
let parameters = brand_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
50+
let template = proposal_form_template_doc(&parameters).inspect(|v| provider.add_document(None, v).unwrap())?;
7251
let id = UuidV7::new();
73-
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Role0)?;
74-
provider.add_pk(kid.clone(), pk);
52+
let (sk, _, kid) = create_dummy_key_pair(RoleId::Role0).inspect(|(_, pk, kid)| provider.add_pk(kid.clone(), pk.clone()))?;
7553
let doc = Builder::new()
7654
.with_json_metadata(serde_json::json!({
7755
"content-type": ContentType::Json.to_string(),
@@ -80,12 +58,12 @@ mod common;
8058
"id": id,
8159
"ver": id,
8260
"template": {
83-
"id": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_id()?,
84-
"ver": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_ver()?,
61+
"id": template.doc_id()?,
62+
"ver": template.doc_ver()?,
8563
},
8664
"parameters": {
87-
"id": BRAND_PARAMETERS_DOC.doc_id()?,
88-
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
65+
"id": parameters.doc_id()?,
66+
"ver": parameters.doc_ver()?,
8967
}
9068
}))?
9169
.with_json_content(&serde_json::json!({}))?
@@ -99,9 +77,10 @@ mod common;
9977
)]
10078
#[test_case(
10179
|provider| {
80+
let parameters = brand_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
81+
let template = proposal_form_template_doc(&parameters).inspect(|v| provider.add_document(None, v).unwrap())?;
10282
let id = UuidV7::new();
103-
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Proposer)?;
104-
provider.add_pk(kid.clone(), pk);
83+
let (sk, _, kid) = create_dummy_key_pair(RoleId::Proposer).inspect(|(_, pk, kid)| provider.add_pk(kid.clone(), pk.clone()))?;
10584
let doc = Builder::new()
10685
.with_json_metadata(serde_json::json!({
10786
"content-type": ContentType::Json.to_string(),
@@ -110,12 +89,12 @@ mod common;
11089
"id": id,
11190
"ver": id,
11291
"template": {
113-
"id": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_id()?,
114-
"ver": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_ver()?,
92+
"id": template.doc_id()?,
93+
"ver": template.doc_ver()?,
11594
},
11695
"parameters": {
117-
"id": BRAND_PARAMETERS_DOC.doc_id()?,
118-
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
96+
"id": parameters.doc_id()?,
97+
"ver": parameters.doc_ver()?,
11998
}
12099
}))?
121100
.empty_content()?
@@ -129,22 +108,23 @@ mod common;
129108
)]
130109
#[test_case(
131110
|provider| {
111+
let parameters = brand_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
112+
let template = proposal_form_template_doc(&parameters).inspect(|v| provider.add_document(None, v).unwrap())?;
132113
let id = UuidV7::new();
133-
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Proposer)?;
134-
provider.add_pk(kid.clone(), pk);
114+
let (sk, _, kid) = create_dummy_key_pair(RoleId::Proposer).inspect(|(_, pk, kid)| provider.add_pk(kid.clone(), pk.clone()))?;
135115
let doc = Builder::new()
136116
.with_json_metadata(serde_json::json!({
137117
"content-type": ContentType::Json.to_string(),
138118
"type": doc_types::PROPOSAL.clone(),
139119
"id": id,
140120
"ver": id,
141121
"template": {
142-
"id": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_id()?,
143-
"ver": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_ver()?,
122+
"id": template.doc_id()?,
123+
"ver": template.doc_ver()?,
144124
},
145125
"parameters": {
146-
"id": BRAND_PARAMETERS_DOC.doc_id()?,
147-
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
126+
"id": parameters.doc_id()?,
127+
"ver": parameters.doc_ver()?,
148128
}
149129
}))?
150130
.with_json_content(&serde_json::json!({}))?
@@ -158,9 +138,9 @@ mod common;
158138
)]
159139
#[test_case(
160140
|provider| {
141+
let parameters = brand_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
161142
let id = UuidV7::new();
162-
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Proposer)?;
163-
provider.add_pk(kid.clone(), pk);
143+
let (sk, _, kid) = create_dummy_key_pair(RoleId::Proposer).inspect(|(_, pk, kid)| provider.add_pk(kid.clone(), pk.clone()))?;
164144
let doc = Builder::new()
165145
.with_json_metadata(serde_json::json!({
166146
"content-type": ContentType::Json.to_string(),
@@ -169,8 +149,8 @@ mod common;
169149
"id": id,
170150
"ver": id,
171151
"parameters": {
172-
"id": BRAND_PARAMETERS_DOC.doc_id()?,
173-
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
152+
"id": parameters.doc_id()?,
153+
"ver": parameters.doc_ver()?,
174154
}
175155
}))?
176156
.with_json_content(&serde_json::json!({}))?
@@ -184,9 +164,10 @@ mod common;
184164
)]
185165
#[test_case(
186166
|provider| {
167+
let parameters = brand_parameters_doc().inspect(|v| provider.add_document(None, v).unwrap())?;
168+
let template = proposal_form_template_doc(&parameters).inspect(|v| provider.add_document(None, v).unwrap())?;
187169
let id = UuidV7::new();
188-
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Proposer)?;
189-
provider.add_pk(kid.clone(), pk);
170+
let (sk, _, kid) = create_dummy_key_pair(RoleId::Proposer).inspect(|(_, pk, kid)| provider.add_pk(kid.clone(), pk.clone()))?;
190171
let doc = Builder::new()
191172
.with_json_metadata(serde_json::json!({
192173
"content-type": ContentType::Json.to_string(),
@@ -195,8 +176,8 @@ mod common;
195176
"id": id,
196177
"ver": id,
197178
"template": {
198-
"id": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_id()?,
199-
"ver": PROPOSAL_TEMPLATE_FOR_BRAND_DOC.doc_ver()?,
179+
"id": template.doc_id()?,
180+
"ver": template.doc_ver()?,
200181
},
201182
}))?
202183
.with_json_content(&serde_json::json!({}))?
@@ -216,23 +197,6 @@ async fn test_proposal_doc(
216197

217198
let doc = doc_gen(&mut provider).unwrap();
218199

219-
provider
220-
.add_document(None, &PROPOSAL_TEMPLATE_FOR_BRAND_DOC)
221-
.unwrap();
222-
provider
223-
.add_document(None, &PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC)
224-
.unwrap();
225-
provider
226-
.add_document(None, &PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC)
227-
.unwrap();
228-
provider.add_document(None, &BRAND_PARAMETERS_DOC).unwrap();
229-
provider
230-
.add_document(None, &CAMPAIGN_PARAMETERS_DOC)
231-
.unwrap();
232-
provider
233-
.add_document(None, &CATEGORY_PARAMETERS_DOC)
234-
.unwrap();
235-
236200
let is_valid = validator::validate(&doc, &provider).await.unwrap();
237201
assert_eq!(is_valid, !doc.problem_report().is_problematic());
238202
println!("{:?}", doc.problem_report());

0 commit comments

Comments
 (0)