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