Skip to content

Commit ec13582

Browse files
committed
fix contest_ballot_checkpoint and content_ballot tests
1 parent 6b92c1e commit ec13582

File tree

5 files changed

+129
-35
lines changed

5 files changed

+129
-35
lines changed

rust/signed_doc/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ ed25519-bip32 = "0.4.1" # used by the `mk_signed_doc` cli tool
3535
tracing = "0.1.40"
3636
thiserror = "2.0.11"
3737
chrono = "0.4.42"
38+
itertools = "0.14.0"
3839

3940
# CID v1 support
4041
cid = "0.11.1"

rust/signed_doc/src/validator/rules/doc_ref/mod.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ mod tests;
55

66
use catalyst_signed_doc_spec::{DocSpecs, is_required::IsRequired, metadata::doc_ref::Ref};
77
use catalyst_types::problem_report::ProblemReport;
8+
use itertools::Itertools;
89

910
use crate::{
1011
CatalystSignedDocument, DocType, DocumentRef, DocumentRefs,
@@ -219,9 +220,7 @@ fn referenced_doc_type_check(
219220
report.invalid_value(
220221
field_name,
221222
&ref_doc_type.to_string(),
222-
&exp_ref_types
223-
.iter()
224-
.fold(String::new(), |s, v| format!("{s}, {v}")),
223+
&exp_ref_types.iter().map(ToString::to_string).join(","),
225224
&format!("Invalid referenced document type, during validation of {field_name} field"),
226225
);
227226
return false;

rust/signed_doc/tests/common/contest_ballot.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ use super::*;
55

66
/// Creates a contest ballot document.
77
pub fn contest_ballot_doc(
8+
ref_doc: &CatalystSignedDocument,
89
parameters_doc: &CatalystSignedDocument,
910
provider: &mut TestCatalystProvider,
1011
) -> anyhow::Result<CatalystSignedDocument> {
@@ -13,6 +14,7 @@ pub fn contest_ballot_doc(
1314
provider.add_sk(kid.clone(), sk.clone());
1415

1516
let parameters_ref = parameters_doc.doc_ref()?;
17+
let ref_ref = ref_doc.doc_ref()?;
1618

1719
Builder::new()
1820
.with_json_metadata(serde_json::json!({
@@ -21,6 +23,7 @@ pub fn contest_ballot_doc(
2123
"type": doc_types::CONTEST_BALLOT.clone(),
2224
"id": id,
2325
"ver": id,
26+
"ref": [ref_ref],
2427
"parameters": [parameters_ref],
2528
}))?
2629
.with_cbor_content(1)?

rust/signed_doc/tests/contest_ballot.rs

Lines changed: 74 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ use crate::common::{
1010
brand_parameters_doc, brand_parameters_form_template_doc, campaign_parameters_doc,
1111
campaign_parameters_form_template_doc, category_parameters_doc,
1212
category_parameters_form_template_doc, contest_ballot_doc, contest_parameters_doc,
13-
contest_parameters_form_template_doc, create_dummy_key_pair,
13+
contest_parameters_form_template_doc, create_dummy_key_pair, proposal_doc,
14+
proposal_form_template_doc,
1415
};
1516

1617
mod common;
@@ -21,7 +22,9 @@ mod common;
2122
let brand = brand_parameters_doc(&brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
2223
let template = contest_parameters_form_template_doc(&brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
2324
let parameters = contest_parameters_doc(&template, &brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
24-
contest_ballot_doc(&parameters, provider)
25+
let template = proposal_form_template_doc(&parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
26+
let proposal = proposal_doc(&template, &parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
27+
contest_ballot_doc(&proposal, &parameters, provider)
2528
}
2629
=> true
2730
;
@@ -35,7 +38,9 @@ mod common;
3538
let campaign = campaign_parameters_doc(&campaign, &brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
3639
let template = contest_parameters_form_template_doc(&campaign, provider).inspect(|v| provider.add_document(v).unwrap())?;
3740
let parameters = contest_parameters_doc(&template, &campaign, provider).inspect(|v| provider.add_document(v).unwrap())?;
38-
contest_ballot_doc(&parameters, provider)
41+
let template = proposal_form_template_doc(&parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
42+
let proposal = proposal_doc(&template, &parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
43+
contest_ballot_doc(&proposal, &parameters, provider)
3944
}
4045
=> true
4146
;
@@ -51,21 +56,28 @@ mod common;
5156
let category = category_parameters_doc(&category, &campaign, provider).inspect(|v| provider.add_document(v).unwrap())?;
5257
let template = contest_parameters_form_template_doc(&category, provider).inspect(|v| provider.add_document(v).unwrap())?;
5358
let parameters = contest_parameters_doc(&template, &category, provider).inspect(|v| provider.add_document(v).unwrap())?;
54-
contest_ballot_doc(&parameters, provider)
59+
let template = proposal_form_template_doc(&parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
60+
let proposal = proposal_doc(&template, &parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
61+
contest_ballot_doc(&proposal, &parameters, provider)
5562
}
5663
=> true
5764
;
5865
"valid document with category 'parameters'"
5966
)]
6067
#[test_case(
6168
|provider| {
62-
let template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
63-
let parameters = brand_parameters_doc(&template, provider).inspect(|v| provider.add_document(v).unwrap())?;
69+
let brand_template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
70+
let brand = brand_parameters_doc(&brand_template, provider).inspect(|v| provider.add_document(v).unwrap())?;
71+
let template = contest_parameters_form_template_doc(&brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
72+
let parameters = contest_parameters_doc(&template, &brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
73+
let template = proposal_form_template_doc(&parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
74+
let proposal = proposal_doc(&template, &parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
6475
let id = UuidV7::new();
65-
let (sk, kid) = create_dummy_key_pair(Some(RoleId::Role0));
76+
let (sk, kid) = create_dummy_key_pair(Some(RoleId::Proposer));
6677
provider.add_sk(kid.clone(), sk.clone());
6778
6879
let parameters_ref = parameters.doc_ref()?;
80+
let ref_ref = proposal.doc_ref()?;
6981
7082
Builder::new()
7183
.with_json_metadata(serde_json::json!({
@@ -74,6 +86,7 @@ mod common;
7486
"type": doc_types::CONTEST_BALLOT.clone(),
7587
"id": id,
7688
"ver": id,
89+
"ref": [ref_ref],
7790
"parameters": [parameters_ref],
7891
}))?
7992
.with_cbor_content(1)?
@@ -86,13 +99,18 @@ mod common;
8699
)]
87100
#[test_case(
88101
|provider| {
89-
let template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
90-
let parameters = brand_parameters_doc(&template, provider).inspect(|v| provider.add_document(v).unwrap())?;
102+
let brand_template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
103+
let brand = brand_parameters_doc(&brand_template, provider).inspect(|v| provider.add_document(v).unwrap())?;
104+
let template = contest_parameters_form_template_doc(&brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
105+
let parameters = contest_parameters_doc(&template, &brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
106+
let template = proposal_form_template_doc(&parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
107+
let proposal = proposal_doc(&template, &parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
91108
let id = UuidV7::new();
92109
let (sk, kid) = create_dummy_key_pair(None);
93110
provider.add_sk(kid.clone(), sk.clone());
94111
95112
let parameters_ref = parameters.doc_ref()?;
113+
let ref_ref = proposal.doc_ref()?;
96114
97115
Builder::new()
98116
.with_json_metadata(serde_json::json!({
@@ -101,6 +119,7 @@ mod common;
101119
"type": doc_types::CONTEST_BALLOT.clone(),
102120
"id": id,
103121
"ver": id,
122+
"ref": [ref_ref],
104123
"parameters": [parameters_ref],
105124
}))?
106125
.empty_content()?
@@ -113,20 +132,26 @@ mod common;
113132
)]
114133
#[test_case(
115134
|provider| {
116-
let template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
117-
let parameters = brand_parameters_doc(&template, provider).inspect(|v| provider.add_document(v).unwrap())?;
135+
let brand_template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
136+
let brand = brand_parameters_doc(&brand_template, provider).inspect(|v| provider.add_document(v).unwrap())?;
137+
let template = contest_parameters_form_template_doc(&brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
138+
let parameters = contest_parameters_doc(&template, &brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
139+
let template = proposal_form_template_doc(&parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
140+
let proposal = proposal_doc(&template, &parameters, provider).inspect(|v| provider.add_document(v).unwrap())?;
118141
let id = UuidV7::new();
119142
let (sk, kid) = create_dummy_key_pair(None);
120143
provider.add_sk(kid.clone(), sk.clone());
121144
122145
let parameters_ref = parameters.doc_ref()?;
146+
let ref_ref = proposal.doc_ref()?;
123147
124148
Builder::new()
125149
.with_json_metadata(serde_json::json!({
126150
"content-type": ContentType::Cbor,
127151
"type": doc_types::CONTEST_BALLOT.clone(),
128152
"id": id,
129153
"ver": id,
154+
"ref": [ref_ref],
130155
"parameters": [parameters_ref],
131156
}))?
132157
.with_cbor_content(1)?
@@ -139,16 +164,54 @@ mod common;
139164
)]
140165
#[test_case(
141166
|provider| {
167+
let brand_template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
168+
let brand = brand_parameters_doc(&brand_template, provider).inspect(|v| provider.add_document(v).unwrap())?;
169+
let template = contest_parameters_form_template_doc(&brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
170+
let parameters = contest_parameters_doc(&template, &brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
171+
let id = UuidV7::new();
172+
let (sk, kid) = create_dummy_key_pair(None);
173+
provider.add_sk(kid.clone(), sk.clone());
174+
175+
let parameters_ref = parameters.doc_ref()?;
176+
177+
Builder::new()
178+
.with_json_metadata(serde_json::json!({
179+
"content-type": ContentType::Cbor,
180+
"content-encoding": ContentEncoding::Brotli,
181+
"type": doc_types::CONTEST_BALLOT.clone(),
182+
"id": id,
183+
"ver": id,
184+
"parameters": [parameters_ref],
185+
}))?
186+
.with_cbor_content(1)?
187+
.add_signature(|m| sk.sign(&m).to_vec(), kid)?
188+
.build()
189+
}
190+
=> false
191+
;
192+
"missing ref"
193+
)]
194+
#[test_case(
195+
|provider| {
196+
let brand_template = brand_parameters_form_template_doc(provider).inspect(|v| provider.add_document(v).unwrap())?;
197+
let brand = brand_parameters_doc(&brand_template, provider).inspect(|v| provider.add_document(v).unwrap())?;
198+
let template = proposal_form_template_doc(&brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
199+
let proposal = proposal_doc(&template, &brand, provider).inspect(|v| provider.add_document(v).unwrap())?;
200+
142201
let id = UuidV7::new();
143202
let (sk, kid) = create_dummy_key_pair(None);
144203
provider.add_sk(kid.clone(), sk.clone());
204+
205+
let ref_ref = proposal.doc_ref()?;
206+
145207
Builder::new()
146208
.with_json_metadata(serde_json::json!({
147209
"content-type": ContentType::Cbor,
148210
"content-encoding": ContentEncoding::Brotli,
149211
"type": doc_types::CONTEST_BALLOT.clone(),
150212
"id": id,
151213
"ver": id,
214+
"ref": [ref_ref],
152215
}))?
153216
.with_cbor_content(1)?
154217
.add_signature(|m| sk.sign(&m).to_vec(), kid)?

0 commit comments

Comments
 (0)