fintoc 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/README.md +75 -296
  2. package/build/main/index.d.ts +3 -0
  3. package/build/main/index.js +13 -2
  4. package/build/main/interfaces/client/constructorOptions.d.ts +1 -0
  5. package/build/main/interfaces/client/index.js +6 -2
  6. package/build/main/interfaces/client/requestOptions.d.ts +1 -0
  7. package/build/main/interfaces/mixins/index.js +6 -2
  8. package/build/main/interfaces/paginator/index.js +6 -2
  9. package/build/main/interfaces/paginator/paginationOptions.d.ts +1 -0
  10. package/build/main/lib/client.d.ts +6 -1
  11. package/build/main/lib/client.js +50 -24
  12. package/build/main/lib/core.d.ts +18 -2
  13. package/build/main/lib/core.js +23 -6
  14. package/build/main/lib/errors.d.ts +2 -0
  15. package/build/main/lib/errors.js +5 -2
  16. package/build/main/lib/jws.d.ts +25 -0
  17. package/build/main/lib/jws.js +130 -0
  18. package/build/main/lib/managers/accountsManager.d.ts +4 -0
  19. package/build/main/lib/managers/accountsManager.js +7 -2
  20. package/build/main/lib/managers/index.js +6 -2
  21. package/build/main/lib/managers/invoicesManager.js +2 -2
  22. package/build/main/lib/managers/linksManager.js +2 -2
  23. package/build/main/lib/managers/movementsManager.js +2 -2
  24. package/build/main/lib/managers/paymentIntentsManager.js +2 -2
  25. package/build/main/lib/managers/refreshIntentsManager.js +2 -2
  26. package/build/main/lib/managers/subscriptionsManager.js +2 -2
  27. package/build/main/lib/managers/taxReturnsManager.js +2 -2
  28. package/build/main/lib/managers/v2/accountNumbersManager.d.ts +6 -0
  29. package/build/main/lib/managers/v2/accountNumbersManager.js +10 -0
  30. package/build/main/lib/managers/v2/accountsManager.d.ts +6 -0
  31. package/build/main/lib/managers/v2/accountsManager.js +10 -0
  32. package/build/main/lib/managers/v2/index.d.ts +4 -0
  33. package/build/main/lib/managers/v2/index.js +21 -0
  34. package/build/main/lib/managers/v2/simulateManager.d.ts +8 -0
  35. package/build/main/lib/managers/v2/simulateManager.js +15 -0
  36. package/build/main/lib/managers/v2/transfersManager.d.ts +6 -0
  37. package/build/main/lib/managers/v2/transfersManager.js +10 -0
  38. package/build/main/lib/managers/webhookEndpointsManager.js +2 -2
  39. package/build/main/lib/mixins/index.js +6 -2
  40. package/build/main/lib/mixins/managerMixin.d.ts +21 -6
  41. package/build/main/lib/mixins/managerMixin.js +35 -19
  42. package/build/main/lib/mixins/resourceMixin.js +10 -11
  43. package/build/main/lib/paginator.d.ts +1 -1
  44. package/build/main/lib/paginator.js +16 -13
  45. package/build/main/lib/resourceHandlers.d.ts +1 -1
  46. package/build/main/lib/resourceHandlers.js +15 -14
  47. package/build/main/lib/resources/account.d.ts +4 -0
  48. package/build/main/lib/resources/account.js +7 -2
  49. package/build/main/lib/resources/link.d.ts +20 -0
  50. package/build/main/lib/resources/link.js +31 -6
  51. package/build/main/lib/resources/v2/account.d.ts +3 -0
  52. package/build/main/lib/resources/v2/account.js +8 -0
  53. package/build/main/lib/resources/v2/accountNumber.d.ts +3 -0
  54. package/build/main/lib/resources/v2/accountNumber.js +8 -0
  55. package/build/main/lib/resources/v2/index.d.ts +3 -0
  56. package/build/main/lib/resources/v2/index.js +20 -0
  57. package/build/main/lib/resources/v2/transfer.d.ts +3 -0
  58. package/build/main/lib/resources/v2/transfer.js +8 -0
  59. package/build/main/lib/utils.d.ts +3 -3
  60. package/build/main/lib/utils.js +36 -23
  61. package/build/main/lib/version.js +1 -1
  62. package/build/main/lib/webhook.d.ts +17 -0
  63. package/build/main/lib/webhook.js +109 -0
  64. package/build/main/spec/client/creationFunctionality.spec.js +11 -11
  65. package/build/main/spec/client/requestFunctionality.spec.js +36 -11
  66. package/build/main/spec/core.spec.js +2 -2
  67. package/build/main/spec/integration.spec.d.ts +1 -0
  68. package/build/main/spec/integration.spec.js +587 -0
  69. package/build/main/spec/jws.spec.d.ts +1 -0
  70. package/build/main/spec/jws.spec.js +185 -0
  71. package/build/main/spec/managers/linkManagers.spec.js +5 -5
  72. package/build/main/spec/mixins/managerMixin/creation.spec.js +9 -9
  73. package/build/main/spec/mixins/managerMixin/handlers.spec.js +10 -14
  74. package/build/main/spec/mixins/managerMixin/methods.spec.js +10 -10
  75. package/build/main/spec/mixins/managerMixin/mocks/complexMockManager.d.ts +1 -1
  76. package/build/main/spec/mixins/managerMixin/mocks/complexMockManager.js +4 -4
  77. package/build/main/spec/mixins/managerMixin/mocks/emptyMockManager.js +2 -2
  78. package/build/main/spec/mixins/resourceMixin/creation.spec.js +6 -6
  79. package/build/main/spec/mixins/resourceMixin/methods.spec.js +7 -7
  80. package/build/main/spec/mixins/resourceMixin/serialization.spec.js +5 -5
  81. package/build/main/spec/mocks/client/axiosInstance.js +6 -5
  82. package/build/main/spec/mocks/client/response.d.ts +3 -0
  83. package/build/main/spec/mocks/client/response.js +8 -3
  84. package/build/main/spec/mocks/initializers.d.ts +1 -1
  85. package/build/main/spec/mocks/initializers.js +4 -5
  86. package/build/main/spec/paginator/paginate.spec.js +7 -7
  87. package/build/main/spec/paginator/parseLink.spec.js +13 -13
  88. package/build/main/spec/paginator/parseLinkHeaders.spec.js +8 -8
  89. package/build/main/spec/paginator/request.spec.js +10 -8
  90. package/build/main/spec/resources/account.spec.js +2 -2
  91. package/build/main/spec/resources/link.spec.js +6 -6
  92. package/build/main/spec/shared/utils.js +3 -4
  93. package/build/main/spec/utils/canRaiseHTTPError.spec.js +4 -4
  94. package/build/main/spec/utils/getErrorClass.spec.js +5 -5
  95. package/build/main/spec/utils/getResourceClass.spec.js +13 -13
  96. package/build/main/spec/utils/isISODate.spec.js +5 -5
  97. package/build/main/spec/utils/objetize.spec.js +14 -14
  98. package/build/main/spec/utils/objetizeGenerator.spec.js +6 -6
  99. package/build/main/spec/utils/serialize.spec.js +14 -14
  100. package/build/main/spec/utils/shared/getGenerator.js +2 -3
  101. package/build/main/spec/utils/singularize.spec.js +7 -7
  102. package/build/main/spec/utils/snakeToPascal.spec.js +7 -7
  103. package/build/main/spec/webhook.spec.d.ts +1 -0
  104. package/build/main/spec/webhook.spec.js +120 -0
  105. package/build/main/types/genericFunction.d.ts +1 -1
  106. package/build/main/types/index.js +6 -2
  107. package/build/main/types/resourceArguments.d.ts +1 -1
  108. package/build/module/index.d.ts +3 -0
  109. package/build/module/index.js +4 -1
  110. package/build/module/interfaces/client/constructorOptions.d.ts +1 -0
  111. package/build/module/interfaces/client/requestOptions.d.ts +1 -0
  112. package/build/module/interfaces/paginator/paginationOptions.d.ts +1 -0
  113. package/build/module/lib/client.d.ts +6 -1
  114. package/build/module/lib/client.js +41 -14
  115. package/build/module/lib/core.d.ts +18 -2
  116. package/build/module/lib/core.js +35 -8
  117. package/build/module/lib/errors.d.ts +2 -0
  118. package/build/module/lib/errors.js +3 -1
  119. package/build/module/lib/jws.d.ts +25 -0
  120. package/build/module/lib/jws.js +94 -0
  121. package/build/module/lib/managers/accountsManager.d.ts +4 -0
  122. package/build/module/lib/managers/accountsManager.js +8 -2
  123. package/build/module/lib/managers/invoicesManager.js +2 -2
  124. package/build/module/lib/managers/linksManager.js +2 -2
  125. package/build/module/lib/managers/movementsManager.js +2 -2
  126. package/build/module/lib/managers/paymentIntentsManager.js +2 -2
  127. package/build/module/lib/managers/refreshIntentsManager.js +2 -2
  128. package/build/module/lib/managers/subscriptionsManager.js +2 -2
  129. package/build/module/lib/managers/taxReturnsManager.js +2 -2
  130. package/build/module/lib/managers/v2/accountNumbersManager.d.ts +6 -0
  131. package/build/module/lib/managers/v2/accountNumbersManager.js +6 -0
  132. package/build/module/lib/managers/v2/accountsManager.d.ts +6 -0
  133. package/build/module/lib/managers/v2/accountsManager.js +6 -0
  134. package/build/module/lib/managers/v2/index.d.ts +4 -0
  135. package/build/module/lib/managers/v2/index.js +5 -0
  136. package/build/module/lib/managers/v2/simulateManager.d.ts +8 -0
  137. package/build/module/lib/managers/v2/simulateManager.js +11 -0
  138. package/build/module/lib/managers/v2/transfersManager.d.ts +6 -0
  139. package/build/module/lib/managers/v2/transfersManager.js +6 -0
  140. package/build/module/lib/managers/webhookEndpointsManager.js +2 -2
  141. package/build/module/lib/mixins/managerMixin.d.ts +21 -6
  142. package/build/module/lib/mixins/managerMixin.js +32 -16
  143. package/build/module/lib/mixins/resourceMixin.js +2 -3
  144. package/build/module/lib/paginator.d.ts +1 -1
  145. package/build/module/lib/paginator.js +12 -8
  146. package/build/module/lib/resourceHandlers.d.ts +1 -1
  147. package/build/module/lib/resourceHandlers.js +5 -3
  148. package/build/module/lib/resources/account.d.ts +4 -0
  149. package/build/module/lib/resources/account.js +7 -2
  150. package/build/module/lib/resources/link.d.ts +20 -0
  151. package/build/module/lib/resources/link.js +31 -6
  152. package/build/module/lib/resources/v2/account.d.ts +3 -0
  153. package/build/module/lib/resources/v2/account.js +4 -0
  154. package/build/module/lib/resources/v2/accountNumber.d.ts +3 -0
  155. package/build/module/lib/resources/v2/accountNumber.js +4 -0
  156. package/build/module/lib/resources/v2/index.d.ts +3 -0
  157. package/build/module/lib/resources/v2/index.js +4 -0
  158. package/build/module/lib/resources/v2/transfer.d.ts +3 -0
  159. package/build/module/lib/resources/v2/transfer.js +4 -0
  160. package/build/module/lib/utils.d.ts +3 -3
  161. package/build/module/lib/utils.js +1 -1
  162. package/build/module/lib/version.js +1 -1
  163. package/build/module/lib/webhook.d.ts +17 -0
  164. package/build/module/lib/webhook.js +72 -0
  165. package/build/module/spec/client/creationFunctionality.spec.js +6 -6
  166. package/build/module/spec/client/requestFunctionality.spec.js +26 -1
  167. package/build/module/spec/integration.spec.d.ts +1 -0
  168. package/build/module/spec/integration.spec.js +582 -0
  169. package/build/module/spec/jws.spec.d.ts +1 -0
  170. package/build/module/spec/jws.spec.js +147 -0
  171. package/build/module/spec/mixins/managerMixin/handlers.spec.js +6 -10
  172. package/build/module/spec/mixins/managerMixin/methods.spec.js +1 -1
  173. package/build/module/spec/mixins/managerMixin/mocks/complexMockManager.d.ts +1 -1
  174. package/build/module/spec/mixins/managerMixin/mocks/complexMockManager.js +4 -4
  175. package/build/module/spec/mixins/managerMixin/mocks/emptyMockManager.js +2 -2
  176. package/build/module/spec/mocks/client/axiosInstance.js +4 -3
  177. package/build/module/spec/mocks/client/response.d.ts +3 -0
  178. package/build/module/spec/mocks/client/response.js +9 -3
  179. package/build/module/spec/mocks/initializers.d.ts +1 -1
  180. package/build/module/spec/paginator/paginate.spec.js +2 -2
  181. package/build/module/spec/paginator/request.spec.js +6 -4
  182. package/build/module/spec/utils/objetizeGenerator.spec.js +1 -1
  183. package/build/module/spec/utils/shared/getGenerator.js +1 -1
  184. package/build/module/spec/webhook.spec.d.ts +1 -0
  185. package/build/module/spec/webhook.spec.js +115 -0
  186. package/build/module/types/genericFunction.d.ts +1 -1
  187. package/build/module/types/resourceArguments.d.ts +1 -1
  188. package/package.json +7 -7
@@ -0,0 +1,582 @@
1
+ import test from 'ava';
2
+ import { Fintoc } from '../lib/core';
3
+ import { mockAxios, restore } from './mocks/initializers';
4
+ test.before((t) => {
5
+ const ctx = t.context;
6
+ ctx.axiosMock = mockAxios();
7
+ });
8
+ test.after((t) => {
9
+ const ctx = t.context;
10
+ restore(ctx.axiosMock);
11
+ });
12
+ test.beforeEach((t) => {
13
+ const ctx = t.context;
14
+ const apiKey = 'super_secret_api_key';
15
+ ctx.fintoc = new Fintoc(apiKey);
16
+ });
17
+ test('fintoc.paymentIntents.list()', async (t) => {
18
+ const ctx = t.context;
19
+ const paymentIntents = await ctx.fintoc.paymentIntents.list();
20
+ let count = 0;
21
+ for await (const paymentIntent of paymentIntents) {
22
+ count += 1;
23
+ t.is(paymentIntent.method, 'get');
24
+ t.is(paymentIntent.url, 'v1/payment_intents');
25
+ }
26
+ t.true(count > 0);
27
+ });
28
+ test('fintoc.paymentIntents.all() - deprecated', async (t) => {
29
+ const ctx = t.context;
30
+ const paymentIntents = await ctx.fintoc.paymentIntents.all();
31
+ let count = 0;
32
+ for await (const paymentIntent of paymentIntents) {
33
+ count += 1;
34
+ t.is(paymentIntent.method, 'get');
35
+ t.is(paymentIntent.url, 'v1/payment_intents');
36
+ }
37
+ t.true(count > 0);
38
+ });
39
+ test('fintoc.paymentIntents.get()', async (t) => {
40
+ const ctx = t.context;
41
+ const paymentId = 'payment_id';
42
+ const paymentIntent = await ctx.fintoc.paymentIntents.get(paymentId);
43
+ t.is(paymentIntent.method, 'get');
44
+ t.is(paymentIntent.url, `v1/payment_intents/${paymentId}`);
45
+ });
46
+ test('fintoc.paymentIntents.create()', async (t) => {
47
+ const ctx = t.context;
48
+ const paymentData = {
49
+ amount: 1000,
50
+ currency: 'USD',
51
+ payment_method: 'bank_transfer ',
52
+ };
53
+ const paymentIntent = await ctx.fintoc.paymentIntents.create(paymentData);
54
+ t.is(paymentIntent.method, 'post');
55
+ t.is(paymentIntent.url, 'v1/payment_intents');
56
+ t.is(paymentIntent.json.amount, paymentData.amount);
57
+ t.is(paymentIntent.json.currency, paymentData.currency);
58
+ t.is(paymentIntent.json.payment_method, paymentData.payment_method);
59
+ });
60
+ test('fintoc.links.list()', async (t) => {
61
+ const ctx = t.context;
62
+ const links = await ctx.fintoc.links.list();
63
+ let count = 0;
64
+ for await (const link of links) {
65
+ count += 1;
66
+ t.is(link.method, 'get');
67
+ t.is(link.url, 'v1/links');
68
+ }
69
+ t.true(count > 0);
70
+ });
71
+ test('fintoc.links.all() - deprecated', async (t) => {
72
+ const ctx = t.context;
73
+ const links = await ctx.fintoc.links.all();
74
+ let count = 0;
75
+ for await (const link of links) {
76
+ count += 1;
77
+ t.is(link.method, 'get');
78
+ t.is(link.url, 'v1/links');
79
+ }
80
+ t.true(count > 0);
81
+ });
82
+ test('fintoc.links.get()', async (t) => {
83
+ const ctx = t.context;
84
+ const linkToken = 'link_token_example';
85
+ const link = await ctx.fintoc.links.get(linkToken);
86
+ t.is(link.method, 'get');
87
+ t.is(link.url, `v1/links/${linkToken}`);
88
+ });
89
+ test('fintoc.links.update()', async (t) => {
90
+ const ctx = t.context;
91
+ const linkToken = 'link_token_example';
92
+ const updateData = {
93
+ username: 'updated_username',
94
+ };
95
+ const link = await ctx.fintoc.links.update(linkToken, updateData);
96
+ t.is(link.method, 'patch');
97
+ t.is(link.url, `v1/links/${linkToken}`);
98
+ t.is(link.json.username, updateData.username);
99
+ });
100
+ test('fintoc.links.delete()', async (t) => {
101
+ const ctx = t.context;
102
+ const linkId = 'link_id';
103
+ const deletedIdentifier = await ctx.fintoc.links.delete(linkId);
104
+ t.is(deletedIdentifier, linkId);
105
+ });
106
+ test('fintoc.accounts.list()', async (t) => {
107
+ const ctx = t.context;
108
+ const accounts = await ctx.fintoc.accounts.list();
109
+ let count = 0;
110
+ for await (const account of accounts) {
111
+ count += 1;
112
+ t.is(account.method, 'get');
113
+ t.is(account.url, 'v1/accounts');
114
+ }
115
+ t.true(count > 0);
116
+ });
117
+ test('fintoc.accounts.all() - deprecated', async (t) => {
118
+ const ctx = t.context;
119
+ const accounts = await ctx.fintoc.accounts.all();
120
+ let count = 0;
121
+ for await (const account of accounts) {
122
+ count += 1;
123
+ t.is(account.method, 'get');
124
+ t.is(account.url, 'v1/accounts');
125
+ }
126
+ t.true(count > 0);
127
+ });
128
+ test('fintoc.accounts.get()', async (t) => {
129
+ const ctx = t.context;
130
+ const accountId = 'account_id';
131
+ const account = await ctx.fintoc.accounts.get(accountId);
132
+ t.is(account.method, 'get');
133
+ t.is(account.url, `v1/accounts/${accountId}`);
134
+ });
135
+ test('fintoc.accounts.movements.list()', async (t) => {
136
+ const ctx = t.context;
137
+ const linkToken = 'link_token_example';
138
+ const accountId = 'account_id';
139
+ const movements = await ctx.fintoc.accounts.movements.list({
140
+ account_id: accountId,
141
+ link_token: linkToken,
142
+ });
143
+ let count = 0;
144
+ for await (const movement of movements) {
145
+ count += 1;
146
+ t.is(movement.method, 'get');
147
+ t.is(movement.url, `v1/accounts/${accountId}/movements`);
148
+ t.is(movement.params.link_token, linkToken);
149
+ t.is(movement.params.account_id, accountId);
150
+ }
151
+ t.true(count > 0);
152
+ });
153
+ test('fintoc.accounts.movements.all() - deprecated', async (t) => {
154
+ const ctx = t.context;
155
+ const linkToken = 'link_token_example';
156
+ const accountId = 'account_id';
157
+ const movements = await ctx.fintoc.accounts.movements.all({
158
+ account_id: accountId,
159
+ link_token: linkToken,
160
+ });
161
+ let count = 0;
162
+ for await (const movement of movements) {
163
+ count += 1;
164
+ t.is(movement.method, 'get');
165
+ t.is(movement.url, `v1/accounts/${accountId}/movements`);
166
+ t.is(movement.params.link_token, linkToken);
167
+ t.is(movement.params.account_id, accountId);
168
+ }
169
+ t.true(count > 0);
170
+ });
171
+ test('fintoc.accounts.movements.get()', async (t) => {
172
+ const ctx = t.context;
173
+ const linkToken = 'link_token_example';
174
+ const accountId = 'account_id';
175
+ const movementId = 'movement_id';
176
+ const movement = await ctx.fintoc.accounts.movements.get(movementId, {
177
+ account_id: accountId,
178
+ link_token: linkToken,
179
+ });
180
+ t.is(movement.method, 'get');
181
+ t.is(movement.url, `v1/accounts/${accountId}/movements/${movementId}`);
182
+ t.is(movement.params.link_token, linkToken);
183
+ t.is(movement.params.account_id, accountId);
184
+ });
185
+ test('fintoc.webhookEndpoints.list()', async (t) => {
186
+ const ctx = t.context;
187
+ const webhookEndpoints = await ctx.fintoc.webhookEndpoints.list();
188
+ let count = 0;
189
+ for await (const webhookEndpoint of webhookEndpoints) {
190
+ count += 1;
191
+ t.is(webhookEndpoint.method, 'get');
192
+ t.is(webhookEndpoint.url, 'v1/webhook_endpoints');
193
+ }
194
+ t.true(count > 0);
195
+ });
196
+ test('fintoc.webhookEndpoints.all() - deprecated', async (t) => {
197
+ const ctx = t.context;
198
+ const webhookEndpoints = await ctx.fintoc.webhookEndpoints.all();
199
+ let count = 0;
200
+ for await (const webhookEndpoint of webhookEndpoints) {
201
+ count += 1;
202
+ t.is(webhookEndpoint.method, 'get');
203
+ t.is(webhookEndpoint.url, 'v1/webhook_endpoints');
204
+ }
205
+ t.true(count > 0);
206
+ });
207
+ test('fintoc.webhookEndpoints.get()', async (t) => {
208
+ const ctx = t.context;
209
+ const webhookEndpointId = 'we_example_id';
210
+ const webhookEndpoint = await ctx.fintoc.webhookEndpoints.get(webhookEndpointId);
211
+ t.is(webhookEndpoint.method, 'get');
212
+ t.is(webhookEndpoint.url, `v1/webhook_endpoints/${webhookEndpointId}`);
213
+ });
214
+ test('fintoc.webhookEndpoints.create()', async (t) => {
215
+ const ctx = t.context;
216
+ const webhookData = {
217
+ url: 'https://example.com/webhook',
218
+ enabled_events: ['payment_intent.succeeded'],
219
+ };
220
+ const webhookEndpoint = await ctx.fintoc.webhookEndpoints.create(webhookData);
221
+ t.is(webhookEndpoint.method, 'post');
222
+ t.is(webhookEndpoint.url, 'v1/webhook_endpoints');
223
+ t.is(webhookEndpoint.json.url, webhookData.url);
224
+ t.deepEqual(webhookEndpoint.json.enabled_events, webhookData.enabled_events);
225
+ });
226
+ test('fintoc.webhookEndpoints.update()', async (t) => {
227
+ const ctx = t.context;
228
+ const webhookEndpointId = 'we_example_id';
229
+ const updateData = {
230
+ enabled_events: ['payment_intent.failed', 'refund.succeeded'],
231
+ };
232
+ const webhookEndpoint = await ctx.fintoc.webhookEndpoints.update(webhookEndpointId, updateData);
233
+ t.is(webhookEndpoint.method, 'patch');
234
+ t.is(webhookEndpoint.url, `v1/webhook_endpoints/${webhookEndpointId}`);
235
+ t.deepEqual(webhookEndpoint.json.enabled_events, updateData.enabled_events);
236
+ });
237
+ test('fintoc.webhookEndpoints.delete()', async (t) => {
238
+ const ctx = t.context;
239
+ const webhookEndpointId = 'we_example_id';
240
+ const deletedIdentifier = await ctx.fintoc.webhookEndpoints.delete(webhookEndpointId);
241
+ t.is(deletedIdentifier, webhookEndpointId);
242
+ });
243
+ test('fintoc.invoices.list()', async (t) => {
244
+ const ctx = t.context;
245
+ const invoices = await ctx.fintoc.invoices.list();
246
+ let count = 0;
247
+ for await (const invoice of invoices) {
248
+ count += 1;
249
+ t.is(invoice.method, 'get');
250
+ t.is(invoice.url, 'v1/invoices');
251
+ }
252
+ t.true(count > 0);
253
+ });
254
+ test('fintoc.invoices.all() - deprecated', async (t) => {
255
+ const ctx = t.context;
256
+ const invoices = await ctx.fintoc.invoices.all();
257
+ let count = 0;
258
+ for await (const invoice of invoices) {
259
+ count += 1;
260
+ t.is(invoice.method, 'get');
261
+ t.is(invoice.url, 'v1/invoices');
262
+ }
263
+ t.true(count > 0);
264
+ });
265
+ test('fintoc.refreshIntents.list()', async (t) => {
266
+ const ctx = t.context;
267
+ const refreshIntents = await ctx.fintoc.refreshIntents.list();
268
+ let count = 0;
269
+ for await (const refreshIntent of refreshIntents) {
270
+ count += 1;
271
+ t.is(refreshIntent.method, 'get');
272
+ t.is(refreshIntent.url, 'v1/refresh_intents');
273
+ }
274
+ t.true(count > 0);
275
+ });
276
+ test('fintoc.refreshIntents.all() - deprecated', async (t) => {
277
+ const ctx = t.context;
278
+ const refreshIntents = await ctx.fintoc.refreshIntents.all();
279
+ let count = 0;
280
+ for await (const refreshIntent of refreshIntents) {
281
+ count += 1;
282
+ t.is(refreshIntent.method, 'get');
283
+ t.is(refreshIntent.url, 'v1/refresh_intents');
284
+ }
285
+ t.true(count > 0);
286
+ });
287
+ test('fintoc.refreshIntents.get()', async (t) => {
288
+ const ctx = t.context;
289
+ const refreshIntentId = 'refresh_intent_id';
290
+ const refreshIntent = await ctx.fintoc.refreshIntents.get(refreshIntentId);
291
+ t.is(refreshIntent.method, 'get');
292
+ t.is(refreshIntent.url, `v1/refresh_intents/${refreshIntentId}`);
293
+ });
294
+ test('fintoc.refreshIntents.create()', async (t) => {
295
+ const ctx = t.context;
296
+ const refreshData = {
297
+ link_token: 'link_token_example',
298
+ refresh_type: 'only_last',
299
+ };
300
+ const refreshIntent = await ctx.fintoc.refreshIntents.create(refreshData);
301
+ t.is(refreshIntent.method, 'post');
302
+ t.is(refreshIntent.url, 'v1/refresh_intents');
303
+ t.is(refreshIntent.json.link_token, refreshData.link_token);
304
+ t.is(refreshIntent.json.refresh_type, refreshData.refresh_type);
305
+ });
306
+ test('fintoc.subscriptions.list()', async (t) => {
307
+ const ctx = t.context;
308
+ const subscriptions = await ctx.fintoc.subscriptions.list();
309
+ let count = 0;
310
+ for await (const subscription of subscriptions) {
311
+ count += 1;
312
+ t.is(subscription.method, 'get');
313
+ t.is(subscription.url, 'v1/subscriptions');
314
+ }
315
+ t.true(count > 0);
316
+ });
317
+ test('fintoc.subscriptions.all() - deprecated', async (t) => {
318
+ const ctx = t.context;
319
+ const subscriptions = await ctx.fintoc.subscriptions.all();
320
+ let count = 0;
321
+ for await (const subscription of subscriptions) {
322
+ count += 1;
323
+ t.is(subscription.method, 'get');
324
+ t.is(subscription.url, 'v1/subscriptions');
325
+ }
326
+ t.true(count > 0);
327
+ });
328
+ test('fintoc.subscriptions.get()', async (t) => {
329
+ const ctx = t.context;
330
+ const subscriptionId = 'subscription_id';
331
+ const subscription = await ctx.fintoc.subscriptions.get(subscriptionId);
332
+ t.is(subscription.method, 'get');
333
+ t.is(subscription.url, `v1/subscriptions/${subscriptionId}`);
334
+ });
335
+ test('fintoc.taxReturns.list()', async (t) => {
336
+ const ctx = t.context;
337
+ const taxReturns = await ctx.fintoc.taxReturns.list();
338
+ let count = 0;
339
+ for await (const taxReturn of taxReturns) {
340
+ count += 1;
341
+ t.is(taxReturn.method, 'get');
342
+ t.is(taxReturn.url, 'v1/tax_returns');
343
+ }
344
+ t.true(count > 0);
345
+ });
346
+ test('fintoc.taxReturns.all() - deprecated', async (t) => {
347
+ const ctx = t.context;
348
+ const taxReturns = await ctx.fintoc.taxReturns.all();
349
+ let count = 0;
350
+ for await (const taxReturn of taxReturns) {
351
+ count += 1;
352
+ t.is(taxReturn.method, 'get');
353
+ t.is(taxReturn.url, 'v1/tax_returns');
354
+ }
355
+ t.true(count > 0);
356
+ });
357
+ test('fintoc.taxReturns.get()', async (t) => {
358
+ const ctx = t.context;
359
+ const taxReturnId = 'tax_return_id';
360
+ const taxReturn = await ctx.fintoc.taxReturns.get(taxReturnId);
361
+ t.is(taxReturn.method, 'get');
362
+ t.is(taxReturn.url, `v1/tax_returns/${taxReturnId}`);
363
+ });
364
+ test('link.accounts.list()', async (t) => {
365
+ const ctx = t.context;
366
+ const linkToken = 'link_token_example';
367
+ const link = await ctx.fintoc.links.get(linkToken);
368
+ const accounts = await link.accounts.list();
369
+ t.is(link.accounts._client.params.link_token, linkToken);
370
+ let count = 0;
371
+ for await (const account of accounts) {
372
+ count += 1;
373
+ t.is(account.method, 'get');
374
+ t.is(account.url, 'v1/accounts');
375
+ }
376
+ t.true(count > 0);
377
+ });
378
+ test('link.accounts.all() - deprecated', async (t) => {
379
+ const ctx = t.context;
380
+ const linkToken = 'link_token_example';
381
+ const link = await ctx.fintoc.links.get(linkToken);
382
+ const accounts = await link.accounts.all();
383
+ t.is(link.accounts._client.params.link_token, linkToken);
384
+ let count = 0;
385
+ for await (const account of accounts) {
386
+ count += 1;
387
+ t.is(account.method, 'get');
388
+ t.is(account.url, 'v1/accounts');
389
+ }
390
+ t.true(count > 0);
391
+ });
392
+ test('link.accounts.get()', async (t) => {
393
+ const ctx = t.context;
394
+ const linkToken = 'link_token_example';
395
+ const link = await ctx.fintoc.links.get(linkToken);
396
+ const accountId = 'account_id';
397
+ const account = await link.accounts.get(accountId);
398
+ t.is(account.method, 'get');
399
+ t.is(account.url, `v1/accounts/${accountId}`);
400
+ t.is(link.accounts._client.params.link_token, linkToken);
401
+ t.is(account._client.params.link_token, linkToken);
402
+ });
403
+ test('account.movements.list()', async (t) => {
404
+ const ctx = t.context;
405
+ const linkToken = 'link_token_example';
406
+ const link = await ctx.fintoc.links.get(linkToken);
407
+ const accountId = 'account_id';
408
+ const account = await link.accounts.get(accountId);
409
+ const movements = await account.movements.list();
410
+ t.is(account.movements._client.params.link_token, linkToken);
411
+ let count = 0;
412
+ for await (const movement of movements) {
413
+ count += 1;
414
+ t.is(movement.method, 'get');
415
+ t.is(movement.url, `v1/accounts/${accountId}/movements`);
416
+ t.is(movement._client.params.link_token, linkToken);
417
+ }
418
+ t.true(count > 0);
419
+ });
420
+ test('account.movements.all() - deprecated', async (t) => {
421
+ const ctx = t.context;
422
+ const linkToken = 'link_token_example';
423
+ const link = await ctx.fintoc.links.get(linkToken);
424
+ const accountId = 'account_id';
425
+ const account = await link.accounts.get(accountId);
426
+ const movements = await account.movements.all();
427
+ t.is(account.movements._client.params.link_token, linkToken);
428
+ let count = 0;
429
+ for await (const movement of movements) {
430
+ count += 1;
431
+ t.is(movement.method, 'get');
432
+ t.is(movement.url, `v1/accounts/${accountId}/movements`);
433
+ t.is(movement._client.params.link_token, linkToken);
434
+ }
435
+ t.true(count > 0);
436
+ });
437
+ test('account.movements.get()', async (t) => {
438
+ const ctx = t.context;
439
+ const linkToken = 'link_token_example';
440
+ const link = await ctx.fintoc.links.get(linkToken);
441
+ const accountId = 'account_id';
442
+ const account = await link.accounts.get(accountId);
443
+ const movementId = 'movement_id';
444
+ const movement = await account.movements.get(movementId);
445
+ t.is(movement.method, 'get');
446
+ t.is(movement.url, `v1/accounts/${accountId}/movements/${movementId}`);
447
+ t.is(movement._client.params.link_token, linkToken);
448
+ });
449
+ test('fintoc.v2.transfers.list()', async (t) => {
450
+ const ctx = t.context;
451
+ const transfers = await ctx.fintoc.v2.transfers.list();
452
+ let count = 0;
453
+ for await (const transfer of transfers) {
454
+ count += 1;
455
+ t.is(transfer.method, 'get');
456
+ t.is(transfer.url, 'v2/transfers');
457
+ }
458
+ t.true(count > 0);
459
+ });
460
+ test('fintoc.v2.transfers.get()', async (t) => {
461
+ const ctx = t.context;
462
+ const transferId = 'transfer_id';
463
+ const transfer = await ctx.fintoc.v2.transfers.get(transferId);
464
+ t.is(transfer.method, 'get');
465
+ t.is(transfer.url, `v2/transfers/${transferId}`);
466
+ });
467
+ test('fintoc.v2.transfers.create()', async (t) => {
468
+ const ctx = t.context;
469
+ const transferData = {
470
+ amount: 10000,
471
+ currency: 'MXN',
472
+ counterparty: {
473
+ account_number: '012969100000000026',
474
+ },
475
+ };
476
+ const transfer = await ctx.fintoc.v2.transfers.create(transferData);
477
+ t.is(transfer.method, 'post');
478
+ t.is(transfer.url, 'v2/transfers');
479
+ t.is(transfer.json.amount, transferData.amount);
480
+ t.is(transfer.json.currency, transferData.currency);
481
+ t.is(transfer.json.counterparty.account_number, transferData.counterparty.account_number);
482
+ t.true(transfer.headers['Idempotency-Key'] && transfer.headers['Idempotency-Key'].length > 0);
483
+ });
484
+ test('fintoc.v2.transfers.create() with idempotency key', async (t) => {
485
+ const ctx = t.context;
486
+ const transferData = {
487
+ amount: 10000,
488
+ currency: 'MXN',
489
+ idempotency_key: 'idempotency_key_123',
490
+ counterparty: {
491
+ account_number: '012969100000000026',
492
+ },
493
+ };
494
+ const transfer = await ctx.fintoc.v2.transfers.create(transferData);
495
+ t.is(transfer.method, 'post');
496
+ t.is(transfer.url, 'v2/transfers');
497
+ t.is(transfer.headers['Idempotency-Key'], transferData.idempotency_key);
498
+ });
499
+ test('fintoc.v2.accounts.list()', async (t) => {
500
+ const ctx = t.context;
501
+ const accounts = await ctx.fintoc.v2.accounts.list();
502
+ let count = 0;
503
+ for await (const account of accounts) {
504
+ count += 1;
505
+ t.is(account.method, 'get');
506
+ t.is(account.url, 'v2/accounts');
507
+ }
508
+ t.true(count > 0);
509
+ });
510
+ test('fintoc.v2.accounts.get()', async (t) => {
511
+ const ctx = t.context;
512
+ const accountId = 'account_id';
513
+ const account = await ctx.fintoc.v2.accounts.get(accountId);
514
+ t.is(account.method, 'get');
515
+ t.is(account.url, `v2/accounts/${accountId}`);
516
+ });
517
+ test('fintoc.v2.accounts.create()', async (t) => {
518
+ const ctx = t.context;
519
+ const accountData = {
520
+ description: 'Test Account',
521
+ };
522
+ const account = await ctx.fintoc.v2.accounts.create(accountData);
523
+ t.is(account.method, 'post');
524
+ t.is(account.url, 'v2/accounts');
525
+ t.is(account.json.description, accountData.description);
526
+ });
527
+ test('fintoc.v2.accountNumbers.list()', async (t) => {
528
+ const ctx = t.context;
529
+ const accountNumbers = await ctx.fintoc.v2.accountNumbers.list();
530
+ let count = 0;
531
+ for await (const accountNumber of accountNumbers) {
532
+ count += 1;
533
+ t.is(accountNumber.method, 'get');
534
+ t.is(accountNumber.url, 'v2/account_numbers');
535
+ }
536
+ t.true(count > 0);
537
+ });
538
+ test('fintoc.v2.accountNumbers.get()', async (t) => {
539
+ const ctx = t.context;
540
+ const accountNumberId = 'account_number_id';
541
+ const accountNumber = await ctx.fintoc.v2.accountNumbers.get(accountNumberId);
542
+ t.is(accountNumber.method, 'get');
543
+ t.is(accountNumber.url, `v2/account_numbers/${accountNumberId}`);
544
+ });
545
+ test('fintoc.v2.accountNumbers.create()', async (t) => {
546
+ const ctx = t.context;
547
+ const accountNumberData = {
548
+ account_id: 'account_123',
549
+ description: 'test acc number',
550
+ };
551
+ const accountNumber = await ctx.fintoc.v2.accountNumbers.create(accountNumberData);
552
+ t.is(accountNumber.method, 'post');
553
+ t.is(accountNumber.url, 'v2/account_numbers');
554
+ t.is(accountNumber.json.account_id, accountNumberData.account_id);
555
+ t.is(accountNumber.json.description, accountNumberData.description);
556
+ });
557
+ test('fintoc.v2.accountNumbers.update()', async (t) => {
558
+ const ctx = t.context;
559
+ const accountNumberId = 'account_number_id';
560
+ const updateData = {
561
+ status: 'enabled',
562
+ };
563
+ const accountNumber = await ctx.fintoc.v2.accountNumbers.update(accountNumberId, updateData);
564
+ t.is(accountNumber.method, 'patch');
565
+ t.is(accountNumber.url, `v2/account_numbers/${accountNumberId}`);
566
+ t.is(accountNumber.json.status, updateData.status);
567
+ });
568
+ test('fintoc.v2.simulate.receiveTransfer()', async (t) => {
569
+ const ctx = t.context;
570
+ const transferData = {
571
+ amount: 50000,
572
+ currency: 'MXN',
573
+ account_number_id: 'account_number_123',
574
+ };
575
+ const result = await ctx.fintoc.v2.simulate.receiveTransfer(transferData);
576
+ t.is(result.method, 'post');
577
+ t.is(result.url, 'v2/simulate/receive_transfer');
578
+ t.is(result.json.amount, transferData.amount);
579
+ t.is(result.json.currency, transferData.currency);
580
+ t.is(result.json.account_number_id, transferData.account_number_id);
581
+ });
582
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZWdyYXRpb24uc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zcGVjL2ludGVncmF0aW9uLnNwZWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sS0FBSyxDQUFDO0FBRXZCLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUxRCxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDaEIsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixHQUFHLENBQUMsU0FBUyxHQUFHLFNBQVMsRUFBRSxDQUFDO0FBQzlCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ2YsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3pCLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0lBQ3BCLE1BQU0sR0FBRyxHQUFRLENBQUMsQ0FBQyxPQUFPLENBQUM7SUFDM0IsTUFBTSxNQUFNLEdBQUcsc0JBQXNCLENBQUM7SUFDdEMsR0FBRyxDQUFDLE1BQU0sR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsQyxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw4QkFBOEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDL0MsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixNQUFNLGNBQWMsR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLElB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RSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDO0lBRTVDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNwQixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsTUFBTSxHQUFHLEdBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUMzQixNQUFNLEtBQUssR0FBRyxNQUFNLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBRTNDLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztJQUNkLElBQUksS0FBSyxFQUFFLE1BQU0sSUFBSSxJQUFJLEtBQUssRUFBRSxDQUFDO1FBQy9CLEtBQUssSUFBSSxDQUFDLENBQUM7UUFDWCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDekIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxD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
@@ -0,0 +1 @@
1
+ export {};