Esempio n. 1
0
    def test_sign_transaction(self):
        w = Wallet()
        w.create_keys()

        t = Transaction(w.get_address(), 1, 1)
        th = t.get_hash()

        self.assertIsNone(t.signature)

        self.assertTrue(w.sign_transaction(t))

        self.assertIsNotNone(t.signature)
        self.assertEqual(t.get_hash(), th)

        self.assertTrue(w.verify_transaction(t))
Esempio n. 2
0
    def test_transaction_serialize(self):
        t1 = Transaction(0, 1, 2)
        t2 = Transaction(0, 1, 2)

        self.assertNotEqual(t1.get_hash(), t2.get_hash())

        t3 = Transaction.from_json(t1.to_json())
        self.assertEqual(t1.get_hash(), t3.get_hash())
        self.assertEqual(t1.src, t3.src)
        self.assertEqual(t1.dst, t3.dst)
        self.assertEqual(t1.qty, t3.qty)

        w = Wallet()
        w.create_keys()
        w.sign_transaction(t1)
        t4 = Transaction.from_json(t1.to_json())
        self.assertEqual(t1.get_hash(), t4.get_hash())
Esempio n. 3
0
    def test_add_transactions(self):
        tp = TransactionPool()
        w = Wallet()
        w.create_keys()

        t = Transaction(w.get_address(), 1, 1)
        # Transaction is not signed
        self.assertFalse(tp.add_transaction(t))

        w.sign_transaction(t)
        self.assertTrue(tp.add_transaction(t))

        # Canot add the same transaciton multiple times
        self.assertFalse(tp.add_transaction(t))

        self.assertEqual(len(tp), 1)

        t2 = tp.pull_transaction()
        self.assertEqual(t.get_hash(), t2.get_hash())
Esempio n. 4
0
    def test_import_transactions(self):
        b = Block(0, 0)
        w = Wallet()
        w.create_keys()
        t = Transaction(w.get_address(), 1, 1)
        w.sign_transaction(t)
        b.add_transaction(t)

        tp = TransactionPool()
        self.assertTrue(tp.import_transactions(b))
        self.assertEqual(len(tp), 1)

        t2 = tp.pull_transaction()
        self.assertEqual(t.get_hash(), t2.get_hash())

        # Importing unsigned transactions returns False
        tp = TransactionPool()
        t2 = Transaction(0, 1, 1)
        b.add_transaction(t2)
        self.assertFalse(tp.import_transactions(b))