added is_same_address utility method

This commit is contained in:
shravan-shandilya 2016-10-27 07:29:41 +05:30
parent c877d00207
commit 1053bdaebb
2 changed files with 65 additions and 0 deletions

View File

@ -8,6 +8,7 @@ from web3.utils.address import (
is_checksum_address,
to_checksum_address,
to_address,
is_same_address,
)
@ -129,3 +130,57 @@ def test_to_address(value, expected):
)
def test_to_checksum_address(value, expected):
assert to_checksum_address(value) == expected, (to_checksum_address(value), expected)
@pytest.mark.parametrize(
"address1,address2,expected",
(
(
'0xc6d9d2cd449a754c494264e1809c50e34d64562b',
'0xc6d9d2cD449A754c494264e1809c50e34D64562b',
True,
),
(
'c6d9d2cd449a754c494264e1809c50e34d64562b',
'0xc6d9d2cD449A754c494264e1809c50e34D64562b',
True,
),
(
b'\xd3\xcd\xa9\x13\xde\xb6\xf6yg\xb9\x9dg\xac\xdf\xa1q,)6\x01',
'0xd3cda913deb6f67967b99d67acdfa1712c293601',
True,
),
(
b'0xc6d9d2cd449a754c494264e1809c50e34d64562b',
'0xc6d9d2cd449a754c494264e1809c50e34d64562b',
True,
),
(
b'0xc6d9d2cd449a754c494264e1809c50e34d64562b',
'0xc305c901078781c232a2a521c2af7980f8385ee9',
False,
),
(
'c6d9d2cd449a754c494264e1809c50e34d64562b',
'0xc6d9d2cd449a754c494264e1809c50e34d64562b',
True,
),
(
'C6D9D2CD449A754C494264E1809C50E34D64562B',
'0xc6d9d2cd449a754c494264e1809c50e34d64562b',
True,
),
(
'0x000000000000000000000000c305c901078781c232a2a521c2af7980f8385ee9',
'0xc305c901078781c232a2a521c2af7980f8385ee9',
True,
),
(
b'0x000000000000000000000000c305c901078781c232a2a521c2af7980f8385ee9',
'0xc6d9d2cd449a754c494264e1809c50e34d64562b',
False,
),
)
)
def test_is_same_address(address1, address2, expected):
assert is_same_address(address1, address2) == expected

View File

@ -109,3 +109,13 @@ def to_address(address):
return add_0x_prefix(address[-40:])
raise ValueError("Unknown address format")
@coerce_args_to_text
def is_same_address(address1, address2):
"""
Checks if both addresses are same or not
"""
if is_address(address1) & is_address(address2):
return to_checksum_address(address1) == to_checksum_address(address2)
else:
return to_checksum_address(to_address(address1)) == to_checksum_address(to_address(address2))