Passed
Pull Request — main (#19)
by Switcheolytics
01:07
created

TestTradeHubUtils.setUp()   A

Complexity

Conditions 1

Size

Total Lines 3
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 3
nop 1
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
import tradehub.utils as utils
2
from tests import APITestCase, NEO_ADDRESS, NEO_CONTRACT, ETH_ADDRESS, ETH_CONTRACT, WEB3_API_URL
3
4
5
class TestTradeHubUtils(APITestCase):
6
7
    def setUp(self) -> None:
8
        self.r = utils.Request(api_url='https://jsonplaceholder.typicode.com/')
9
        self.s = utils.Request()
10
11
    def test_request_get(self):
12
        json_msg = {
13
            "userId": 1,
14
            "id": 1,
15
            "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
16
            "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"}
17
        self.assertDictEqual(self.r.get(path='/posts/1'), json_msg)
18
19
    def test_request_post(self):
20
        json_dict = {
21
            'title': 'foo',
22
            'body': 'bar',
23
            'userId': 1}
24
        json_msg = {
25
            'id': 101,
26
            'title': 'foo',
27
            'body': 'bar',
28
            'userId': 1}
29
        self.assertDictEqual(self.r.post(path='/posts', json_data=json_dict), json_msg)
30
31
    def test_request_status(self):
32
        expect: dict = {
33
            "jsonrpc": str,
34
            "id": int,
35
            "result": {
36
                "node_info": {
37
                    "protocol_version": {
38
                        "p2p": str,
39
                        "block":  str,
40
                        "app":  str,
41
                    },
42
                    "id": str,
43
                    "listen_addr": str,
44
                    "network": str,
45
                    "version": str,
46
                    "channels": str,
47
                    "moniker": str,
48
                    "other": {
49
                        "tx_index": str,
50
                        "rpc_address": str,
51
                    }
52
                },
53
                "sync_info": {
54
                    "latest_block_hash": str,
55
                    "latest_app_hash": str,
56
                    "latest_block_height": str,
57
                    "latest_block_time": str,
58
                    "earliest_block_hash": str,
59
                    "earliest_app_hash": str,
60
                    "earliest_block_height": str,
61
                    "earliest_block_time": str,
62
                    "catching_up": bool
63
                },
64
                "validator_info": {
65
                    "address": str,
66
                    "pub_key": {
67
                        "type": str,
68
                        "value": str,
69
                    },
70
                    "voting_power": str,
71
                }
72
            }
73
        }
74
75
        self.assertDictStructure(expect, self.s.status())
76
77
    def test_sort_and_stringify_json(self):
78
        json_msg = {"name": "John Smith", "age": 27, "siblings": ["Jane", "Joe"]}
79
        stringify_msg = '{"age":27,"name":"John Smith","siblings":["Jane","Joe"]}'
80
        self.assertEqual(utils.sort_and_stringify_json(json_msg), stringify_msg)
81
82
    def test_to_tradehub_asset_amount(self):
83
        self.assertEqual(utils.to_tradehub_asset_amount(amount=float('123.4567')), '12345670000')
84
        self.assertEqual(utils.to_tradehub_asset_amount(amount=float('123.4567'), decimals=16), '1234567000000000000')
85
86
    def test_reverse_hex(self):
87
        self.assertEqual(utils.reverse_hex('ABCD'), 'CDAB')
88
        self.assertEqual(utils.reverse_hex('0000000005f5e100'), '00e1f50500000000')
89
90
    def test_is_valid_neo_public_address(self):
91
        self.assertTrue(utils.is_valid_neo_public_address(address=NEO_ADDRESS))
92
        self.assertFalse(utils.is_valid_neo_public_address(address=NEO_CONTRACT))
93
94
    def test_neo_get_scripthash_from_address(self):
95
        self.assertEqual(utils.neo_get_scripthash_from_address(address=NEO_ADDRESS), 'fea2b883725ef2d194c9060f606cd0a0468a2c59')
96
97
    def test_is_eth_contract(self):
98
        self.assertTrue(utils.is_eth_contract(address=ETH_CONTRACT,
99
                                              web3_uri=WEB3_API_URL))
100
        self.assertFalse(utils.is_eth_contract(address=ETH_ADDRESS,
101
                                               web3_uri=WEB3_API_URL))
102
103
    def test_format_withdraw_address(self):
104
        valid_neo_address = utils.format_withdraw_address(address=NEO_ADDRESS, blockchain='neo')
105
        self.assertEqual(valid_neo_address, '592c8a46a0d06c600f06c994d1f25e7283b8a2fe')
106
        with self.assertRaises(ValueError):
107
            utils.format_withdraw_address(address=NEO_CONTRACT, blockchain='neo')
108
        valid_eth_address = utils.format_withdraw_address(address=ETH_ADDRESS, blockchain='eth', web3_uri=WEB3_API_URL)
109
        self.assertEqual(valid_eth_address, '32c46323b51c977814E05EF5E258Ee4da0E4c3c3')
110
        with self.assertRaises(ValueError):
111
            utils.format_withdraw_address(address=ETH_CONTRACT, blockchain='eth', web3_uri=WEB3_API_URL)
112