22//! Require fields: type, id, ver, template, parameters
33//! <https://input-output-hk.github.io/catalyst-libs/architecture/08_concepts/signed_doc/docs/proposal>
44
5- use std:: sync:: LazyLock ;
6-
75use catalyst_signed_doc:: { providers:: tests:: TestCatalystProvider , * } ;
86use catalyst_types:: catalyst_id:: role_index:: RoleId ;
97use ed25519_dalek:: ed25519:: signature:: Signer ;
108use 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_TEMPLATE_FOR_BRAND_DOC , PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC ,
15+ PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC ,
16+ } ,
17+ } ;
1318
1419mod common;
1520
16- #[ allow( clippy:: unwrap_used) ]
17- static DUMMY_BRAND_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:: BRAND_PARAMETERS . clone( ) ,
24- } ) )
25- . unwrap ( )
26- . empty_content ( )
27- . unwrap ( )
28- . build ( )
29- . unwrap ( )
30- } ) ;
31-
32- static DUMMY_CAMPAIGN_DOC : LazyLock < CatalystSignedDocument > = LazyLock :: new ( || {
33- Builder :: new ( )
34- . with_json_metadata ( serde_json:: json!( {
35- "content-type" : ContentType :: Json . to_string( ) ,
36- "id" : UuidV7 :: new( ) ,
37- "ver" : UuidV7 :: new( ) ,
38- "type" : doc_types:: CAMPAIGN_PARAMETERS . clone( ) ,
39- } ) )
40- . unwrap ( )
41- . empty_content ( )
42- . unwrap ( )
43- . build ( )
44- . unwrap ( )
45- } ) ;
46-
47- static DUMMY_CATEGORY_DOC : LazyLock < CatalystSignedDocument > = LazyLock :: new ( || {
48- Builder :: new ( )
49- . with_json_metadata ( serde_json:: json!( {
50- "content-type" : ContentType :: Json . to_string( ) ,
51- "id" : UuidV7 :: new( ) ,
52- "ver" : UuidV7 :: new( ) ,
53- "type" : doc_types:: CATEGORY_PARAMETERS . clone( ) ,
54- } ) )
55- . unwrap ( )
56- . empty_content ( )
57- . unwrap ( )
58- . build ( )
59- . unwrap ( )
60- } ) ;
61-
62- #[ allow( clippy:: unwrap_used) ]
63- static PROPOSAL_TEMPLATE_FOR_BRAND_DOC : LazyLock < CatalystSignedDocument > = LazyLock :: new ( || {
64- Builder :: new ( )
65- . with_json_metadata ( serde_json:: json!( {
66- "content-type" : ContentType :: Json . to_string( ) ,
67- "content-encoding" : ContentEncoding :: Brotli . to_string( ) ,
68- "type" : doc_types:: PROPOSAL_FORM_TEMPLATE . clone( ) ,
69- "id" : UuidV7 :: new( ) ,
70- "ver" : UuidV7 :: new( ) ,
71- "parameters" : {
72- "id" : DUMMY_BRAND_DOC . doc_id( ) . unwrap( ) ,
73- "ver" : DUMMY_BRAND_DOC . doc_ver( ) . unwrap( ) ,
74- } ,
75- } ) )
76- . unwrap ( )
77- . with_json_content ( & serde_json:: json!( {
78- "$schema" : "http://json-schema.org/draft-07/schema#" ,
79- "type" : "object" ,
80- "properties" : { } ,
81- "required" : [ ] ,
82- "additionalProperties" : false
83- } ) )
84- . unwrap ( )
85- . build ( )
86- . unwrap ( )
87- } ) ;
88-
89- static PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC : LazyLock < CatalystSignedDocument > = LazyLock :: new ( || {
90- Builder :: new ( )
91- . with_json_metadata ( serde_json:: json!( {
92- "content-type" : ContentType :: Json . to_string( ) ,
93- "content-encoding" : ContentEncoding :: Brotli . to_string( ) ,
94- "type" : doc_types:: PROPOSAL_FORM_TEMPLATE . clone( ) ,
95- "id" : UuidV7 :: new( ) ,
96- "ver" : UuidV7 :: new( ) ,
97- "parameters" : {
98- "id" : DUMMY_CAMPAIGN_DOC . doc_id( ) . unwrap( ) ,
99- "ver" : DUMMY_CAMPAIGN_DOC . doc_ver( ) . unwrap( ) ,
100- } ,
101- } ) )
102- . unwrap ( )
103- . with_json_content ( & serde_json:: json!( {
104- "$schema" : "http://json-schema.org/draft-07/schema#" ,
105- "type" : "object" ,
106- "properties" : { } ,
107- "required" : [ ] ,
108- "additionalProperties" : false
109- } ) )
110- . unwrap ( )
111- . build ( )
112- . unwrap ( )
113- } ) ;
114-
115- static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC : LazyLock < CatalystSignedDocument > = LazyLock :: new ( || {
116- Builder :: new ( )
117- . with_json_metadata ( serde_json:: json!( {
118- "content-type" : ContentType :: Json . to_string( ) ,
119- "content-encoding" : ContentEncoding :: Brotli . to_string( ) ,
120- "type" : doc_types:: PROPOSAL_FORM_TEMPLATE . clone( ) ,
121- "id" : UuidV7 :: new( ) ,
122- "ver" : UuidV7 :: new( ) ,
123- "parameters" : {
124- "id" : DUMMY_CATEGORY_DOC . doc_id( ) . unwrap( ) ,
125- "ver" : DUMMY_CATEGORY_DOC . doc_ver( ) . unwrap( ) ,
126- } ,
127- } ) )
128- . unwrap ( )
129- . with_json_content ( & serde_json:: json!( {
130- "$schema" : "http://json-schema.org/draft-07/schema#" ,
131- "type" : "object" ,
132- "properties" : { } ,
133- "required" : [ ] ,
134- "additionalProperties" : false
135- } ) )
136- . unwrap ( )
137- . build ( )
138- . unwrap ( )
139- } ) ;
140-
14121#[ test_case(
14222 |provider| {
14323 let id = UuidV7 :: new( ) ;
@@ -157,8 +37,8 @@ static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = La
15737 "ver" : PROPOSAL_TEMPLATE_FOR_BRAND_DOC . doc_ver( ) ?,
15838 } ,
15939 "parameters" : {
160- "id" : DUMMY_BRAND_DOC . doc_id( ) ?,
161- "ver" : DUMMY_BRAND_DOC . doc_ver( ) ?,
40+ "id" : BRAND_PARAMETERS_DOC . doc_id( ) ?,
41+ "ver" : BRAND_PARAMETERS_DOC . doc_ver( ) ?,
16242 }
16343 } ) ) ?
16444 . with_json_content( & serde_json:: json!( { } ) ) ?
@@ -189,8 +69,8 @@ static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = La
18969 "ver" : PROPOSAL_TEMPLATE_FOR_CAMPAIGN_DOC . doc_ver( ) ?,
19070 } ,
19171 "parameters" : {
192- "id" : DUMMY_CAMPAIGN_DOC . doc_id( ) ?,
193- "ver" : DUMMY_CAMPAIGN_DOC . doc_ver( ) ?,
72+ "id" : CAMPAIGN_PARAMETERS_DOC . doc_id( ) ?,
73+ "ver" : CAMPAIGN_PARAMETERS_DOC . doc_ver( ) ?,
19474 }
19575 } ) ) ?
19676 . with_json_content( & serde_json:: json!( { } ) ) ?
@@ -221,8 +101,8 @@ static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = La
221101 "ver" : PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC . doc_ver( ) ?,
222102 } ,
223103 "parameters" : {
224- "id" : DUMMY_CATEGORY_DOC . doc_id( ) ?,
225- "ver" : DUMMY_CATEGORY_DOC . doc_ver( ) ?,
104+ "id" : CATEGORY_PARAMETERS_DOC . doc_id( ) ?,
105+ "ver" : CATEGORY_PARAMETERS_DOC . doc_ver( ) ?,
226106 }
227107 } ) ) ?
228108 . with_json_content( & serde_json:: json!( { } ) ) ?
@@ -251,8 +131,8 @@ static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = La
251131 "ver" : PROPOSAL_TEMPLATE_FOR_BRAND_DOC . doc_ver( ) ?,
252132 } ,
253133 "parameters" : {
254- "id" : DUMMY_BRAND_DOC . doc_id( ) ?,
255- "ver" : DUMMY_BRAND_DOC . doc_ver( ) ?,
134+ "id" : BRAND_PARAMETERS_DOC . doc_id( ) ?,
135+ "ver" : BRAND_PARAMETERS_DOC . doc_ver( ) ?,
256136 }
257137 } ) ) ?
258138 . with_json_content( & serde_json:: json!( { } ) ) ?
@@ -281,8 +161,8 @@ static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = La
281161 "ver" : PROPOSAL_TEMPLATE_FOR_BRAND_DOC . doc_ver( ) ?,
282162 } ,
283163 "parameters" : {
284- "id" : DUMMY_BRAND_DOC . doc_id( ) ?,
285- "ver" : DUMMY_BRAND_DOC . doc_ver( ) ?,
164+ "id" : BRAND_PARAMETERS_DOC . doc_id( ) ?,
165+ "ver" : BRAND_PARAMETERS_DOC . doc_ver( ) ?,
286166 }
287167 } ) ) ?
288168 . empty_content( ) ?
@@ -310,8 +190,8 @@ static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = La
310190 "ver" : PROPOSAL_TEMPLATE_FOR_BRAND_DOC . doc_ver( ) ?,
311191 } ,
312192 "parameters" : {
313- "id" : DUMMY_BRAND_DOC . doc_id( ) ?,
314- "ver" : DUMMY_BRAND_DOC . doc_ver( ) ?,
193+ "id" : BRAND_PARAMETERS_DOC . doc_id( ) ?,
194+ "ver" : BRAND_PARAMETERS_DOC . doc_ver( ) ?,
315195 }
316196 } ) ) ?
317197 . with_json_content( & serde_json:: json!( { } ) ) ?
@@ -336,8 +216,8 @@ static PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC: LazyLock<CatalystSignedDocument> = La
336216 "id" : id,
337217 "ver" : id,
338218 "parameters" : {
339- "id" : DUMMY_BRAND_DOC . doc_id( ) ?,
340- "ver" : DUMMY_BRAND_DOC . doc_ver( ) ?,
219+ "id" : BRAND_PARAMETERS_DOC . doc_id( ) ?,
220+ "ver" : BRAND_PARAMETERS_DOC . doc_ver( ) ?,
341221 }
342222 } ) ) ?
343223 . with_json_content( & serde_json:: json!( { } ) ) ?
@@ -392,9 +272,13 @@ async fn test_proposal_doc(
392272 provider
393273 . add_document ( None , & PROPOSAL_TEMPLATE_FOR_CATEGORY_DOC )
394274 . unwrap ( ) ;
395- provider. add_document ( None , & DUMMY_BRAND_DOC ) . unwrap ( ) ;
396- provider. add_document ( None , & DUMMY_CAMPAIGN_DOC ) . unwrap ( ) ;
397- provider. add_document ( None , & DUMMY_CATEGORY_DOC ) . unwrap ( ) ;
275+ provider. add_document ( None , & BRAND_PARAMETERS_DOC ) . unwrap ( ) ;
276+ provider
277+ . add_document ( None , & CAMPAIGN_PARAMETERS_DOC )
278+ . unwrap ( ) ;
279+ provider
280+ . add_document ( None , & CATEGORY_PARAMETERS_DOC )
281+ . unwrap ( ) ;
398282
399283 let is_valid = validator:: validate ( & doc, & provider) . await . unwrap ( ) ;
400284 assert_eq ! ( is_valid, !doc. problem_report( ) . is_problematic( ) ) ;
0 commit comments