Fix tests.

This commit is contained in:
Richard Kiss 2020-09-16 16:41:06 -07:00 committed by Gene Hoffman
parent 3e23c22853
commit a57db60697
4 changed files with 25 additions and 22 deletions

View File

@ -1,4 +1,4 @@
from typing import List, Optional, Dict
from typing import List, Optional, Dict, Tuple
from blspy import PrivateKey, AugSchemeMPL, G1Element, G2Element
@ -129,7 +129,7 @@ class WalletTool:
condition_dic: Dict[ConditionOpcode, List[ConditionVarPair]],
fee: int = 0,
secretkey=None,
) -> List[Tuple[Program, CoinSolution]]:
) -> List[CoinSolution]:
spends = []
spend_value = coin.amount
puzzle_hash = coin.puzzle_hash

View File

@ -69,7 +69,9 @@ def puzzle_for_pk(public_key: PublicKeyProgram) -> Program:
return MOD.curry(public_key)
def solution_with_delegated_puzzle(delegated_puzzle: Program, solution: Program) -> Program:
def solution_with_delegated_puzzle(
delegated_puzzle: Program, solution: Program
) -> Program:
return Program.to([[], delegated_puzzle, solution])

View File

@ -13,7 +13,10 @@ from src.util.condition_tools import (
)
from src.util.ints import uint64, uint32
from src.wallet.abstract_wallet import AbstractWallet
from src.wallet.puzzles.p2_delegated_puzzle import puzzle_for_pk, solution_for_conditions
from src.wallet.puzzles.p2_delegated_puzzle import (
puzzle_for_pk,
solution_for_conditions,
)
from src.wallet.puzzles.puzzle_utils import (
make_assert_my_coin_id_condition,
make_assert_time_exceeds_condition,
@ -273,9 +276,7 @@ class Wallet(AbstractWallet):
def secret_key_for_public_key(self, public_key: G1Element) -> Optional[PrivateKey]:
return self._pk2sk.get(bytes(public_key))
async def sign_transaction(
self, coin_solutions: List[CoinSolution]
) -> SpendBundle:
async def sign_transaction(self, coin_solutions: List[CoinSolution]) -> SpendBundle:
signatures = []
for coin_solution in coin_solutions:
@ -288,7 +289,9 @@ class Wallet(AbstractWallet):
coin_solution.solution
)
if err or conditions_dict is None:
error_msg = f"Sign transaction failed, con:{conditions_dict}, error: {err}"
error_msg = (
f"Sign transaction failed, con:{conditions_dict}, error: {err}"
)
self.log.error(error_msg)
raise ValueError(error_msg)
@ -298,8 +301,9 @@ class Wallet(AbstractWallet):
):
secret_key = self.secret_key_for_public_key(_)
if secret_key is None:
self.log.error(f"no secret key for {_}")
return None
e_msg = f"no secret key for {_}"
self.log.error(e_msg)
raise ValueError(e_msg)
signature = AugSchemeMPL.sign(secret_key, msg)
signatures.append(signature)

View File

@ -1,6 +1,6 @@
import asyncio
from time import time
from typing import List, Tuple
from typing import List
import pytest
@ -9,7 +9,6 @@ from src.protocols import full_node_protocol
from src.types.coin_solution import CoinSolution
from src.types.condition_var_pair import ConditionVarPair
from src.types.condition_opcodes import ConditionOpcode
from src.types.program import Program
from src.types.spend_bundle import SpendBundle
from src.util.condition_tools import (
conditions_for_solution,
@ -868,25 +867,23 @@ class TestMempool:
):
pass
unsigned: List[
Tuple[Program, CoinSolution]
] = wallet_a.generate_unsigned_transaction(
unsigned: List[CoinSolution] = wallet_a.generate_unsigned_transaction(
1000, receiver_puzzlehash, block.get_coinbase(), {}, 0
)
assert len(unsigned) == 1
coin_solution = unsigned[0]
puzzle, solution = unsigned[0]
code_ = [puzzle, solution.solution]
sexp = Program.to(code_)
err, con, cost = conditions_for_solution(sexp)
err, con, cost = conditions_for_solution(coin_solution.solution)
assert con is not None
puzzle, solution = list(coin_solution.solution.as_iter())
conditions_dict = conditions_by_opcode(con)
pkm_pairs = pkm_pairs_for_conditions_dict(conditions_dict, solution.coin.name())
pkm_pairs = pkm_pairs_for_conditions_dict(
conditions_dict, coin_solution.coin.name()
)
assert len(pkm_pairs) == 1
assert pkm_pairs[0][1] == solution.solution.first().get_tree_hash()
assert pkm_pairs[0][1] == solution.first().get_tree_hash()
spend_bundle = wallet_a.sign_transaction(unsigned)
assert spend_bundle is not None