Skip to content
This repository was archived by the owner on May 23, 2023. It is now read-only.

add serpent and solidity test for tx.origin. #359

Open
wants to merge 1 commit into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 56 additions & 0 deletions ethereum/tests/test_contracts.py
Original file line number Diff line number Diff line change
Expand Up @@ -1685,6 +1685,61 @@ def test_prefix_types_in_functions():
assert c.sqrdiv(25, 2) == 156


origin_child_code = \
'''
def sender():
return (msg.sender:address)

def origin():
return (tx.origin:address)

def senderisorigin():
return (msg.sender == tx.origin:bool)
'''

filename_origin_child = "origin_qwertyuioplkjhgfdsa.se"

origin_code = \
'''
extern child.serpent: [origin:[]:int256, sender:[]:int256, senderisorigin:[]:int256]

x = create("%s")

def sender():
return (msg.sender:address)

def origin():
return (tx.origin:address)

def senderisorigin():
return (msg.sender == tx.origin:bool)

def childsender():
return (x.sender():address)

def childorigin():
return (x.origin():address)

def childsenderisorigin():
return (x.senderisorigin():bool)
''' % filename_origin_child


def test_origin():
s = tester.state()
open(filename_origin_child, 'w').write(origin_child_code)
c = s.abi_contract(origin_code, language='serpent')

try:
assert c.sender() == utils.encode_hex(tester.a0)
assert c.origin() == utils.encode_hex(tester.a0)
assert c.senderisorigin() == True

assert c.childsender() == utils.encode_hex(c.address)
assert c.childorigin() == utils.encode_hex(tester.a0)
assert c.childsenderisorigin() == False
finally:
os.remove(filename_origin_child)

# test_evm = None
# test_sixten = None
Expand Down Expand Up @@ -1736,3 +1791,4 @@ def test_prefix_types_in_functions():
# test_string_logging = None
# test_params_contract = None
# test_prefix_types_in_functions = None
# test_origin = None
52 changes: 52 additions & 0 deletions ethereum/tests/test_solidity.py
Original file line number Diff line number Diff line change
Expand Up @@ -269,3 +269,55 @@ def test_abi_contract():
assert contract.seven() == 7
assert contract.mul2(2) == 4
assert contract.mul2(-2) == -4


def test_origin():
code = """
contract testme {
function sender() returns (address) {
return msg.sender;
}

function origin() returns (address) {
return tx.origin;
}

function senderisorigin() returns (bool) {
return msg.sender == tx.origin;
}
}

contract testmechild is testme {
}

contract testmeparent is testme {
testmechild child;

function testmeparent() {
child = new testmechild();
}

function childsender() returns(address) {
return child.sender();
}

function childorigin() returns(address) {
return child.origin();
}

function childsenderisorigin() returns(bool) {
return child.senderisorigin();
}
}
"""

state = tester.state()
c = state.abi_contract(code, language='solidity')

assert c.sender() == utils.encode_hex(tester.a0)
assert c.origin() == utils.encode_hex(tester.a0)
assert c.senderisorigin() == True

assert c.childsender() == utils.encode_hex(c.address)
assert c.childorigin() == utils.encode_hex(tester.a0)
assert c.childsenderisorigin() == False