Skip to content

Commit f3bc5d8

Browse files
authored
feat: contracts endpoint (#137)
1 parent a094348 commit f3bc5d8

File tree

3 files changed

+49
-0
lines changed

3 files changed

+49
-0
lines changed

client/api/contracts.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
from client.resource import Resource
2+
3+
4+
class Contracts(Resource):
5+
6+
def all(self):
7+
return self.with_endpoint('api').request_get('contracts')
8+
9+
def abi(self, name: str, implementation: str):
10+
return self.with_endpoint('api').request_get(f'contracts/{name}/{implementation}/abi')

client/client.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from typing import Union
2+
from client.api.contracts import Contracts
23
from client.connection import ClientHosts, Connection
34
from client.api.api_nodes import ApiNodes
45
from client.api.blockchain import Blockchain
@@ -54,6 +55,14 @@ def commits(self):
5455
"""
5556
return Commits(self.connection)
5657

58+
@property
59+
def contracts(self):
60+
"""
61+
:return: contracts API
62+
:rtype: client.api.contracts.Contracts
63+
"""
64+
return Contracts(self.connection)
65+
5766
@property
5867
def evm(self):
5968
"""

tests/api/test_contracts.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import responses
2+
from client import ArkClient
3+
4+
5+
def test_all_calls_correct_url():
6+
responses.add(
7+
responses.GET,
8+
'http://127.0.0.1:4002/api/contracts',
9+
json={'success': True},
10+
status=200
11+
)
12+
13+
client = ArkClient('http://127.0.0.1:4002/api')
14+
client.contracts.all()
15+
assert len(responses.calls) == 1
16+
assert responses.calls[0].request.url == 'http://127.0.0.1:4002/api/contracts'
17+
18+
19+
def test_abi_calls_correct_url():
20+
responses.add(
21+
responses.GET,
22+
'http://127.0.0.1:4002/api/contracts/consensus/some-address/abi',
23+
json={'success': True},
24+
status=200
25+
)
26+
27+
client = ArkClient('http://127.0.0.1:4002/api')
28+
client.contracts.abi('consensus', 'some-address')
29+
assert len(responses.calls) == 1
30+
assert responses.calls[0].request.url == 'http://127.0.0.1:4002/api/contracts/consensus/some-address/abi'

0 commit comments

Comments
 (0)