Skip to content

Commit dd932de

Browse files
committed
Fix remaining tests
1 parent 7d13617 commit dd932de

File tree

4 files changed

+54
-22
lines changed

4 files changed

+54
-22
lines changed

src/backends/plonky2/mock_main/mod.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -523,13 +523,16 @@ pub mod tests {
523523
zu_kyc_sign_pod_builders,
524524
};
525525
use crate::middleware;
526+
use crate::middleware::containers::Set;
526527

527528
#[test]
528529
fn test_mock_main_zu_kyc() -> Result<()> {
529530
let params = middleware::Params::default();
531+
let sanctions_values = ["A343434340"].map(|s| crate::middleware::Value::from(hash_str(s)));
532+
let sanction_set = Set::new(&sanctions_values.to_vec()).unwrap();
530533

531534
let (gov_id_builder, pay_stub_builder, sanction_list_builder) =
532-
zu_kyc_sign_pod_builders(&params);
535+
zu_kyc_sign_pod_builders(&params, &sanction_set);
533536
let mut signer = MockSigner {
534537
pk: "ZooGov".into(),
535538
};
@@ -542,8 +545,13 @@ pub mod tests {
542545
pk: "ZooOFAC".into(),
543546
};
544547
let sanction_list_pod = sanction_list_builder.sign(&mut signer)?;
545-
let kyc_builder =
546-
zu_kyc_pod_builder(&params, &gov_id_pod, &pay_stub_pod, &sanction_list_pod)?;
548+
let kyc_builder = zu_kyc_pod_builder(
549+
&params,
550+
&gov_id_pod,
551+
&pay_stub_pod,
552+
&sanction_list_pod,
553+
&sanction_set,
554+
)?;
547555

548556
let mut prover = MockProver {};
549557
let kyc_pod = kyc_builder.prove(&mut prover, &params)?;

src/examples.rs

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ use crate::op;
1717

1818
pub fn zu_kyc_sign_pod_builders(
1919
params: &Params,
20+
sanction_set: &Set,
2021
) -> (SignedPodBuilder, SignedPodBuilder, SignedPodBuilder) {
2122
let mut gov_id = SignedPodBuilder::new(params);
2223
gov_id.insert("idNumber", "4242424242");
@@ -28,11 +29,7 @@ pub fn zu_kyc_sign_pod_builders(
2829
pay_stub.insert("startDate", 1706367566);
2930

3031
let mut sanction_list = SignedPodBuilder::new(params);
31-
let sanctions_values = ["A343434340"].map(|s| crate::middleware::Value::from(hash_str(s)));
32-
sanction_list.insert(
33-
"sanctionList",
34-
Value::Set(Set::new(&sanctions_values.to_vec()).unwrap()),
35-
);
32+
sanction_list.insert("sanctionList", Value::Set(sanction_set.clone()));
3633

3734
(gov_id, pay_stub, sanction_list)
3835
}
@@ -42,18 +39,23 @@ pub fn zu_kyc_pod_builder(
4239
gov_id: &SignedPod,
4340
pay_stub: &SignedPod,
4441
sanction_list: &SignedPod,
42+
sanction_set: &Set,
4543
) -> Result<MainPodBuilder> {
4644
let now_minus_18y: i64 = 1169909388;
4745
let now_minus_1y: i64 = 1706367566;
4846

47+
let gov_id_kvs = gov_id.kvs();
48+
let id_number_value = gov_id_kvs.get(&"idNumber".into()).unwrap();
49+
4950
let mut kyc = MainPodBuilder::new(params);
5051
kyc.add_signed_pod(gov_id);
5152
kyc.add_signed_pod(pay_stub);
5253
kyc.add_signed_pod(sanction_list);
5354
kyc.pub_op(op!(
5455
not_contains,
5556
(sanction_list, "sanctionList"),
56-
(gov_id, "idNumber")
57+
(gov_id, "idNumber"),
58+
sanction_set.prove_nonexistence(id_number_value)?
5759
))?;
5860
kyc.pub_op(op!(lt, (gov_id, "dateOfBirth"), now_minus_18y))?;
5961
kyc.pub_op(op!(
@@ -223,7 +225,7 @@ pub fn great_boy_pod_builder(
223225
params: &Params,
224226
good_boy_pods: [&SignedPod; 4],
225227
friend_pods: [&SignedPod; 2],
226-
good_boy_issuers: &Value,
228+
good_boy_issuer_dict: &Dictionary,
227229
receiver: &str,
228230
) -> Result<MainPodBuilder> {
229231
// Attestment chain (issuer -> good boy -> great boy):
@@ -250,6 +252,8 @@ pub fn great_boy_pod_builder(
250252
PodType::MockSigned as i64
251253
))?;
252254
for issuer_idx in 0..2 {
255+
let pod_kvs = good_boy_pods[good_boy_idx * 2 + issuer_idx].kvs();
256+
253257
// Type check
254258
great_boy.pub_op(op!(
255259
eq,
@@ -259,9 +263,12 @@ pub fn great_boy_pod_builder(
259263
// Each good boy POD comes from a valid issuer
260264
great_boy.pub_op(op!(
261265
contains,
262-
good_boy_issuers,
266+
Value::Dictionary(good_boy_issuer_dict.clone()),
263267
(good_boy_pods[good_boy_idx * 2 + issuer_idx], KEY_SIGNER),
264-
0
268+
0,
269+
good_boy_issuer_dict
270+
.prove(pod_kvs.get(&KEY_SIGNER.into()).unwrap())?
271+
.1
265272
))?;
266273
// Each good boy has 2 good boy pods
267274
great_boy.pub_op(op!(
@@ -338,7 +345,13 @@ pub fn great_boy_pod_full_flow() -> Result<MainPodBuilder> {
338345
alice_friend_pods.push(friend.sign(&mut bob_signer).unwrap());
339346
alice_friend_pods.push(friend.sign(&mut charlie_signer).unwrap());
340347

341-
let good_boy_issuers_dict = Value::Dictionary(Dictionary::new(&HashMap::new())?); // empty
348+
let good_boy_issuer_dict = Dictionary::new(
349+
&good_boy_issuers
350+
.into_iter()
351+
.map(|issuer| (crate::middleware::Hash::from(issuer), 0.into()))
352+
.collect(),
353+
)?;
354+
342355
great_boy_pod_builder(
343356
&params,
344357
[
@@ -348,7 +361,7 @@ pub fn great_boy_pod_full_flow() -> Result<MainPodBuilder> {
348361
&charlie_good_boys[1],
349362
],
350363
[&alice_friend_pods[0], &alice_friend_pods[1]],
351-
&good_boy_issuers_dict,
364+
&good_boy_issuer_dict,
352365
alice,
353366
)
354367
}
@@ -374,7 +387,7 @@ pub fn tickets_pod_builder(
374387
expect_consumed: bool,
375388
blacklisted_emails: &Dictionary,
376389
) -> Result<MainPodBuilder> {
377-
let blacklisted_email_root = Value::Dictionary(blacklisted_emails.clone());
390+
let blacklisted_email_dict_value = Value::Dictionary(blacklisted_emails.clone());
378391
let attendee_email_statement: Statement = (signed_pod, "attendeeEmail").into();
379392
let attendee_email_value = match attendee_email_statement.1.get(1).cloned() {
380393
Some(crate::frontend::StatementArg::Literal(v)) => Ok(v),
@@ -390,7 +403,7 @@ pub fn tickets_pod_builder(
390403
builder.pub_op(op!(eq, (signed_pod, "isRevoked"), false))?;
391404
builder.pub_op(op!(
392405
not_contains,
393-
blacklisted_email_root,
406+
blacklisted_email_dict_value,
394407
attendee_email_statement,
395408
blacklisted_emails.prove_nonexistence(&(&attendee_email_value).into())?
396409
))?;

src/frontend/mod.rs

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,12 @@ impl From<middleware::Value> for Value {
8585
}
8686
}
8787

88+
impl From<middleware::Hash> for Value {
89+
fn from(v: middleware::Hash) -> Self {
90+
Self::Raw(v.into())
91+
}
92+
}
93+
8894
impl TryInto<i64> for Value {
8995
type Error = Error;
9096
fn try_into(self) -> std::result::Result<i64, Self::Error> {
@@ -995,7 +1001,9 @@ pub mod tests {
9951001
#[test]
9961002
fn test_front_zu_kyc() -> Result<()> {
9971003
let params = Params::default();
998-
let (gov_id, pay_stub, sanction_list) = zu_kyc_sign_pod_builders(&params);
1004+
let sanctions_values = ["A343434340"].map(|s| crate::middleware::Value::from(hash_str(s)));
1005+
let sanction_set = Set::new(&sanctions_values).unwrap();
1006+
let (gov_id, pay_stub, sanction_list) = zu_kyc_sign_pod_builders(&params, &sanction_set);
9991007

10001008
println!("{}", gov_id);
10011009
println!("{}", pay_stub);
@@ -1021,7 +1029,8 @@ pub mod tests {
10211029
check_kvs(&sanction_list)?;
10221030
println!("{}", sanction_list);
10231031

1024-
let kyc_builder = zu_kyc_pod_builder(&params, &gov_id, &pay_stub, &sanction_list)?;
1032+
let kyc_builder =
1033+
zu_kyc_pod_builder(&params, &gov_id, &pay_stub, &sanction_list, &sanction_set)?;
10251034
println!("{}", kyc_builder);
10261035

10271036
// prove kyc with MockProver and print it
@@ -1177,8 +1186,9 @@ pub mod tests {
11771186
my_dict_kvs.insert(BeValue::from(&"b".into()), BeValue::from(&2.into()));
11781187
my_dict_kvs.insert(BeValue::from(&"c".into()), BeValue::from(&3.into()));
11791188
let my_dict_as_mt = MerkleTree::new(5, &my_dict_kvs).unwrap();
1180-
let dict = Value::Dictionary(Dictionary { mt: my_dict_as_mt });
1181-
builder.insert("dict", dict);
1189+
let dict = Dictionary { mt: my_dict_as_mt };
1190+
let dict_root = Value::Dictionary(dict.clone());
1191+
builder.insert("dict", dict_root);
11821192

11831193
let mut signer = MockSigner {
11841194
pk: "signer".into(),
@@ -1200,6 +1210,7 @@ pub mod tests {
12001210
OperationArg::Statement(st0),
12011211
OperationArg::Statement(st1),
12021212
OperationArg::Statement(st2),
1213+
OperationArg::MerkleProof(dict.prove(&Hash::from("a").into()).unwrap().1),
12031214
],
12041215
))
12051216
.unwrap();

src/middleware/containers.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ pub struct Set {
7373
}
7474

7575
impl Set {
76-
pub fn new(set: &Vec<Value>) -> Result<Self> {
76+
pub fn new(set: &[Value]) -> Result<Self> {
7777
let kvs: HashMap<Value, Value> = set
7878
.iter()
7979
.map(|e| {
@@ -126,7 +126,7 @@ pub struct Array {
126126
}
127127

128128
impl Array {
129-
pub fn new(array: &Vec<Value>) -> Result<Self> {
129+
pub fn new(array: &[Value]) -> Result<Self> {
130130
let kvs: HashMap<Value, Value> = array
131131
.iter()
132132
.enumerate()

0 commit comments

Comments
 (0)