Beispiel #1
0
 def test_to_json(self):
     txn = Transaction(
         Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "STAKE:BNB",
     )
     self.assertEqual(
         txn.to_json(),
         '{"id": "TODO", "chain": "BNB", "from_address": "USER", '
         '"to_address": "VAULT", "memo": "STAKE:BNB", "coins": '
         '[{"asset": "BNB.BNB", "amount": 100}], "gas": null}',
     )
     txn.coins = [Coin("BNB.BNB", 1000000000), Coin(RUNE, 1000000000)]
     self.assertEqual(
         txn.to_json(),
         '{"id": "TODO", "chain": "BNB", "from_address": "USER", '
         '"to_address": "VAULT", "memo": "STAKE:BNB", "coins": ['
         '{"asset": "BNB.BNB", "amount": 1000000000}, '
         '{"asset": "' + RUNE + '", "amount": 1000000000}], "gas": null}',
     )
     txn.coins = None
     self.assertEqual(
         txn.to_json(),
         '{"id": "TODO", "chain": "BNB", "from_address": "USER", '
         '"to_address": "VAULT", "memo": "STAKE:BNB", "coins": null, "gas": null}',
     )
     txn.gas = [Coin("BNB.BNB", 37500)]
     self.assertEqual(
         txn.to_json(),
         '{"id": "TODO", "chain": "BNB", "from_address": "USER", '
         '"to_address": "VAULT", "memo": "STAKE:BNB", "coins": null,'
         ' "gas": [{"asset": "BNB.BNB", "amount": 37500}]}',
     )
Beispiel #2
0
 def test_custom_hash(self):
     txn = Transaction(
         Binance.chain,
         "USER",
         "tbnb1yxfyeda8pnlxlmx0z3cwx74w9xevspwdpzdxpj",
         Coin("BNB.BNB", 194765912),
         "REFUND:TODO",
         id="9999A5A08D8FCF942E1AAAA01AB1E521B699BA3A009FA0591C011DC1FFDC5E68",
     )
     self.assertEqual(
         txn.custom_hash(""),
         "FE64709713A9F9D691CF2C5B144CA6DAA53E902800C1367C692FE7935BD029CE",
     )
     txn.coins = None
     self.assertEqual(
         txn.custom_hash(""),
         "229BD31DB372A43FB71896BDE7512BFCA06731A4D825B4721A1D8DD800159DCD",
     )
     txn.to_address = "tbnb189az9plcke2c00vns0zfmllfpfdw67dtv25kgx"
     txn.coins = [Coin(RUNE, 49900000000)]
     txn.memo = (
         "REFUND:CA3A36052DC2FC30B91AD3996012E9EF2E69EEA70D5FBBBD9364F6F97A056D7C"
     )
     pubkey = (
         "thorpub1addwnpepqv7kdf473gc4jyls7hlx4rg"
         "t2lqxm9qkfh5m3ua7wnzzzfhlpz49u4slu4g"
     )
     if DEFAULT_RUNE_ASSET == RUNE:
         self.assertEqual(
             txn.custom_hash(pubkey),
             "158D75777A5C23A5C8A39B55C0812252C0ABA9A87816D5E74BB7166EB95EDB73",
         )
Beispiel #3
0
 def test_str(self):
     txn = Transaction(Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "MEMO",)
     self.assertEqual(str(txn), "Tx     USER ==> VAULT    | MEMO | 100_BNB.BNB")
     txn.coins = [Coin("BNB.BNB", 1000000000), Coin(RUNE, 1000000000)]
     self.assertEqual(
         str(txn),
         "Tx     USER ==> VAULT    | MEMO | 1,000,000,000_BNB.BNB"
         f", 1,000,000,000_{RUNE}",
     )
     txn.coins = None
     self.assertEqual(
         str(txn), "Tx     USER ==> VAULT    | MEMO | No Coins",
     )
     txn.gas = [Coin("BNB.BNB", 37500)]
     self.assertEqual(
         str(txn), "Tx     USER ==> VAULT    | MEMO | No Coins | Gas 37,500_BNB.BNB",
     )
Beispiel #4
0
 def test_repr(self):
     txn = Transaction(Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "MEMO",)
     self.assertEqual(
         repr(txn), "<Tx     USER ==> VAULT    | MEMO | [<Coin 100_BNB.BNB>]>"
     )
     txn.coins = [Coin("BNB.BNB", 1000000000), Coin(RUNE, 1000000000)]
     self.assertEqual(
         repr(txn),
         "<Tx     USER ==> VAULT    | MEMO | [<Coin 1,000,000,000_BNB.BNB>,"
         f" <Coin 1,000,000,000_{RUNE}>]>",
     )
     txn.coins = None
     self.assertEqual(
         repr(txn), "<Tx     USER ==> VAULT    | MEMO | No Coins>",
     )
     txn.gas = [Coin("BNB.BNB", 37500)]
     self.assertEqual(
         repr(txn),
         "<Tx     USER ==> VAULT    | MEMO | No Coins |"
         " Gas [<Coin 37,500_BNB.BNB>]>",
     )
Beispiel #5
0
 def test_constructor(self):
     txn = Transaction(Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "MEMO",)
     self.assertEqual(txn.chain, "BNB")
     self.assertEqual(txn.from_address, "USER")
     self.assertEqual(txn.to_address, "VAULT")
     self.assertEqual(txn.coins[0].asset, "BNB.BNB")
     self.assertEqual(txn.coins[0].amount, 100)
     self.assertEqual(txn.memo, "MEMO")
     txn.coins = [Coin("BNB.BNB", 1000000000), Coin(RUNE, 1000000000)]
     self.assertEqual(txn.coins[0].asset, "BNB.BNB")
     self.assertEqual(txn.coins[0].amount, 1000000000)
     self.assertEqual(txn.coins[1].asset, RUNE)
     self.assertEqual(txn.coins[1].amount, 1000000000)
Beispiel #6
0
    def test_eq(self):
        tx1 = Transaction(
            Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "STAKE:BNB",
        )
        tx2 = Transaction(
            Binance.chain, "USER", "VAULT", Coin("BNB.BNB", 100), "STAKE:BNB",
        )
        self.assertEqual(tx1, tx2)
        tx2.chain = "BTC"
        self.assertNotEqual(tx1, tx2)
        tx1 = Transaction(
            Binance.chain, "USER", "VAULT", [Coin("BNB.BNB", 100)], "STAKE:BNB",
        )
        tx2 = Transaction(
            Binance.chain, "USER", "VAULT", [Coin("BNB.BNB", 100)], "STAKE:BNB",
        )
        self.assertEqual(tx1, tx2)
        tx1.memo = "STAKE:BNB"
        tx2.memo = "ADD:BNB"
        self.assertNotEqual(tx1, tx2)
        tx1.memo = "STAKE"
        tx2.memo = "ADD"
        self.assertNotEqual(tx1, tx2)
        tx1.memo = ""
        tx2.memo = ""
        self.assertEqual(tx1, tx2)
        tx1.memo = "Hello"
        tx2.memo = ""
        self.assertNotEqual(tx1, tx2)
        # we ignore addresses in memo
        tx1.memo = "REFUND:ADDRESS"
        tx2.memo = "REFUND:TODO"
        self.assertNotEqual(tx1, tx2)
        # we dont ignore different assets though
        tx1.memo = "STAKE:BNB"
        tx2.memo = "STAKE:RUNE"
        self.assertNotEqual(tx1, tx2)
        tx2.memo = "STAKE:BNB"
        self.assertEqual(tx1, tx2)
        tx2.coins = [Coin("BNB.BNB", 100)]
        self.assertEqual(tx1, tx2)
        tx2.coins = [Coin("BNB.BNB", 100), Coin("RUNE", 100)]
        self.assertNotEqual(tx1, tx2)
        # different list of coins not equal
        tx1.coins = [Coin("RUNE", 200), Coin("RUNE", 100)]
        tx2.coins = [Coin("BNB.BNB", 100), Coin("RUNE", 200)]
        self.assertNotEqual(tx1, tx2)
        # coins different order tx are still equal
        tx1.coins = [Coin("RUNE", 200), Coin("BNB.BNB", 100)]
        tx2.coins = [Coin("BNB.BNB", 100), Coin("RUNE", 200)]
        self.assertEqual(tx1, tx2)
        # we ignore from / to address for equality
        tx1.to_address = "VAULT1"
        tx2.to_address = "VAULT2"
        tx1.from_address = "USER1"
        tx2.from_address = "USER2"
        self.assertNotEqual(tx1, tx2)
        # check list of transactions equality
        tx1 = Transaction(
            Binance.chain, "USER", "VAULT", [Coin("BNB.BNB", 100)], "STAKE:BNB",
        )
        tx2 = deepcopy(tx1)
        tx3 = deepcopy(tx1)
        tx4 = deepcopy(tx1)
        list1 = [tx1, tx2]
        list2 = [tx3, tx4]
        self.assertEqual(list1, list2)

        # check sort list of transactions get sorted by smallest coin
        # check list of 1 coin
        # descending order in list1
        tx1.coins = [Coin("RUNE", 200)]
        tx2.coins = [Coin("BNB.BNB", 100)]
        # ascrending order in list2
        tx3.coins = [Coin("BNB.BNB", 100)]
        tx4.coins = [Coin("RUNE", 200)]
        self.assertNotEqual(list1, list2)
        self.assertEqual(sorted(list1), list2)
        self.assertEqual(sorted(list1), sorted(list2))

        # check list of > 1 coin
        # descending order in list1
        tx1.coins = [Coin("RUNE", 200), Coin("BNB.BNB", 300)]
        tx2.coins = [Coin("BNB.BNB", 100), Coin("LOK-3C0", 500)]
        # ascrending order in list2
        tx3.coins = [Coin("BNB.BNB", 100), Coin("LOK-3C0", 500)]
        tx4.coins = [Coin("RUNE", 200), Coin("BNB.BNB", 300)]
        self.assertNotEqual(list1, list2)
        self.assertEqual(sorted(list1), list2)
        self.assertEqual(sorted(list1), sorted(list2))

        # check 1 tx with no coins
        list1 = sorted(list1)
        self.assertEqual(list1, list2)
        list1[0].coins = None
        self.assertNotEqual(list1, list2)
        list2[0].coins = None
        self.assertEqual(list1, list2)