Baseline Worklock deployer tests.

pull/1550/head
Kieran Prasch 2019-07-18 12:58:13 -07:00 committed by Kieran R. Prasch
parent 9a20f6f4ce
commit cdc8696855
3 changed files with 64 additions and 3 deletions

View File

@ -31,8 +31,8 @@ from nucypher.blockchain.eth.agents import (
NucypherTokenAgent,
PolicyManagerAgent,
PreallocationEscrowAgent,
AdjudicatorAgent
)
AdjudicatorAgent,
WorkLockAgent)
from nucypher.blockchain.eth.constants import DISPATCHER_CONTRACT_NAME
from nucypher.blockchain.eth.decorators import validate_secret, validate_checksum_address
from nucypher.blockchain.eth.interfaces import BlockchainDeployerInterface, BlockchainInterfaceFactory, \
@ -1094,7 +1094,7 @@ class WorklockDeployer(BaseContractDeployer):
self.refund_rate = refund_rate
self.locked_periods = locked_periods
def deploy(self, secret_hash: bytes, gas_limit: int = None) -> Dict[str, str]:
def deploy(self, gas_limit: int = None) -> Dict[str, str]:
"""
Worklock Constructor Parameters (Ordered)

View File

@ -0,0 +1,61 @@
"""
This file is part of nucypher.
nucypher is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
nucypher is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with nucypher. If not, see <https://www.gnu.org/licenses/>.
"""
import pytest
from eth_utils import is_checksum_address
from nucypher.blockchain.eth.agents import NucypherTokenAgent, WorkLockAgent
from nucypher.blockchain.eth.deployers import NucypherTokenDeployer, WorkLockDeployer
from nucypher.blockchain.eth.interfaces import EthereumContractRegistry
def test_token_deployer_and_agent(testerchain, agency, token_economics):
origin = testerchain.etherbase_account
# Trying to get token from blockchain before it's been published fails
with pytest.raises(EthereumContractRegistry.UnknownContract):
WorkLockAgent(blockchain=testerchain)
# Generate WorkLock params
# TODO: Move to "economics" class?
now = testerchain.w3.eth.getBlock(block_identifier='latest').timestamp
start_bid_date = now + (60 * 60) # 1 Hour
end_bid_date = start_bid_date + (60 * 60)
deposit_rate = 100
refund_rate = 200
locked_periods = 2 * token_economics.minimum_locked_periods
# Create WorkLock Deployer
deployer = WorkLockDeployer(blockchain=testerchain,
deployer_address=origin,
start_date=start_bid_date,
end_date=end_bid_date,
refund_rate=refund_rate,
deposit_rate=deposit_rate,
locked_periods=locked_periods)
# Deploy WorkLock
deployment_receipts = deployer.deploy()
assert len(deployment_receipts) == 1
# Create a token instance
assert deployer.contract
assert is_checksum_address(deployer.contract_address)
assert deployer.contract.address == deployer.contract_address
testerchain.registry.clear()