aboutsummaryrefslogtreecommitdiffstats
path: root/python-packages/order_utils/test/test_signature_utils.py
blob: b688e03a1821c60ca95b393ce042e475818a78d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
"""Tests of zero_ex.order_utils.signature_utils."""

import pytest
from web3 import Web3

from zero_ex.order_utils.signature_utils import is_valid_signature


def test_is_valid_signature__provider_wrong_type():
    """Test that giving a non-HTTPProvider raises a TypeError."""
    with pytest.raises(TypeError):
        is_valid_signature(
            123,
            "0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b"
            + "0",
            "0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351b"
            + "c3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace"
            + "225403",
            "0x5409ed021d9299bf6814279a6a1411a7e866a631",
        )


def test_is_valid_signature__data_not_string():
    """Test that giving non-string `data` raises a TypeError."""
    with pytest.raises(TypeError):
        is_valid_signature(
            Web3.HTTPProvider("http://127.0.0.1:8545"),
            123,
            "0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351b"
            + "c3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace"
            + "225403",
            "0x5409ed021d9299bf6814279a6a1411a7e866a631",
        )


def test_is_valid_signature__data_not_hex_string():
    """Test that giving non-hex-string `data` raises a ValueError."""
    with pytest.raises(ValueError):
        is_valid_signature(
            Web3.HTTPProvider("http://127.0.0.1:8545"),
            "jjj",
            "0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351b"
            + "c3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace"
            + "225403",
            "0x5409ed021d9299bf6814279a6a1411a7e866a631",
        )


def test_is_valid_signature__signature_not_string():
    """Test that passng a non-string signature raises a TypeError."""
    with pytest.raises(TypeError):
        is_valid_signature(
            Web3.HTTPProvider("http://127.0.0.1:8545"),
            "0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b"
            + "0",
            123,
            "0x5409ed021d9299bf6814279a6a1411a7e866a631",
        )


def test_is_valid_signature__signature_not_hex_string():
    """Test that passing a non-hex-string signature raises a ValueError."""
    with pytest.raises(ValueError):
        is_valid_signature(
            Web3.HTTPProvider("http://127.0.0.1:8545"),
            "0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b"
            + "0",
            "jjj",
            "0x5409ed021d9299bf6814279a6a1411a7e866a631",
        )


def test_is_valid_signature__signer_address_not_string():
    """Test that giving a non-address `signer_address` raises a ValueError."""
    with pytest.raises(TypeError):
        is_valid_signature(
            Web3.HTTPProvider("http://127.0.0.1:8545"),
            "0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b"
            + "0",
            "0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351b"
            + "c3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace"
            + "225403",
            123,
        )


def test_is_valid_signature__signer_address_not_hex_string():
    """Test that giving a non-hex-str `signer_address` raises a ValueError."""
    with pytest.raises(ValueError):
        is_valid_signature(
            Web3.HTTPProvider("http://127.0.0.1:8545"),
            "0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b"
            + "0",
            "0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351b"
            + "c3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace"
            + "225403",
            "jjj",
        )


def test_is_valid_signature__signer_address_not_valid_address():
    """Test that giving a non-address for `signer_address` raises an error."""
    with pytest.raises(ValueError):
        is_valid_signature(
            Web3.HTTPProvider("http://127.0.0.1:8545"),
            "0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b"
            + "0",
            "0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351b"
            + "c3340349190569279751135161d22529dc25add4f6069af05be04cacbda2ace"
            + "225403",
            "0xff",
        )


def test_is_valid_signature__unsupported_sig_types():
    """Test that passing in a sig w/invalid type raises error.

    To induce this error, the last byte of the signature is tweaked from 03 to
    ff."""
    (is_valid, reason) = is_valid_signature(
        Web3.HTTPProvider("http://127.0.0.1:8545"),
        "0x6927e990021d23b1eb7b8789f6a6feaf98fe104bb0cf8259421b79f9a34222b0",
        "0x1B61a3ed31b43c8780e905a260a35faefcc527be7516aa11c0256729b5b351bc334"
        + "0349190569279751135161d22529dc25add4f6069af05be04cacbda2ace2254ff",
        "0x5409ed021d9299bf6814279a6a1411a7e866a631",
    )
    assert is_valid is False
    assert reason == "SIGNATURE_UNSUPPORTED"