claim test

This commit is contained in:
Lex Berezhny 2018-06-14 15:18:36 -04:00 committed by Jack Robison
parent a4e9f3100f
commit c4273fbef0
No known key found for this signature in database
GPG key ID: DF25C68FE0239BB2
3 changed files with 22 additions and 16 deletions

View file

@ -1,9 +1,9 @@
import asyncio import asyncio
from binascii import hexlify, unhexlify from binascii import hexlify
from orchstr8.testcase import IntegrationTestCase from orchstr8.testcase import IntegrationTestCase
from lbryschema.claim import ClaimDict from lbryschema.claim import ClaimDict
from torba.constants import COIN from torba.constants import COIN
from lbrynet.wallet.manager import LbryWalletManager from lbrynet.wallet.transaction import Transaction
example_claim_dict = { example_claim_dict = {
@ -36,7 +36,6 @@ example_claim_dict = {
class ClaimTransactionTests(IntegrationTestCase): class ClaimTransactionTests(IntegrationTestCase):
VERBOSE = True VERBOSE = True
WALLET_MANAGER = LbryWalletManager
async def test_creating_updating_and_abandoning_claim(self): async def test_creating_updating_and_abandoning_claim(self):
@ -51,13 +50,14 @@ class ClaimTransactionTests(IntegrationTestCase):
self.assertEqual(round(await self.get_balance(self.account)/COIN, 1), 10.0) self.assertEqual(round(await self.get_balance(self.account)/COIN, 1), 10.0)
claim = ClaimDict.load_dict(example_claim_dict) claim = ClaimDict.load_dict(example_claim_dict)
tx = self.manager.claim_name(b'foo', 1*COIN, hexlify(claim.serialized)) tx = await Transaction.claim(b'foo', claim, 1*COIN, address, [self.account], self.account).asFuture(asyncio.get_event_loop())
await self.broadcast(tx) await self.broadcast(tx)
await self.on_transaction(tx.hex_id.decode()) #mempool await self.on_transaction(tx.hex_id.decode()) #mempool
await self.blockchain.generate(1) await self.blockchain.generate(1)
await self.on_transaction(tx.hex_id.decode()) #confirmed await self.on_transaction(tx.hex_id.decode()) #confirmed
await asyncio.sleep(5)
self.assertAlmostEqual(self.manager.get_balance(), 9, places=2) self.assertEqual(round(await self.get_balance(self.account)/COIN, 1), 10.0)
response = await self.resolve('lbry://foo') response = await self.resolve('lbry://foo')
print(response) print(response)

View file

@ -1,13 +1,13 @@
import os import os
from twisted.internet import defer from twisted.internet import defer
from lbrynet.database.storage import SQLiteStorage
from torba.basetransaction import NULL_HASH from torba.basetransaction import NULL_HASH
from torba.constants import COIN from torba.constants import COIN
from torba.coinselection import CoinSelector from torba.coinselection import CoinSelector
from torba.manager import WalletManager as BaseWalletManager from torba.manager import WalletManager as BaseWalletManager
from lbrynet.wallet.database import WalletDatabase
class BackwardsCompatibleNetwork: class BackwardsCompatibleNetwork:
def __init__(self, manager): def __init__(self, manager):
@ -22,15 +22,6 @@ class BackwardsCompatibleNetwork:
class LbryWalletManager(BaseWalletManager): class LbryWalletManager(BaseWalletManager):
def __init__(self, db, **kwargs):
super(LbryWalletManager, self).__init__(**kwargs)
self.db = db # type: SQLiteStorage
def create_ledger(self, ledger_class, *args, **kwargs):
if issubclass(ledger_class.database_class, self.db.__class__):
return ledger_class(*args, db=self.db, **kwargs)
return super(LbryWalletManager, self).create_ledger(ledger_class, *args, **kwargs)
@property @property
def wallet(self): def wallet(self):
return self return self

View file

@ -1,8 +1,14 @@
import struct import struct
from binascii import hexlify
from typing import List
from twisted.internet import defer
from torba.baseaccount import BaseAccount
from torba.basetransaction import BaseTransaction, BaseInput, BaseOutput from torba.basetransaction import BaseTransaction, BaseInput, BaseOutput
from torba.hash import hash160 from torba.hash import hash160
from lbryschema.claim import ClaimDict
from .script import InputScript, OutputScript from .script import InputScript, OutputScript
@ -32,3 +38,12 @@ class Transaction(BaseTransaction):
output = self.outputs[output_index] # type: Output output = self.outputs[output_index] # type: Output
assert output.script.is_claim_name(), 'Not a name claim.' assert output.script.is_claim_name(), 'Not a name claim.'
return claim_id_hash(self.hash, output_index) return claim_id_hash(self.hash, output_index)
@classmethod
def claim(cls, name, meta, amount, holding_address, funding_accounts, change_account):
# type: (bytes, ClaimDict, int, bytes, List[BaseAccount], BaseAccount) -> defer.Deferred
ledger = cls.ensure_all_have_same_ledger(funding_accounts, change_account)
claim_output = Output.pay_claim_name_pubkey_hash(
amount, name, hexlify(meta.serialized), ledger.address_to_hash160(holding_address)
)
return cls.pay([claim_output], funding_accounts, change_account)