@@ -1677,4 +1677,70 @@ BOOST_AUTO_TEST_CASE( issue_214 )
1677
1677
BOOST_CHECK_EQUAL ( top.amount .amount .value , get_balance ( bob_id, top.amount .asset_id ) );
1678
1678
} FC_LOG_AND_RETHROW () }
1679
1679
1680
+ BOOST_AUTO_TEST_CASE ( self_approving_proposal )
1681
+ { try {
1682
+ ACTORS ( (alice) );
1683
+ fund ( alice );
1684
+
1685
+ generate_blocks ( HARDFORK_CORE_1479_TIME );
1686
+ trx.clear ();
1687
+ set_expiration ( db, trx );
1688
+
1689
+ proposal_update_operation pup;
1690
+ pup.fee_paying_account = alice_id;
1691
+ pup.proposal = proposal_id_type (0 );
1692
+ pup.active_approvals_to_add .insert ( alice_id );
1693
+
1694
+ proposal_create_operation pop;
1695
+ pop.proposed_ops .emplace_back (pup);
1696
+ pop.fee_paying_account = alice_id;
1697
+ pop.expiration_time = db.head_block_time () + fc::days (1 );
1698
+ trx.operations .push_back (pop);
1699
+ const proposal_id_type pid1 = PUSH_TX ( db, trx, ~0 ).operation_results [0 ].get <object_id_type>();
1700
+ trx.clear ();
1701
+ BOOST_REQUIRE_EQUAL ( 0 , pid1.instance .value );
1702
+ db.get <proposal_object>(pid1);
1703
+
1704
+ trx.operations .push_back (pup);
1705
+ PUSH_TX ( db, trx, ~0 );
1706
+
1707
+ // Proposal failed and still exists
1708
+ db.get <proposal_object>(pid1);
1709
+ } FC_LOG_AND_RETHROW () }
1710
+
1711
+ BOOST_AUTO_TEST_CASE ( self_deleting_proposal )
1712
+ { try {
1713
+ ACTORS ( (alice) );
1714
+ fund ( alice );
1715
+
1716
+ generate_blocks ( HARDFORK_CORE_1479_TIME );
1717
+ trx.clear ();
1718
+ set_expiration ( db, trx );
1719
+
1720
+ proposal_delete_operation pdo;
1721
+ pdo.fee_paying_account = alice_id;
1722
+ pdo.proposal = proposal_id_type (0 );
1723
+ pdo.using_owner_authority = false ;
1724
+
1725
+ proposal_create_operation pop;
1726
+ pop.proposed_ops .emplace_back ( pdo );
1727
+ pop.fee_paying_account = alice_id;
1728
+ pop.expiration_time = db.head_block_time () + fc::days (1 );
1729
+ trx.operations .push_back ( pop );
1730
+ const proposal_id_type pid1 = PUSH_TX ( db, trx, ~0 ).operation_results [0 ].get <object_id_type>();
1731
+ trx.clear ();
1732
+ BOOST_REQUIRE_EQUAL ( 0 , pid1.instance .value );
1733
+ db.get <proposal_object>(pid1);
1734
+
1735
+ proposal_update_operation pup;
1736
+ pup.fee_paying_account = alice_id;
1737
+ pup.proposal = proposal_id_type (0 );
1738
+ pup.active_approvals_to_add .insert ( alice_id );
1739
+ trx.operations .push_back (pup);
1740
+ PUSH_TX ( db, trx, ~0 );
1741
+
1742
+ // Proposal failed and still exists
1743
+ db.get <proposal_object>(pid1);
1744
+ } FC_LOG_AND_RETHROW () }
1745
+
1680
1746
BOOST_AUTO_TEST_SUITE_END ()
0 commit comments