@@ -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
1617mod 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