Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions client/api/tokens.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
from client.resource import Resource


class Tokens(Resource):

def all(self, page=None, limit=100):
params = {
'page': page,
'limit': limit,
}
return self.with_endpoint('api').request_get('tokens', params)

def get(self, address):
return self.with_endpoint('api').request_get(
f'tokens/{address}'
)

def holders(self, address, page=None, limit=100):
params = {
'page': page,
'limit': limit,
}
return self.with_endpoint('api').request_get(
f'tokens/{address}/holders', params
)

def transfers_by_token(self, address, page=None, limit=100):
params = {
'page': page,
'limit': limit,
}
return self.with_endpoint('api').request_get(
f'tokens/{address}/transfers', params
)

def transfers(self, page=None, limit=100):
params = {
'page': page,
'limit': limit,
}
return self.with_endpoint('api').request_get(
'tokens/transfers', params
)
9 changes: 9 additions & 0 deletions client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
from client.api.peers import Peers
from client.api.receipts import Receipts
from client.api.rounds import Rounds
from client.api.tokens import Tokens
from client.api.transactions import Transactions
from client.api.votes import Votes
from client.api.wallets import Wallets
Expand Down Expand Up @@ -103,6 +104,14 @@ def rounds(self):
"""
return Rounds(self.connection)

@property
def tokens(self):
"""
:return: Tokens API
:rtype: client.api.tokens.Tokens
"""
return Tokens(self.connection)

@property
def transactions(self):
"""
Expand Down
156 changes: 156 additions & 0 deletions tests/api/test_tokens.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
import responses

from client import ArkClient


def test_all_calls_correct_url_with_default_params():
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens',
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.all()
assert len(responses.calls) == 1
assert responses.calls[0].request.url == 'http://127.0.0.1:4002/api/tokens?limit=100'


def test_all_calls_correct_url_with_passed_in_params():
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens',
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.all(page=5, limit=69)
assert len(responses.calls) == 1
assert responses.calls[0].request.url.startswith('http://127.0.0.1:4002/api/tokens?')
assert 'page=5' in responses.calls[0].request.url
assert 'limit=69' in responses.calls[0].request.url


def test_get_calls_correct_url():
address = '0x1234567890abcdef'
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens/{}'.format(address),
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.get(address)
assert len(responses.calls) == 1
assert responses.calls[0].request.url == (
'http://127.0.0.1:4002/api/tokens/0x1234567890abcdef'
)


def test_holders_calls_correct_url_with_default_params():
address = '0x1234567890abcdef'
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens/{}/holders'.format(address),
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.holders(address)
assert len(responses.calls) == 1
assert responses.calls[0].request.url == (
'http://127.0.0.1:4002/api/tokens/0x1234567890abcdef/holders?limit=100'
)


def test_holders_calls_correct_url_with_passed_in_params():
address = '0x1234567890abcdef'
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens/{}/holders'.format(address),
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.holders(address, page=3, limit=50)
assert len(responses.calls) == 1
assert responses.calls[0].request.url.startswith(
'http://127.0.0.1:4002/api/tokens/0x1234567890abcdef/holders?'
)
assert 'page=3' in responses.calls[0].request.url
assert 'limit=50' in responses.calls[0].request.url


def test_transfers_by_token_calls_correct_url_with_default_params():
address = '0x1234567890abcdef'
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens/{}/transfers'.format(address),
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.transfers_by_token(address)
assert len(responses.calls) == 1
assert responses.calls[0].request.url == (
'http://127.0.0.1:4002/api/tokens/0x1234567890abcdef/transfers?limit=100'
)


def test_transfers_by_token_calls_correct_url_with_passed_in_params():
address = '0x1234567890abcdef'
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens/{}/transfers'.format(address),
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.transfers_by_token(address, page=2, limit=25)
assert len(responses.calls) == 1
assert responses.calls[0].request.url.startswith(
'http://127.0.0.1:4002/api/tokens/0x1234567890abcdef/transfers?'
)
assert 'page=2' in responses.calls[0].request.url
assert 'limit=25' in responses.calls[0].request.url


def test_transfers_calls_correct_url_with_default_params():
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens/transfers',
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.transfers()
assert len(responses.calls) == 1
assert responses.calls[0].request.url == (
'http://127.0.0.1:4002/api/tokens/transfers?limit=100'
)


def test_transfers_calls_correct_url_with_passed_in_params():
responses.add(
responses.GET,
'http://127.0.0.1:4002/api/tokens/transfers',
json={'success': True},
status=200
)

client = ArkClient('http://127.0.0.1:4002/api')
client.tokens.transfers(page=1, limit=10)
assert len(responses.calls) == 1
assert responses.calls[0].request.url.startswith(
'http://127.0.0.1:4002/api/tokens/transfers?'
)
assert 'page=1' in responses.calls[0].request.url
assert 'limit=10' in responses.calls[0].request.url