Beispiel #1
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 #2
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)