Skip to content

Commit 43ae051

Browse files
committed
wip
1 parent 9f6b8aa commit 43ae051

File tree

2 files changed

+171
-66
lines changed

2 files changed

+171
-66
lines changed

rust/signed_doc/tests/common/dummies.rs

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,60 @@ pub static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument>
129129
.build()
130130
.unwrap()
131131
});
132+
133+
pub static PROPOSAL_FOR_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
134+
Builder::new()
135+
.with_json_metadata(serde_json::json!({
136+
"content-type": ContentType::Json.to_string(),
137+
"id": UuidV7::new(),
138+
"ver": UuidV7::new(),
139+
"type": doc_types::PROPOSAL.clone(),
140+
"parameters": {
141+
"id": BRAND_PARAMETERS_DOC.doc_id().unwrap(),
142+
"ver": BRAND_PARAMETERS_DOC.doc_ver().unwrap(),
143+
}
144+
}))
145+
.unwrap()
146+
.empty_content()
147+
.unwrap()
148+
.build()
149+
.unwrap()
150+
});
151+
152+
pub static PROPOSAL_FOR_CAMPAIGN_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
153+
Builder::new()
154+
.with_json_metadata(serde_json::json!({
155+
"content-type": ContentType::Json.to_string(),
156+
"id": UuidV7::new(),
157+
"ver": UuidV7::new(),
158+
"type": doc_types::PROPOSAL.clone(),
159+
"parameters": {
160+
"id": CAMPAIGN_PARAMETERS_DOC.doc_id().unwrap(),
161+
"ver": CAMPAIGN_PARAMETERS_DOC.doc_ver().unwrap(),
162+
}
163+
}))
164+
.unwrap()
165+
.empty_content()
166+
.unwrap()
167+
.build()
168+
.unwrap()
169+
});
170+
171+
pub static PROPOSAL_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
172+
Builder::new()
173+
.with_json_metadata(serde_json::json!({
174+
"content-type": ContentType::Json.to_string(),
175+
"id": UuidV7::new(),
176+
"ver": UuidV7::new(),
177+
"type": doc_types::PROPOSAL.clone(),
178+
"parameters": {
179+
"id": CATEGORY_PARAMETERS_DOC.doc_id().unwrap(),
180+
"ver": CATEGORY_PARAMETERS_DOC.doc_ver().unwrap(),
181+
}
182+
}))
183+
.unwrap()
184+
.empty_content()
185+
.unwrap()
186+
.build()
187+
.unwrap()
188+
});

rust/signed_doc/tests/proposal_submission_action.rs

Lines changed: 114 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -2,53 +2,21 @@
22
//! Require fields: type, id, ver, ref, parameters
33
//! <https://input-output-hk.github.io/catalyst-libs/architecture/08_concepts/signed_doc/docs/proposal_submission_action/>
44
5-
use std::sync::LazyLock;
6-
75
use catalyst_signed_doc::{providers::tests::TestCatalystProvider, *};
86
use catalyst_types::catalyst_id::role_index::RoleId;
97
use ed25519_dalek::ed25519::signature::Signer;
108
use test_case::test_case;
119

12-
use crate::common::create_dummy_key_pair;
10+
use crate::common::{
11+
create_dummy_key_pair,
12+
dummies::{
13+
BRAND_PARAMETERS_DOC, CAMPAIGN_PARAMETERS_DOC, CATEGORY_PARAMETERS_DOC,
14+
PROPOSAL_FOR_BRAND_DOC, PROPOSAL_FOR_CAMPAIGN_DOC, PROPOSAL_FOR_CATEGORY_DOC,
15+
},
16+
};
1317

1418
mod common;
1519

16-
#[allow(clippy::unwrap_used)]
17-
static DUMMY_PROPOSAL_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
18-
Builder::new()
19-
.with_json_metadata(serde_json::json!({
20-
"content-type": ContentType::Json.to_string(),
21-
"id": UuidV7::new(),
22-
"ver": UuidV7::new(),
23-
"type": doc_types::PROPOSAL.clone(),
24-
"parameters": {
25-
"id": DUMMY_BRAND_DOC.doc_id().unwrap(),
26-
"ver": DUMMY_BRAND_DOC.doc_ver().unwrap(),
27-
}
28-
}))
29-
.unwrap()
30-
.empty_content()
31-
.unwrap()
32-
.build()
33-
.unwrap()
34-
});
35-
36-
#[allow(clippy::unwrap_used)]
37-
static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
38-
Builder::new()
39-
.with_json_metadata(serde_json::json!({
40-
"content-type": ContentType::Json.to_string(),
41-
"id": UuidV7::new(),
42-
"ver": UuidV7::new(),
43-
"type": doc_types::BRAND_PARAMETERS.clone(),
44-
}))
45-
.unwrap()
46-
.empty_content()
47-
.unwrap()
48-
.build()
49-
.unwrap()
50-
});
51-
5220
#[test_case(
5321
|provider| {
5422
let id = UuidV7::new();
@@ -63,12 +31,78 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
6331
"id": id,
6432
"ver": id,
6533
"ref": {
66-
"id": DUMMY_PROPOSAL_DOC.doc_id()?,
67-
"ver": DUMMY_PROPOSAL_DOC.doc_ver()?,
34+
"id": PROPOSAL_FOR_BRAND_DOC.doc_id()?,
35+
"ver": PROPOSAL_FOR_BRAND_DOC.doc_ver()?,
36+
},
37+
"parameters": {
38+
"id": BRAND_PARAMETERS_DOC.doc_id()?,
39+
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
40+
}
41+
}))?
42+
.with_json_content(&serde_json::json!({
43+
"action": "final"
44+
}))?
45+
.add_signature(|m| sk.sign(&m).to_vec(), kid)?
46+
.build()?;
47+
Ok(doc)
48+
}
49+
=> true
50+
;
51+
"valid document with brand 'parameters'"
52+
)]
53+
#[test_case(
54+
|provider| {
55+
let id = UuidV7::new();
56+
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Proposer)?;
57+
provider.add_pk(kid.clone(), pk);
58+
// Create a main proposal submission doc, contain all fields mention in the document
59+
let doc = Builder::new()
60+
.with_json_metadata(serde_json::json!({
61+
"content-type": ContentType::Json.to_string(),
62+
"content-encoding": ContentEncoding::Brotli.to_string(),
63+
"type": doc_types::PROPOSAL_SUBMISSION_ACTION.clone(),
64+
"id": id,
65+
"ver": id,
66+
"ref": {
67+
"id": PROPOSAL_FOR_CAMPAIGN_DOC.doc_id()?,
68+
"ver": PROPOSAL_FOR_CAMPAIGN_DOC.doc_ver()?,
69+
},
70+
"parameters": {
71+
"id": CAMPAIGN_PARAMETERS_DOC.doc_id()?,
72+
"ver": CAMPAIGN_PARAMETERS_DOC.doc_ver()?,
73+
}
74+
}))?
75+
.with_json_content(&serde_json::json!({
76+
"action": "final"
77+
}))?
78+
.add_signature(|m| sk.sign(&m).to_vec(), kid)?
79+
.build()?;
80+
Ok(doc)
81+
}
82+
=> true
83+
;
84+
"valid document with campaign 'parameters'"
85+
)]
86+
#[test_case(
87+
|provider| {
88+
let id = UuidV7::new();
89+
let (sk, pk, kid) = create_dummy_key_pair(RoleId::Proposer)?;
90+
provider.add_pk(kid.clone(), pk);
91+
// Create a main proposal submission doc, contain all fields mention in the document
92+
let doc = Builder::new()
93+
.with_json_metadata(serde_json::json!({
94+
"content-type": ContentType::Json.to_string(),
95+
"content-encoding": ContentEncoding::Brotli.to_string(),
96+
"type": doc_types::PROPOSAL_SUBMISSION_ACTION.clone(),
97+
"id": id,
98+
"ver": id,
99+
"ref": {
100+
"id": PROPOSAL_FOR_CATEGORY_DOC.doc_id()?,
101+
"ver": PROPOSAL_FOR_CATEGORY_DOC.doc_ver()?,
68102
},
69103
"parameters": {
70-
"id": DUMMY_BRAND_DOC.doc_id()?,
71-
"ver": DUMMY_BRAND_DOC.doc_ver()?,
104+
"id": CATEGORY_PARAMETERS_DOC.doc_id()?,
105+
"ver": CATEGORY_PARAMETERS_DOC.doc_ver()?,
72106
}
73107
}))?
74108
.with_json_content(&serde_json::json!({
@@ -80,7 +114,7 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
80114
}
81115
=> true
82116
;
83-
"valid document"
117+
"valid document with category 'parameters'"
84118
)]
85119
#[test_case(
86120
|provider| {
@@ -96,12 +130,12 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
96130
"id": id,
97131
"ver": id,
98132
"ref": {
99-
"id": DUMMY_PROPOSAL_DOC.doc_id()?,
100-
"ver": DUMMY_PROPOSAL_DOC.doc_ver()?,
133+
"id": PROPOSAL_FOR_BRAND_DOC.doc_id()?,
134+
"ver": PROPOSAL_FOR_BRAND_DOC.doc_ver()?,
101135
},
102136
"parameters": {
103-
"id": DUMMY_BRAND_DOC.doc_id()?,
104-
"ver": DUMMY_BRAND_DOC.doc_ver()?,
137+
"id": BRAND_PARAMETERS_DOC.doc_id()?,
138+
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
105139
}
106140
}))?
107141
.with_json_content(&serde_json::json!({
@@ -128,12 +162,12 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
128162
"id": id,
129163
"ver": id,
130164
"ref": {
131-
"id": DUMMY_PROPOSAL_DOC.doc_id()?,
132-
"ver": DUMMY_PROPOSAL_DOC.doc_ver()?,
165+
"id": PROPOSAL_FOR_BRAND_DOC.doc_id()?,
166+
"ver": PROPOSAL_FOR_BRAND_DOC.doc_ver()?,
133167
},
134168
"parameters": {
135-
"id": DUMMY_BRAND_DOC.doc_id()?,
136-
"ver": DUMMY_BRAND_DOC.doc_ver()?,
169+
"id": BRAND_PARAMETERS_DOC.doc_id()?,
170+
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
137171
}
138172
}))?
139173
.empty_content()?
@@ -159,12 +193,12 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
159193
"id": id,
160194
"ver": id,
161195
"ref": {
162-
"id": DUMMY_PROPOSAL_DOC.doc_id()?,
163-
"ver": DUMMY_PROPOSAL_DOC.doc_ver()?,
196+
"id": PROPOSAL_FOR_BRAND_DOC.doc_id()?,
197+
"ver": PROPOSAL_FOR_BRAND_DOC.doc_ver()?,
164198
},
165199
"parameters": {
166-
"id": DUMMY_BRAND_DOC.doc_id()?,
167-
"ver": DUMMY_BRAND_DOC.doc_ver()?,
200+
"id": BRAND_PARAMETERS_DOC.doc_id()?,
201+
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
168202
}
169203
}))?
170204
.with_json_content(&serde_json::json!("null"))?
@@ -188,12 +222,12 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
188222
"id": id,
189223
"ver": id,
190224
"ref": {
191-
"id": DUMMY_PROPOSAL_DOC.doc_id()?,
192-
"ver": DUMMY_PROPOSAL_DOC.doc_ver()?,
225+
"id": PROPOSAL_FOR_BRAND_DOC.doc_id()?,
226+
"ver": PROPOSAL_FOR_BRAND_DOC.doc_ver()?,
193227
},
194228
"parameters": {
195-
"id": DUMMY_BRAND_DOC.doc_id()?,
196-
"ver": DUMMY_BRAND_DOC.doc_ver()?,
229+
"id": BRAND_PARAMETERS_DOC.doc_id()?,
230+
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
197231
}
198232
}))?
199233
.with_json_content(&serde_json::json!({
@@ -220,8 +254,8 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
220254
"id": id,
221255
"ver": id,
222256
"parameters": {
223-
"id": DUMMY_BRAND_DOC.doc_id()?,
224-
"ver": DUMMY_BRAND_DOC.doc_ver()?,
257+
"id": BRAND_PARAMETERS_DOC.doc_id()?,
258+
"ver": BRAND_PARAMETERS_DOC.doc_ver()?,
225259
}
226260
}))?
227261
.with_json_content(&serde_json::json!({
@@ -249,8 +283,8 @@ static DUMMY_BRAND_DOC: LazyLock<CatalystSignedDocument> = LazyLock::new(|| {
249283
"id": id,
250284
"ver": id,
251285
"ref": {
252-
"id": DUMMY_PROPOSAL_DOC.doc_id()?,
253-
"ver": DUMMY_PROPOSAL_DOC.doc_ver()?,
286+
"id": PROPOSAL_FOR_BRAND_DOC.doc_id()?,
287+
"ver": PROPOSAL_FOR_BRAND_DOC.doc_ver()?,
254288
},
255289
}))?
256290
.with_json_content(&serde_json::json!({
@@ -272,8 +306,22 @@ async fn test_proposal_submission_action_doc(
272306

273307
let doc = doc_gen(&mut provider).unwrap();
274308

275-
provider.add_document(None, &DUMMY_PROPOSAL_DOC).unwrap();
276-
provider.add_document(None, &DUMMY_BRAND_DOC).unwrap();
309+
provider
310+
.add_document(None, &PROPOSAL_FOR_BRAND_DOC)
311+
.unwrap();
312+
provider
313+
.add_document(None, &PROPOSAL_FOR_CAMPAIGN_DOC)
314+
.unwrap();
315+
provider
316+
.add_document(None, &PROPOSAL_FOR_CATEGORY_DOC)
317+
.unwrap();
318+
provider.add_document(None, &BRAND_PARAMETERS_DOC).unwrap();
319+
provider
320+
.add_document(None, &CAMPAIGN_PARAMETERS_DOC)
321+
.unwrap();
322+
provider
323+
.add_document(None, &CATEGORY_PARAMETERS_DOC)
324+
.unwrap();
277325

278326
let is_valid = validator::validate(&doc, &provider).await.unwrap();
279327
assert_eq!(is_valid, !doc.problem_report().is_problematic());

0 commit comments

Comments
 (0)