aboutsummaryrefslogtreecommitdiffstats
path: root/python-packages/order_utils/test
diff options
context:
space:
mode:
authorF. Eugene Aumson <feuGeneA@users.noreply.github.com>2018-10-24 00:08:16 +0800
committerGitHub <noreply@github.com>2018-10-24 00:08:16 +0800
commit1f0c7f8fbeba90ac1f65c57ff58782051c751b3d (patch)
treec5239e139729d6e4e63454c24679e8559f7c7560 /python-packages/order_utils/test
parent1ba207f1fef4338682b4cc7e45af8c073e63d263 (diff)
downloaddexon-0x-contracts-1f0c7f8fbeba90ac1f65c57ff58782051c751b3d.tar
dexon-0x-contracts-1f0c7f8fbeba90ac1f65c57ff58782051c751b3d.tar.gz
dexon-0x-contracts-1f0c7f8fbeba90ac1f65c57ff58782051c751b3d.tar.bz2
dexon-0x-contracts-1f0c7f8fbeba90ac1f65c57ff58782051c751b3d.tar.lz
dexon-0x-contracts-1f0c7f8fbeba90ac1f65c57ff58782051c751b3d.tar.xz
dexon-0x-contracts-1f0c7f8fbeba90ac1f65c57ff58782051c751b3d.tar.zst
dexon-0x-contracts-1f0c7f8fbeba90ac1f65c57ff58782051c751b3d.zip
feat(order_utils.py): ERC20 asset data encoding and decoding
In addition to the ERC20 codec, also: Stopped ignoring type errors on 3rd party imports, by including interface stubs for them; Removed the unimplemented signature-utils module, which was just a stand-in when the python project support was first put in place. https://github.com/0xProject/0x-monorepo/pull/1144
Diffstat (limited to 'python-packages/order_utils/test')
-rw-r--r--python-packages/order_utils/test/test_abi_utils.py53
-rw-r--r--python-packages/order_utils/test/test_asset_data_utils.py35
-rw-r--r--python-packages/order_utils/test/test_doctest.py22
-rw-r--r--python-packages/order_utils/test/test_signature_utils.py8
4 files changed, 106 insertions, 12 deletions
diff --git a/python-packages/order_utils/test/test_abi_utils.py b/python-packages/order_utils/test/test_abi_utils.py
new file mode 100644
index 000000000..49a2a4f20
--- /dev/null
+++ b/python-packages/order_utils/test/test_abi_utils.py
@@ -0,0 +1,53 @@
+"""Tests of 0x.abi_utils."""
+
+import pytest
+
+from zero_ex.dev_utils.abi_utils import (
+ elementary_name,
+ event_id,
+ method_id,
+ parse_signature,
+ simple_encode,
+)
+
+
+def test_parse_signature_type_error():
+ """Test that passing in wrong types raises TypeError."""
+ with pytest.raises(TypeError):
+ parse_signature(123)
+
+
+def test_parse_signature_bad_input():
+ """Test that passing a non-signature string raises a ValueError."""
+ with pytest.raises(ValueError):
+ parse_signature("a string that's not even close to a signature")
+
+
+def test_elementary_name_type_error():
+ """Test that passing in wrong types raises TypeError."""
+ with pytest.raises(TypeError):
+ elementary_name(123)
+
+
+def test_event_id_type_error():
+ """Test that passing in wrong types raises TypeError."""
+ with pytest.raises(TypeError):
+ event_id(123, [])
+
+ with pytest.raises(TypeError):
+ event_id("valid string", 123)
+
+
+def test_method_id_type_error():
+ """Test that passing in wrong types raises TypeError."""
+ with pytest.raises(TypeError):
+ method_id(123, [])
+
+ with pytest.raises(TypeError):
+ method_id("ERC20Token", 123)
+
+
+def test_simple_encode_type_error():
+ """Test that passing in wrong types raises TypeError."""
+ with pytest.raises(TypeError):
+ simple_encode(123)
diff --git a/python-packages/order_utils/test/test_asset_data_utils.py b/python-packages/order_utils/test/test_asset_data_utils.py
new file mode 100644
index 000000000..eeada5873
--- /dev/null
+++ b/python-packages/order_utils/test/test_asset_data_utils.py
@@ -0,0 +1,35 @@
+"""Tests of 0x.order_utils.asset_data_utils."""
+
+import pytest
+
+from zero_ex.order_utils.asset_data_utils import (
+ encode_erc20_asset_data,
+ decode_erc20_asset_data,
+ ERC20_ASSET_DATA_BYTE_LENGTH,
+)
+
+
+def test_encode_erc20_asset_data_type_error():
+ """Test that passing in a non-string raises a TypeError."""
+ with pytest.raises(TypeError):
+ encode_erc20_asset_data(123)
+
+
+def test_decode_erc20_asset_data_type_error():
+ """Test that passing in a non-string raises a TypeError."""
+ with pytest.raises(TypeError):
+ decode_erc20_asset_data(123)
+
+
+def test_decode_erc20_asset_data_too_short():
+ """Test that passing an insufficiently long string raises a ValueError."""
+ with pytest.raises(ValueError):
+ decode_erc20_asset_data(" " * (ERC20_ASSET_DATA_BYTE_LENGTH - 1))
+
+
+def test_decode_erc20_asset_data_invalid_proxy_id():
+ """Test that passing data with an invalid proxy ID raises a ValueError."""
+ with pytest.raises(ValueError):
+ decode_erc20_asset_data(
+ "0xffffffff" + (" " * ERC20_ASSET_DATA_BYTE_LENGTH)
+ )
diff --git a/python-packages/order_utils/test/test_doctest.py b/python-packages/order_utils/test/test_doctest.py
index a0e61f84a..ba5da5418 100644
--- a/python-packages/order_utils/test/test_doctest.py
+++ b/python-packages/order_utils/test/test_doctest.py
@@ -1,10 +1,24 @@
"""Exercise doctests for order_utils module."""
from doctest import testmod
-from zero_ex.order_utils import signature_utils
+from zero_ex.dev_utils import abi_utils, type_assertions
+from zero_ex.order_utils import asset_data_utils
-def test_doctest():
- """Invoke doctest on the module."""
- (failure_count, _) = testmod(signature_utils)
+
+def test_doctest_asset_data_utils():
+ """Invoke doctest on the asset_data_utils module."""
+ (failure_count, _) = testmod(asset_data_utils)
+ assert failure_count == 0
+
+
+def test_doctest_abi_utils():
+ """Invoke doctest on the abi_utils module."""
+ (failure_count, _) = testmod(abi_utils)
+ assert failure_count == 0
+
+
+def test_doctest_type_assertions():
+ """Invoke doctest on the type_assertions module."""
+ (failure_count, _) = testmod(type_assertions)
assert failure_count == 0
diff --git a/python-packages/order_utils/test/test_signature_utils.py b/python-packages/order_utils/test/test_signature_utils.py
deleted file mode 100644
index 7e830f9f8..000000000
--- a/python-packages/order_utils/test/test_signature_utils.py
+++ /dev/null
@@ -1,8 +0,0 @@
-"""Tests of 0x.order_utils.signature_utils.*."""
-
-from zero_ex.order_utils.signature_utils import ec_sign_order_hash
-
-
-def test_ec_sign_order_hash():
- """Test the signing of order hashes."""
- assert ec_sign_order_hash() == "stub return value"