92 lines
3.5 KiB
Python
92 lines
3.5 KiB
Python
import time
|
|
|
|
from plaid.errors import ItemError
|
|
from tests.integration.util import (
|
|
create_client,
|
|
SANDBOX_INSTITUTION,
|
|
)
|
|
|
|
access_token = None
|
|
|
|
|
|
def setup_module(module):
|
|
client = create_client()
|
|
pt_response = client.Sandbox.public_token.create(
|
|
SANDBOX_INSTITUTION, ['investments'],
|
|
transactions__start_date='2018-01-01',
|
|
transactions__end_date='2019-01-01',
|
|
)
|
|
exchange_response = client.Item.public_token.exchange(
|
|
pt_response['public_token'])
|
|
global access_token
|
|
access_token = exchange_response['access_token']
|
|
|
|
|
|
def get_investment_transactions_with_retries(client,
|
|
access_token,
|
|
start_date,
|
|
end_date,
|
|
account_ids=None,
|
|
count=None,
|
|
offset=None,
|
|
num_retries=5):
|
|
response = None
|
|
for i in range(num_retries):
|
|
try:
|
|
response = \
|
|
client.InvestmentTransactions.get(access_token,
|
|
start_date,
|
|
end_date,
|
|
account_ids=account_ids,
|
|
count=count,
|
|
offset=offset)
|
|
except ItemError as ie:
|
|
if ie.code == u'PRODUCT_NOT_READY':
|
|
time.sleep(5)
|
|
continue
|
|
else:
|
|
raise ie
|
|
break
|
|
return response
|
|
|
|
|
|
def teardown_module(module):
|
|
client = create_client()
|
|
client.Item.remove(access_token)
|
|
|
|
|
|
def test_get():
|
|
client = create_client()
|
|
|
|
response = get_investment_transactions_with_retries(client,
|
|
access_token,
|
|
'2018-01-01',
|
|
'2019-01-01',
|
|
num_retries=5)
|
|
assert response['item'] is not None
|
|
assert response['accounts'] is not None
|
|
assert response['securities'] is not None
|
|
assert response['investment_transactions'] is not None
|
|
assert response['total_investment_transactions'] is not None
|
|
|
|
# get transactions for selected accounts
|
|
account_id = response['accounts'][0]['account_id']
|
|
response = \
|
|
get_investment_transactions_with_retries(client,
|
|
access_token,
|
|
'2018-06-01',
|
|
'2019-06-01',
|
|
account_ids=[account_id],
|
|
num_retries=5)
|
|
assert response['investment_transactions'] is not None
|
|
|
|
|
|
def test_get_with_options():
|
|
client = create_client()
|
|
response = get_investment_transactions_with_retries(client,
|
|
access_token,
|
|
'2018-06-01',
|
|
'2019-06-01',
|
|
count=2,
|
|
offset=1)
|
|
assert len(response['investment_transactions']) == 2
|