Skip to content

Commit 22d1dbc

Browse files
Merge pull request #42 from hyperwallet/feature/DTRUNETWO-308-V3-Transfer-Refunds
added get list transfer and transfer methods
2 parents e77aa7d + bec6709 commit 22d1dbc

4 files changed

Lines changed: 176 additions & 1 deletion

File tree

hyperwallet/api.py

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2934,6 +2934,108 @@ def lockUser(self,
29342934
data
29352935
)
29362936

2937+
'''
2938+
2939+
Get Transfer Refund
2940+
2941+
'''
2942+
2943+
def getTransferRefund(self,
2944+
transferToken=None,
2945+
refundToken=None):
2946+
2947+
'''
2948+
Get a Transfer Refund.
2949+
:param transferToken:
2950+
A token identifying the Transfer. **REQUIRED**
2951+
:param refundToken:
2952+
A token identifying Transfer Refund . **REQUIRED**
2953+
:returns:
2954+
Get Transfer Refund.
2955+
'''
2956+
2957+
if not transferToken:
2958+
raise HyperwalletException('transferToken is required')
2959+
2960+
if not refundToken:
2961+
raise HyperwalletException('refundToken is required')
2962+
2963+
response = self.apiClient.doGet(
2964+
self.__buildUrl(
2965+
'transfers',
2966+
transferToken,
2967+
'refunds',
2968+
refundToken
2969+
)
2970+
)
2971+
2972+
return TransferRefunds(response)
2973+
2974+
'''
2975+
2976+
List Transfer Refunds
2977+
2978+
'''
2979+
2980+
def listTransferRefunds(self,
2981+
transferToken=None,
2982+
params=None):
2983+
2984+
'''
2985+
List a Transfer Refund.
2986+
:param transferToken:
2987+
A token identifying the Transfer. **REQUIRED**
2988+
:returns:
2989+
List Transfer Refund.
2990+
'''
2991+
2992+
if not transferToken:
2993+
raise HyperwalletException('transferToken is required')
2994+
2995+
if params and not TransferRefunds.filter_array >= params.keys():
2996+
raise HyperwalletException('Invalid filter')
2997+
2998+
response = self.apiClient.doGet(
2999+
self.__buildUrl(
3000+
'transfers',
3001+
transferToken,
3002+
'refunds'
3003+
),
3004+
params
3005+
)
3006+
3007+
return TransferRefunds(response)
3008+
3009+
'''
3010+
List Transfer Methods
3011+
'''
3012+
3013+
def listTransferMethods(self,
3014+
userToken=None,
3015+
params=None):
3016+
3017+
'''
3018+
List a Transfer Methods.
3019+
:param userToken:
3020+
A token identifying the Transfer. **REQUIRED**
3021+
:returns:
3022+
List Transfer Methods.
3023+
'''
3024+
3025+
if not userToken:
3026+
raise HyperwalletException('userToken is required')
3027+
3028+
response = self.apiClient.doGet(
3029+
self.__buildUrl(
3030+
'users',
3031+
userToken,
3032+
'transfer-methods'
3033+
),
3034+
params
3035+
)
3036+
3037+
return TransferMethod(response)
3038+
29373039
'''
29383040
29393041
Get Transfer Status Transition

hyperwallet/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -819,6 +819,8 @@ class TransferRefunds(HyperwalletModel):
819819
A dictionary containing the attributes for the Transfer Refunds.
820820
'''
821821

822+
filter_array = {'clientRefundId', 'sourceToken', 'destinationTokens'}
823+
822824
def __init__(self, data):
823825
'''
824826
Create a new Transfer Refunds with the provided attributes.

hyperwallet/tests/test_api.py

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,6 +2394,77 @@ def test_list_transfer_status_transitions_success(self, mock_get):
23942394

23952395
self.assertTrue(response.token, self.data.get('token'))
23962396

2397+
'''
2398+
2399+
Get Transfer Refunds
2400+
2401+
'''
2402+
2403+
def test_get_transfer_refund_fail_need_transfer_token(self):
2404+
2405+
with self.assertRaises(HyperwalletException) as exc:
2406+
self.api.getTransferRefund()
2407+
2408+
self.assertEqual(exc.exception.message, 'transferToken is required')
2409+
2410+
def test_get_transfer_refund_fail_need_refund_token(self):
2411+
2412+
with self.assertRaises(HyperwalletException) as exc:
2413+
self.api.getTransferRefund('token')
2414+
2415+
self.assertEqual(exc.exception.message, 'refundToken is required')
2416+
2417+
@mock.patch('hyperwallet.utils.ApiClient._makeRequest')
2418+
def test_get_transfer_refund_success(self, mock_get):
2419+
2420+
mock_get.return_value = self.data
2421+
response = self.api.getTransferRefund('token', 'token')
2422+
2423+
self.assertTrue(response.token, self.data.get('token'))
2424+
2425+
'''
2426+
2427+
List Transfer Refunds
2428+
2429+
'''
2430+
2431+
def test_list_transfer_refunds_fail_need_transfer_token(self):
2432+
2433+
with self.assertRaises(HyperwalletException) as exc:
2434+
self.api.listTransferRefunds()
2435+
2436+
self.assertEqual(exc.exception.message, 'transferToken is required')
2437+
2438+
@mock.patch('hyperwallet.utils.ApiClient._makeRequest')
2439+
def test_list_transfer_refunds_success(self, mock_get):
2440+
2441+
options = {'clientRefundId': 'test'}
2442+
mock_get.return_value = self.data
2443+
response = self.api.listTransferRefunds('token', options)
2444+
2445+
self.assertTrue(response.token, self.data.get('token'))
2446+
2447+
'''
2448+
2449+
List Transfer Methods
2450+
2451+
'''
2452+
2453+
def test_list_transfer_methods_fail_need_user_token(self):
2454+
2455+
with self.assertRaises(HyperwalletException) as exc:
2456+
self.api.listTransferMethods()
2457+
2458+
self.assertEqual(exc.exception.message, 'userToken is required')
2459+
2460+
@mock.patch('hyperwallet.utils.ApiClient._makeRequest')
2461+
def test_list_transfer_methods_success(self, mock_get):
2462+
2463+
mock_get.return_value = self.data
2464+
response = self.api.listTransferMethods('token')
2465+
2466+
self.assertTrue(response.token, self.data.get('token'))
2467+
23972468

23982469
if __name__ == '__main__':
23992470
unittest.main()

hyperwallet/utils/apiclient.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def __init__(self, username, password, server, encryptionData=None):
5454
self.server = server
5555

5656
# The complete base URL of the API.
57-
self.baseUrl = urljoin(self.server, '/rest/v4/')
57+
self.baseUrl = urljoin(self.server, '/rest/v3/')
5858

5959
# The default connection to persist authentication and SSL settings.
6060
defaultSession = requests.Session()

0 commit comments

Comments
 (0)