mailgun.js 5.0.3 → 5.1.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 (314) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +15 -3
  3. package/client.d.ts +29 -0
  4. package/domains.d.ts +54 -0
  5. package/domainsCredentials.d.ts +14 -0
  6. package/domainsTags.d.ts +34 -0
  7. package/domainsTemplates.d.ts +35 -0
  8. package/error.d.ts +7 -0
  9. package/events.d.ts +13 -0
  10. package/index.d.ts +9 -0
  11. package/interfaces/APIErrorOptions.d.ts +11 -0
  12. package/{lib/interfaces/ApiResponse.ts → interfaces/ApiResponse.d.ts} +1 -2
  13. package/{lib/interfaces/DomainCredentials.ts → interfaces/DomainCredentials.d.ts} +14 -30
  14. package/{lib/interfaces/DomainTags.ts → interfaces/DomainTags.d.ts} +49 -82
  15. package/{lib/interfaces/DomainTemplates.ts → interfaces/DomainTemplates.d.ts} +35 -79
  16. package/{lib/interfaces/DomainTracking.ts → interfaces/DomainTracking.d.ts} +18 -17
  17. package/{lib/interfaces/Domains.ts → interfaces/Domains.d.ts} +29 -50
  18. package/{lib/interfaces/Events.ts → interfaces/Events.d.ts} +11 -12
  19. package/{lib/interfaces/IFormData.ts → interfaces/IFormData.d.ts} +2 -4
  20. package/interfaces/IMailgunClient.d.ts +24 -0
  21. package/interfaces/IpPools.d.ts +19 -0
  22. package/interfaces/Ips.d.ts +10 -0
  23. package/interfaces/Messages.d.ts +165 -0
  24. package/{lib/interfaces/MultipleValidation.ts → interfaces/MultipleValidation.d.ts} +9 -16
  25. package/interfaces/Options.d.ts +8 -0
  26. package/{lib/interfaces/RequestOptions.ts → interfaces/RequestOptions.d.ts} +2 -4
  27. package/interfaces/StatsOptions.d.ts +22 -0
  28. package/interfaces/Supressions.d.ts +103 -0
  29. package/{lib/interfaces/Validate.ts → interfaces/Validate.d.ts} +0 -3
  30. package/{lib/interfaces/Webhooks.ts → interfaces/Webhooks.d.ts} +11 -17
  31. package/{lib/interfaces/lists.ts → interfaces/lists.d.ts} +1 -5
  32. package/{lib/interfaces/mailListMembers.ts → interfaces/mailListMembers.d.ts} +8 -23
  33. package/{lib/interfaces/routes.ts → interfaces/routes.d.ts} +1 -6
  34. package/ip-pools.d.ts +21 -0
  35. package/ips.d.ts +9 -0
  36. package/lists.d.ts +14 -0
  37. package/mailListMembers.d.ts +14 -0
  38. package/mailgun.node.js +3 -0
  39. package/{dist/mailgun.node.js.LICENSE.txt → mailgun.node.js.LICENSE.txt} +1 -1
  40. package/mailgun.web.js +3 -0
  41. package/{dist/mailgun.web.js.LICENSE.txt → mailgun.web.js.LICENSE.txt} +1 -1
  42. package/messages.d.ts +8 -0
  43. package/multipleValidation.d.ts +10 -0
  44. package/package.json +8 -81
  45. package/request.d.ts +31 -0
  46. package/routes.d.ts +11 -0
  47. package/stats.d.ts +20 -0
  48. package/suppressions.d.ts +50 -0
  49. package/validate.d.ts +9 -0
  50. package/version.md +1 -0
  51. package/webhooks.d.ts +32 -0
  52. package/.editorconfig +0 -10
  53. package/.eslintrc +0 -56
  54. package/.husky/commit-msg +0 -4
  55. package/.travis.yml +0 -5
  56. package/LICENSE +0 -191
  57. package/commitlint.config.js +0 -7
  58. package/dist/mailgun.js.d.ts +0 -1586
  59. package/dist/mailgun.node.js +0 -3
  60. package/dist/mailgun.web.js +0 -3
  61. package/docs/.nojekyll +0 -1
  62. package/docs/assets/highlight.css +0 -127
  63. package/docs/assets/icons.css +0 -1043
  64. package/docs/assets/icons.png +0 -0
  65. package/docs/assets/icons@2x.png +0 -0
  66. package/docs/assets/main.js +0 -52
  67. package/docs/assets/search.js +0 -1
  68. package/docs/assets/style.css +0 -1413
  69. package/docs/assets/widgets.png +0 -0
  70. package/docs/assets/widgets@2x.png +0 -0
  71. package/docs/classes/client.default.html +0 -1
  72. package/docs/classes/domains.Domain.html +0 -1
  73. package/docs/classes/domains.default.html +0 -1
  74. package/docs/classes/domainsCredentials.default.html +0 -1
  75. package/docs/classes/domainsTemplates.DomainTemplateItem.html +0 -1
  76. package/docs/classes/domainsTemplates.default.html +0 -1
  77. package/docs/classes/error.default.html +0 -6
  78. package/docs/classes/events.default.html +0 -1
  79. package/docs/classes/ip_pools.default.html +0 -1
  80. package/docs/classes/ips.default.html +0 -1
  81. package/docs/classes/lists.default.html +0 -1
  82. package/docs/classes/mailListMembers.default.html +0 -1
  83. package/docs/classes/messages.default.html +0 -1
  84. package/docs/classes/multipleValidation.default.html +0 -1
  85. package/docs/classes/request.default.html +0 -1
  86. package/docs/classes/routes.default.html +0 -1
  87. package/docs/classes/stats.default.html +0 -1
  88. package/docs/classes/suppressions.default.html +0 -1
  89. package/docs/classes/validate.default.html +0 -1
  90. package/docs/classes/webhooks.default.html +0 -1
  91. package/docs/enums/interfaces_DomainTemplates.Pages.html +0 -1
  92. package/docs/enums/interfaces_DomainTemplates.YesNo.html +0 -1
  93. package/docs/index.html +0 -1140
  94. package/docs/interfaces/interfaces_APIErrorOptions.default.html +0 -1
  95. package/docs/interfaces/interfaces_ApiResponse.default.html +0 -1
  96. package/docs/interfaces/interfaces_DomainCredentials.CreatedUpdatedDomainCredentialsResponse.html +0 -1
  97. package/docs/interfaces/interfaces_DomainCredentials.DeletedDomainCredentialsResponse.html +0 -1
  98. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentials.html +0 -1
  99. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsItem.html +0 -1
  100. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsList.html +0 -1
  101. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsQuery.html +0 -1
  102. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResponseData.html +0 -1
  103. package/docs/interfaces/interfaces_DomainCredentials.DomainCredentialsResult.html +0 -1
  104. package/docs/interfaces/interfaces_DomainCredentials.IDomainCredentials.html +0 -1
  105. package/docs/interfaces/interfaces_DomainCredentials.UpdateDomainCredentialsData.html +0 -1
  106. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateAPIResponse.html +0 -1
  107. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionAPIResponse.html +0 -1
  108. package/docs/interfaces/interfaces_DomainTemplates.CreateDomainTemplateVersionResult.html +0 -1
  109. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplate.html +0 -1
  110. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateData.html +0 -1
  111. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateData.html +0 -1
  112. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateUpdateVersionData.html +0 -1
  113. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplateVersionData.html +0 -1
  114. package/docs/interfaces/interfaces_DomainTemplates.DomainTemplatesQuery.html +0 -1
  115. package/docs/interfaces/interfaces_DomainTemplates.GetDomainTemplateAPIResponse.html +0 -1
  116. package/docs/interfaces/interfaces_DomainTemplates.IDomainTemplatesClient.html +0 -1
  117. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsAPIResponse.html +0 -1
  118. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplateVersionsResult.html +0 -1
  119. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesAPIResponse.html +0 -1
  120. package/docs/interfaces/interfaces_DomainTemplates.ListDomainTemplatesResult.html +0 -1
  121. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionAPIResponse.html +0 -1
  122. package/docs/interfaces/interfaces_DomainTemplates.MutateDomainTemplateVersionResult.html +0 -1
  123. package/docs/interfaces/interfaces_DomainTemplates.NotificationAPIResponse.html +0 -1
  124. package/docs/interfaces/interfaces_DomainTemplates.NotificationResult.html +0 -1
  125. package/docs/interfaces/interfaces_DomainTemplates.ShortTemplateVersion.html +0 -1
  126. package/docs/interfaces/interfaces_DomainTemplates.TemplateQuery.html +0 -1
  127. package/docs/interfaces/interfaces_DomainTemplates.TemplateVersion.html +0 -1
  128. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateAPIResponse.html +0 -1
  129. package/docs/interfaces/interfaces_DomainTemplates.UpdateOrDeleteDomainTemplateResult.html +0 -1
  130. package/docs/interfaces/interfaces_DomainTracking.ClickTrackingInfo.html +0 -1
  131. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingData.html +0 -1
  132. package/docs/interfaces/interfaces_DomainTracking.DomainTrackingResponse.html +0 -1
  133. package/docs/interfaces/interfaces_DomainTracking.OpenTrackingInfo.html +0 -1
  134. package/docs/interfaces/interfaces_DomainTracking.UnsubscribeTrackingInfo.html +0 -1
  135. package/docs/interfaces/interfaces_DomainTracking.UpdateDomainTrackingResponse.html +0 -1
  136. package/docs/interfaces/interfaces_DomainTracking.UpdatedOpenTracking.html +0 -1
  137. package/docs/interfaces/interfaces_Domains.ConnectionSettings.html +0 -1
  138. package/docs/interfaces/interfaces_Domains.ConnectionSettingsResponse.html +0 -1
  139. package/docs/interfaces/interfaces_Domains.DKIMAuthorityInfo.html +0 -1
  140. package/docs/interfaces/interfaces_Domains.DKIMSelectorInfo.html +0 -1
  141. package/docs/interfaces/interfaces_Domains.DNSRecord.html +0 -1
  142. package/docs/interfaces/interfaces_Domains.DestroyedDomainResponse.html +0 -1
  143. package/docs/interfaces/interfaces_Domains.DomainData.html +0 -1
  144. package/docs/interfaces/interfaces_Domains.DomainInfo.html +0 -1
  145. package/docs/interfaces/interfaces_Domains.DomainListResponseData.html +0 -1
  146. package/docs/interfaces/interfaces_Domains.DomainResponseData.html +0 -1
  147. package/docs/interfaces/interfaces_Domains.DomainShortData.html +0 -1
  148. package/docs/interfaces/interfaces_Domains.DomainsListItem.html +0 -1
  149. package/docs/interfaces/interfaces_Domains.DomainsQuery.html +0 -1
  150. package/docs/interfaces/interfaces_Domains.MessageResponse.html +0 -1
  151. package/docs/interfaces/interfaces_Domains.ReplacementForPool.html +0 -1
  152. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettings.html +0 -1
  153. package/docs/interfaces/interfaces_Domains.UpdatedConnectionSettingsRes.html +0 -1
  154. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthority.html +0 -1
  155. package/docs/interfaces/interfaces_Domains.UpdatedDKIMAuthorityResponse.html +0 -1
  156. package/docs/interfaces/interfaces_Domains.UpdatedDKIMSelectorResponse.html +0 -1
  157. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefix.html +0 -1
  158. package/docs/interfaces/interfaces_Domains.UpdatedWebPrefixResponse.html +0 -1
  159. package/docs/interfaces/interfaces_Domains.WebPrefixInfo.html +0 -1
  160. package/docs/interfaces/interfaces_Events.DomainEvent.html +0 -1
  161. package/docs/interfaces/interfaces_Events.EventsList.html +0 -1
  162. package/docs/interfaces/interfaces_Events.EventsPage.html +0 -1
  163. package/docs/interfaces/interfaces_Events.EventsResponse.html +0 -1
  164. package/docs/interfaces/interfaces_Events.PagesList.html +0 -1
  165. package/docs/interfaces/interfaces_Events.PagesListAccumulator.html +0 -1
  166. package/docs/interfaces/interfaces_Events.ParsedPage.html +0 -1
  167. package/docs/interfaces/interfaces_Events.ParsedPagesList.html +0 -1
  168. package/docs/interfaces/interfaces_IFormData.IFormDataOptions.html +0 -1
  169. package/docs/interfaces/interfaces_IFormData.InputFormData.html +0 -1
  170. package/docs/interfaces/interfaces_IpPools.IpPool.html +0 -1
  171. package/docs/interfaces/interfaces_IpPools.IpPoolListResponse.html +0 -1
  172. package/docs/interfaces/interfaces_IpPools.IpPoolUpdateData.html +0 -1
  173. package/docs/interfaces/interfaces_Ips.IpData.html +0 -1
  174. package/docs/interfaces/interfaces_Ips.IpsListResponseBody.html +0 -1
  175. package/docs/interfaces/interfaces_MultipleValidation.CanceledMultipleValidationJob.html +0 -1
  176. package/docs/interfaces/interfaces_MultipleValidation.CreatedMultipleValidationJob.html +0 -1
  177. package/docs/interfaces/interfaces_MultipleValidation.IMultipleValidationClient.html +0 -1
  178. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJob.html +0 -1
  179. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResponse.html +0 -1
  180. package/docs/interfaces/interfaces_MultipleValidation.MultipleValidationJobsListResult.html +0 -1
  181. package/docs/interfaces/interfaces_MultipleValidation.PagesList.html +0 -1
  182. package/docs/interfaces/interfaces_Options.default.html +0 -1
  183. package/docs/interfaces/interfaces_RequestOptions.default.html +0 -1
  184. package/docs/interfaces/interfaces_StatsOptions.Stat.html +0 -1
  185. package/docs/interfaces/interfaces_StatsOptions.StatsOptions.html +0 -1
  186. package/docs/interfaces/interfaces_StatsOptions.StatsQuery.html +0 -1
  187. package/docs/interfaces/interfaces_Supressions.BounceData.html +0 -1
  188. package/docs/interfaces/interfaces_Supressions.ComplaintData.html +0 -1
  189. package/docs/interfaces/interfaces_Supressions.UnsubscribeData.html +0 -1
  190. package/docs/interfaces/interfaces_Supressions.WhiteListData.html +0 -1
  191. package/docs/interfaces/interfaces_Validate.ValidationResponse.html +0 -1
  192. package/docs/interfaces/interfaces_Validate.ValidationResult.html +0 -1
  193. package/docs/interfaces/interfaces_Webhooks.APIWebhook.html +0 -1
  194. package/docs/interfaces/interfaces_Webhooks.ValidationResponse.html +0 -1
  195. package/docs/interfaces/interfaces_Webhooks.WebhookList.html +0 -1
  196. package/docs/interfaces/interfaces_Webhooks.WebhookResponse.html +0 -1
  197. package/docs/interfaces/interfaces_Webhooks.WebhookResponseBody.html +0 -1
  198. package/docs/interfaces/interfaces_Webhooks.WebhooksQuery.html +0 -1
  199. package/docs/interfaces/interfaces_lists.CreateUpdateList.html +0 -1
  200. package/docs/interfaces/interfaces_lists.DestroyedList.html +0 -1
  201. package/docs/interfaces/interfaces_lists.ListsQuery.html +0 -1
  202. package/docs/interfaces/interfaces_lists.MailingList.html +0 -1
  203. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembers.html +0 -1
  204. package/docs/interfaces/interfaces_mailListMembers.CreateUpdateMailListMembersReq.html +0 -1
  205. package/docs/interfaces/interfaces_mailListMembers.DeletedMember.html +0 -1
  206. package/docs/interfaces/interfaces_mailListMembers.IMailListsMembers.html +0 -1
  207. package/docs/interfaces/interfaces_mailListMembers.MailListMember.html +0 -1
  208. package/docs/interfaces/interfaces_mailListMembers.MailListMembersQuery.html +0 -1
  209. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersData.html +0 -1
  210. package/docs/interfaces/interfaces_mailListMembers.MultipleMembersReqData.html +0 -1
  211. package/docs/interfaces/interfaces_mailListMembers.NewMultipleMembersResponse.html +0 -1
  212. package/docs/interfaces/interfaces_routes.CreateUpdateRouteData.html +0 -1
  213. package/docs/interfaces/interfaces_routes.DestroyRouteResponse.html +0 -1
  214. package/docs/interfaces/interfaces_routes.Route.html +0 -1
  215. package/docs/interfaces/interfaces_routes.RoutesListQuery.html +0 -1
  216. package/docs/interfaces/interfaces_routes.UpdateRouteResponse.html +0 -1
  217. package/docs/modules/client.html +0 -1
  218. package/docs/modules/domains.html +0 -1
  219. package/docs/modules/domainsCredentials.html +0 -1
  220. package/docs/modules/domainsTemplates.html +0 -1
  221. package/docs/modules/error.html +0 -1
  222. package/docs/modules/events.html +0 -1
  223. package/docs/modules/interfaces_APIErrorOptions.html +0 -1
  224. package/docs/modules/interfaces_ApiResponse.html +0 -1
  225. package/docs/modules/interfaces_DomainCredentials.html +0 -1
  226. package/docs/modules/interfaces_DomainTemplates.html +0 -1
  227. package/docs/modules/interfaces_DomainTracking.html +0 -1
  228. package/docs/modules/interfaces_Domains.html +0 -1
  229. package/docs/modules/interfaces_Events.html +0 -1
  230. package/docs/modules/interfaces_IFormData.html +0 -1
  231. package/docs/modules/interfaces_IpPools.html +0 -1
  232. package/docs/modules/interfaces_Ips.html +0 -1
  233. package/docs/modules/interfaces_MultipleValidation.html +0 -1
  234. package/docs/modules/interfaces_Options.html +0 -1
  235. package/docs/modules/interfaces_RequestOptions.html +0 -1
  236. package/docs/modules/interfaces_StatsOptions.html +0 -1
  237. package/docs/modules/interfaces_Supressions.html +0 -1
  238. package/docs/modules/interfaces_Validate.html +0 -1
  239. package/docs/modules/interfaces_Webhooks.html +0 -1
  240. package/docs/modules/interfaces_lists.html +0 -1
  241. package/docs/modules/interfaces_mailListMembers.html +0 -1
  242. package/docs/modules/interfaces_routes.html +0 -1
  243. package/docs/modules/ip_pools.html +0 -1
  244. package/docs/modules/ips.html +0 -1
  245. package/docs/modules/lists.html +0 -1
  246. package/docs/modules/mailListMembers.html +0 -1
  247. package/docs/modules/messages.html +0 -1
  248. package/docs/modules/multipleValidation.html +0 -1
  249. package/docs/modules/request.html +0 -1
  250. package/docs/modules/routes.html +0 -1
  251. package/docs/modules/stats.html +0 -1
  252. package/docs/modules/suppressions.html +0 -1
  253. package/docs/modules/validate.html +0 -1
  254. package/docs/modules/webhooks.html +0 -1
  255. package/docs/modules.html +0 -1
  256. package/dts-bundle.js +0 -8
  257. package/examples/addresses.js +0 -20
  258. package/examples/index.html +0 -285
  259. package/examples/list-domains.js +0 -8
  260. package/examples/mailgun.png +0 -0
  261. package/examples/rackspace.png +0 -0
  262. package/examples/send-email.js +0 -24
  263. package/lib/client.ts +0 -79
  264. package/lib/domains.ts +0 -224
  265. package/lib/domainsCredentials.ts +0 -88
  266. package/lib/domainsTags.ts +0 -165
  267. package/lib/domainsTemplates.ts +0 -235
  268. package/lib/error.ts +0 -22
  269. package/lib/events.ts +0 -54
  270. package/lib/index.ts +0 -16
  271. package/lib/interfaces/APIErrorOptions.ts +0 -10
  272. package/lib/interfaces/IpPools.ts +0 -22
  273. package/lib/interfaces/Ips.ts +0 -12
  274. package/lib/interfaces/Options.ts +0 -10
  275. package/lib/interfaces/StatsOptions.ts +0 -25
  276. package/lib/interfaces/Supressions.ts +0 -123
  277. package/lib/ip-pools.ts +0 -36
  278. package/lib/ips.ts +0 -24
  279. package/lib/lists.ts +0 -45
  280. package/lib/mailListMembers.ts +0 -83
  281. package/lib/messages.ts +0 -27
  282. package/lib/multipleValidation.ts +0 -37
  283. package/lib/request.ts +0 -271
  284. package/lib/routes.ts +0 -37
  285. package/lib/stats.ts +0 -62
  286. package/lib/suppressions.ts +0 -253
  287. package/lib/validate.ts +0 -20
  288. package/lib/webhooks.ts +0 -83
  289. package/test/client.test.ts +0 -96
  290. package/test/data/emailsValidation1.csv +0 -3
  291. package/test/domains.test.ts +0 -313
  292. package/test/domainsCredentials.test.ts +0 -97
  293. package/test/domainsTags.test.ts +0 -345
  294. package/test/domainsTemplates.test.ts +0 -392
  295. package/test/error.test.ts +0 -32
  296. package/test/events.test.ts +0 -104
  297. package/test/img/mailgun.png +0 -0
  298. package/test/ips.test.ts +0 -57
  299. package/test/lists.test.ts +0 -100
  300. package/test/mailListMembers.test.ts +0 -198
  301. package/test/messageAttachment.test.ts +0 -50
  302. package/test/messages.test.ts +0 -89
  303. package/test/multipleValidation.test.ts +0 -159
  304. package/test/request.test.ts +0 -103
  305. package/test/routes.test.ts +0 -136
  306. package/test/stats.test.ts +0 -90
  307. package/test/suppressions.test.ts +0 -303
  308. package/test/validate.test.ts +0 -43
  309. package/test/webhooks.test.ts +0 -112
  310. package/tsconfig.json +0 -22
  311. package/tsconfig.webpack.json +0 -10
  312. package/webpack/webpack.common.config.js +0 -46
  313. package/webpack/webpack.dev.config.js +0 -36
  314. package/webpack/webpack.release.config.js +0 -45
@@ -1,198 +0,0 @@
1
- import nock from 'nock';
2
- import formData from 'form-data';
3
- import Request from '../lib/request';
4
- import RequestOptions from '../lib/interfaces/RequestOptions';
5
- import MailListMembers from '../lib/mailListMembers';
6
- import { DeletedMember, MailListMember, NewMultipleMembersResponse } from '../lib/interfaces/mailListMembers';
7
- import { InputFormData } from '../lib/interfaces/IFormData';
8
-
9
- describe('mailListsMembersClient', function () {
10
- let client: any;
11
- let api: any;
12
- let defaultListMember : MailListMember;
13
-
14
- beforeEach(function () {
15
- const reqObject = new Request({ url: 'https://api.mailgun.net' } as RequestOptions, formData as InputFormData);
16
- client = new MailListMembers(reqObject);
17
- api = nock('https://api.mailgun.net');
18
- defaultListMember = {
19
- address: 'testingMailingListMemberAddress@example.com',
20
- name: 'test name',
21
- subscribed: true,
22
- vars: { gender: 'female', age: 0 }
23
- } as MailListMember;
24
- });
25
-
26
- afterEach(function () {
27
- api.done();
28
- });
29
-
30
- describe('listMembers', function () {
31
- it('fetches all mail list members', function () {
32
- const lists = [defaultListMember];
33
-
34
- api.get('/v3/lists/list-name/members/pages').reply(200, {
35
- items: lists
36
- });
37
-
38
- return client.listMembers('list-name').then(function (membersList: MailListMember[]) {
39
- membersList[0].should.eql(defaultListMember);
40
- });
41
- });
42
- });
43
-
44
- describe('getMember', function () {
45
- it('gets a specific mailing list member', function () {
46
- const mailingListAddress = 'testingMailingListAddress@example.com';
47
- const mailingListMemberAddress = 'testingMailingListMemberAddress@example.com';
48
- api.get(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, {
49
- member: defaultListMember
50
- });
51
-
52
- return client.getMember('testingMailingListAddress@example.com', 'testingMailingListMemberAddress@example.com')
53
- .then(function (listMember: MailListMember) {
54
- listMember.should.eql(defaultListMember);
55
- });
56
- });
57
- });
58
-
59
- describe('createMember', function () {
60
- it('adds list member to the mailing list ', function () {
61
- const member:any = { ...defaultListMember };
62
- member.subscribed = true;
63
- const mailingListAddress = 'testingMailingListAddress@example.com';
64
- api.post(`/v3/lists/${mailingListAddress}/members`).reply(200, {
65
- member
66
- });
67
-
68
- return client.createMember(mailingListAddress, member).then(function (newListMember:any) {
69
- newListMember.should.eql(member);
70
- });
71
- });
72
-
73
- it('works with string value in subscribed field', function () {
74
- const member:any = { ...defaultListMember };
75
- member.subscribed = 'yes';
76
- const mailingListAddress = 'testingMailingListAddress@example.com';
77
- api.post(`/v3/lists/${mailingListAddress}/members`).reply(200, {
78
- member
79
- });
80
-
81
- return client.createMember(mailingListAddress, member).then(function (newListMember:any) {
82
- newListMember.should.eql(member);
83
- });
84
- });
85
- });
86
-
87
- describe('createMembers', function () {
88
- const mailingListAddress = 'testingMailingListAddress@example.com';
89
- let response : NewMultipleMembersResponse;
90
-
91
- beforeEach(function () {
92
- response = {
93
- list: {
94
- access_level: 'everyone',
95
- address: mailingListAddress,
96
- created_at: 'Wed, 26 May 2021 10:40:06 -0000',
97
- description: 'test description',
98
- members_count: 5,
99
- name: 'test name',
100
- reply_preference: 'list'
101
- },
102
- message: 'Mailing list has been updated',
103
- 'task-id': '00000000000000000000000000000000'
104
- };
105
- });
106
-
107
- it('adds list of members to the mailing list', function () {
108
- const newMembersListPlaceholder = new Array(5).fill(0);
109
- const newMembersList = newMembersListPlaceholder.map((_, index) => ({
110
- address: `test${index}@example.com`,
111
- name: `test name ${index}`,
112
- vars: { gender: 'female', age: index },
113
- subscribed: true,
114
- upsert: 'yes'
115
- }));
116
-
117
- api.post(`/v3/lists/${mailingListAddress}/members.json`).reply(200, response);
118
-
119
- return client.createMembers(mailingListAddress, {
120
- members: newMembersList,
121
- upsert: 'yes'
122
- }).then(function (result: NewMultipleMembersResponse) {
123
- result.should.eql(response);
124
- });
125
- });
126
-
127
- it('works with string value in members field', function () {
128
- const newMembersListPlaceholder = new Array(5).fill(0);
129
- const newMembersList = newMembersListPlaceholder.map((_, index) => ({
130
- address: `test${index}@example.com`,
131
- name: `test name ${index}`,
132
- vars: JSON.stringify({ gender: 'female', age: index }),
133
- subscribed: true,
134
- upsert: 'yes'
135
-
136
- }));
137
- api.post(`/v3/lists/${mailingListAddress}/members.json`).reply(200, response);
138
- return client.createMembers(mailingListAddress, {
139
- members: newMembersList,
140
- upsert: 'yes'
141
- }).then(function (result: NewMultipleMembersResponse) {
142
- result.should.eql(response);
143
- });
144
- });
145
- });
146
-
147
- describe('updateMember', function () {
148
- it('updates list member in the mailing list ', function () {
149
- const mailingListAddress = 'testingMailingListAddress@example.com';
150
- const mailingListMemberAddress = 'testingMailingListMemberAddress@example.com';
151
- api.put(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, { member: defaultListMember });
152
-
153
- return client.updateMember(
154
- mailingListAddress,
155
- mailingListMemberAddress,
156
- defaultListMember
157
- ).then(function (res: MailListMember) {
158
- res.should.eql(defaultListMember);
159
- });
160
- });
161
-
162
- it('works with string value in subscribed field', function () {
163
- const mailingListAddress = 'testingMailingListAddress@example.com';
164
- const mailingListMemberAddress = 'testingMailingListMemberAddress@example.com';
165
- const member: any = { ...defaultListMember };
166
- member.subscribed = 'yes';
167
- api.put(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, { member: defaultListMember });
168
-
169
- return client.updateMember(
170
- mailingListAddress,
171
- mailingListMemberAddress,
172
- member
173
- ).then(function (res: MailListMember) {
174
- res.should.eql(defaultListMember);
175
- });
176
- });
177
- });
178
-
179
- describe('destroyMember', function () {
180
- it('deletes member from the list ', function () {
181
- const mailingListAddress = 'testingMailingListAddress@example.com';
182
- const mailingListMemberAddress = 'testingMailingListMemberAddress@example.com';
183
- const res = {
184
- member: defaultListMember,
185
- message: 'deleted'
186
- } as DeletedMember;
187
-
188
- api.delete(`/v3/lists/${mailingListAddress}/members/${mailingListMemberAddress}`).reply(200, res);
189
-
190
- return client.destroyMember(
191
- mailingListAddress,
192
- mailingListMemberAddress
193
- ).then(function (deletedMemberRes: DeletedMember) {
194
- deletedMemberRes.should.eql(res);
195
- });
196
- });
197
- });
198
- });
@@ -1,50 +0,0 @@
1
- import fs from 'fs';
2
- import nock from 'nock';
3
- import { expect } from 'chai';
4
- import formData from 'form-data';
5
-
6
- import Request from '../lib/request';
7
- import MessagesClient from '../lib/messages';
8
- import RequestOptions from '../lib/interfaces/RequestOptions';
9
- import { InputFormData } from '../lib/interfaces/IFormData';
10
-
11
- const mailgunLogo = fs.createReadStream(`${__dirname}/img/mailgun.png`);
12
-
13
- describe('MessagesClient', function () {
14
- let client: any;
15
- let api: any;
16
-
17
- beforeEach(function () {
18
- client = new MessagesClient(new Request({ url: 'https://api.mailgun.net' } as RequestOptions, formData as InputFormData));
19
- api = nock('https://api.mailgun.net');
20
- });
21
-
22
- afterEach(function () {
23
- nock.cleanAll();
24
- nock.restore();
25
- if (!nock.isActive()) nock.activate();
26
- api.done();
27
- });
28
-
29
- describe('create with attachments', function () {
30
- it('sends a custom attachment', async function () {
31
- api.post('/v3/sandbox.mailgun.org/messages').reply(200, {
32
- message: 'Queued. Thank you.',
33
- id: '<20111114174239.25659.5817@samples.mailgun.org>'
34
- });
35
-
36
- const res = await client.create('sandbox.mailgun.org', {
37
- to: 'foo@example.com',
38
- from: 'bar@example.com',
39
- subject: 'howdy!',
40
- text: 'Testing some Mailgun awesomeness!',
41
- attachment: [{
42
- filename: 'test-image',
43
- data: mailgunLogo
44
- }]
45
- });
46
-
47
- expect(res.message).to.eql('Queued. Thank you.');
48
- });
49
- });
50
- });
@@ -1,89 +0,0 @@
1
- import formData from 'form-data'; // importing this way to not have type error in line 13
2
-
3
- import fs from 'fs';
4
- import nock from 'nock';
5
- import { expect } from 'chai';
6
-
7
- import Request from '../lib/request';
8
- import MessagesClient from '../lib/messages';
9
- import RequestOptions from '../lib/interfaces/RequestOptions';
10
- import { InputFormData } from '../lib/interfaces/IFormData';
11
-
12
- const mailgunLogo = fs.createReadStream(`${__dirname}/img/mailgun.png`);
13
-
14
- describe('MessagesClient', function () {
15
- let client: any;
16
- let api: any;
17
-
18
- beforeEach(function () {
19
- client = new MessagesClient(new Request({ url: 'https://api.mailgun.net' } as RequestOptions, formData as InputFormData));
20
- api = nock('https://api.mailgun.net');
21
- });
22
-
23
- afterEach(function () {
24
- api.done();
25
- });
26
-
27
- describe('create', function () {
28
- it('sends an email', function () {
29
- api.post('/v3/sandbox.mailgun.org/messages').reply(200, {
30
- message: 'Queued. Thank you.',
31
- id: '<20111114174239.25659.5817@samples.mailgun.org>'
32
- });
33
-
34
- return client.create('sandbox.mailgun.org', {
35
- to: 'foo@example.com',
36
- from: 'bar@example.com',
37
- subject: 'howdy!',
38
- text: 'ello world!'
39
- }).then(function (data: { message: string }) {
40
- expect(data.message).to.eql('Queued. Thank you.');
41
- });
42
- });
43
-
44
- it('returns error messages', function () {
45
- api.post('/v3/sandbox.mailgun.org/messages').reply(400, 'Missing parameter \'to\'.');
46
-
47
- return client.create('sandbox.mailgun.org', {
48
- from: 'bar@example.com',
49
- subject: 'howdy!',
50
- text: 'ello world!'
51
- }).catch(function (data: { details: string }) {
52
- expect(data.details).to.eql('Missing parameter \'to\'.');
53
- });
54
- });
55
-
56
- it('sends a mime email', function () {
57
- api.post('/v3/sandbox.mailgun.org/messages.mime').reply(200, {
58
- message: 'Queued. Thank you.',
59
- id: '<20111114174239.25659.5817@samples.mailgun.org>'
60
- });
61
-
62
- return client.create('sandbox.mailgun.org', {
63
- to: 'foo@example.com',
64
- from: 'bar@example.com',
65
- subject: 'howdy!',
66
- message: 'ello world!'
67
- }).then(function (data: { message: string }) {
68
- expect(data.message).to.eql('Queued. Thank you.');
69
- });
70
- });
71
-
72
- it('sends an attachment', function () {
73
- api.post('/v3/sandbox.mailgun.org/messages').reply(200, {
74
- message: 'Queued. Thank you.',
75
- id: '<20111114174239.25659.5817@samples.mailgun.org>'
76
- });
77
-
78
- return client.create('sandbox.mailgun.org', {
79
- to: 'foo@example.com',
80
- from: 'bar@example.com',
81
- subject: 'howdy!',
82
- text: 'Testing some Mailgun awesomeness!',
83
- attachment: [mailgunLogo]
84
- }).then(function (data: { message: string }) {
85
- expect(data.message).to.eql('Queued. Thank you.');
86
- });
87
- });
88
- });
89
- });
@@ -1,159 +0,0 @@
1
- import formData from 'form-data';
2
- import fs from 'fs';
3
- import path from 'path';
4
-
5
- import nock from 'nock';
6
- import Request from '../lib/request';
7
- import RequestOptions from '../lib/interfaces/RequestOptions';
8
- import { InputFormData } from '../lib/interfaces/IFormData';
9
- import MultipleValidationClient from '../lib/multipleValidation';
10
- import {
11
- CanceledMultipleValidationJob,
12
- CreatedMultipleValidationJob,
13
- MultipleValidationJob,
14
- MultipleValidationJobsListResult
15
- } from '../lib/interfaces/MultipleValidation';
16
-
17
- const filepath = path.resolve(__dirname, './data/emailsValidation1.csv');
18
-
19
- describe('ValidateClient', function () {
20
- const fsPromises = fs.promises;
21
- let client: MultipleValidationClient;
22
- let api: nock.Scope;
23
-
24
- beforeEach(function () {
25
- const reqObject = new Request({ url: 'https://api.mailgun.net' } as RequestOptions, formData as InputFormData);
26
- client = new MultipleValidationClient(reqObject);
27
- api = nock('https://api.mailgun.net');
28
- });
29
-
30
- afterEach(function () {
31
- api.done();
32
- });
33
-
34
- describe('List', function () {
35
- it('should provide list of all bulk validation jobs', function () {
36
- const data = {
37
- jobs: [
38
- {
39
- created_at: 1636716764,
40
- download_url: {
41
- csv: 'csv-url',
42
- json: 'json-url'
43
- },
44
- id: 'testValidationList',
45
- quantity: 40,
46
- records_processed: 40,
47
- status: 'uploaded',
48
- summary: {
49
- result: {
50
- catch_all: 0,
51
- deliverable: 2,
52
- do_not_send: 0,
53
- undeliverable: 16,
54
- unknown: 22
55
- },
56
- risk: {
57
- high: 16,
58
- low: 2,
59
- medium: 0,
60
- unknown: 22
61
- }
62
- }
63
- }
64
- ],
65
- paging: {
66
- first: 'https://api.mailgun.net/v4/address/validate/bulk?limit=100&page=first&pivot=',
67
- last: 'https://api.mailgun.net/v4/address/validate/bulk?limit=100&page=last&pivot=',
68
- next: 'https://api.mailgun.net/v4/address/validate/bulk?limit=100&page=next&pivot=',
69
- prev: 'https://api.mailgun.net/v4/address/validate/bulk?limit=100&page=prev&pivot='
70
- },
71
- total: 1
72
- };
73
-
74
- api.get('/v4/address/validate/bulk')
75
- .reply(200, data);
76
-
77
- return client.list().then(function (response: MultipleValidationJobsListResult) {
78
- response.should.eql(data);
79
- });
80
- });
81
- });
82
-
83
- describe('get', function () {
84
- it('should returns status of a bulk validation job.', function () {
85
- const listId = 'testValidationList';
86
- const data = {
87
- created_at: 1636716764,
88
- download_url: {
89
- csv: 'csv-url',
90
- json: 'json-url'
91
- },
92
- id: listId,
93
- quantity: 40,
94
- records_processed: 40,
95
- status: 'uploaded',
96
- summary: {
97
- result: {
98
- catch_all: 0,
99
- deliverable: 2,
100
- do_not_send: 0,
101
- undeliverable: 16,
102
- unknown: 22
103
- },
104
- risk: {
105
- high: 16,
106
- low: 2,
107
- medium: 0,
108
- unknown: 22
109
- }
110
- }
111
- };
112
-
113
- api.get(`/v4/address/validate/bulk/${listId}`)
114
- .reply(200, data);
115
-
116
- return client.get(listId).then(function (response: MultipleValidationJob) {
117
- response.should.eql(data);
118
- });
119
- });
120
- });
121
-
122
- describe('create', function () {
123
- it('Creates a bulk validation job.', async function () {
124
- const listId = 'testValidationList';
125
- const data = {
126
- id: 'testValidationList',
127
- message: 'The validation job was submitted.'
128
- };
129
- const file = {
130
- filename: 'test.jpg',
131
- data: await fsPromises.readFile(filepath)
132
- };
133
- api.post(`/v4/address/validate/bulk/${listId}`)
134
- .reply(200, data);
135
-
136
- return client.create(listId, { file })
137
- .then(function (response: CreatedMultipleValidationJob) {
138
- response.should.eql(data);
139
- });
140
- });
141
- });
142
-
143
- describe('destroy', function () {
144
- it('should cancel current running bulk validation job.', async function () {
145
- const listId = 'testValidationList';
146
- const data = {
147
- body: { message: 'Validation job canceled.' },
148
- status: 200
149
- };
150
- api.delete(`/v4/address/validate/bulk/${listId}`)
151
- .reply(200, { message: 'Validation job canceled.' });
152
-
153
- return client.destroy(listId)
154
- .then(function (response: CanceledMultipleValidationJob) {
155
- response.should.eql(data);
156
- });
157
- });
158
- });
159
- });
@@ -1,103 +0,0 @@
1
- // jscs:disable requireDotNotation
2
- import formData from 'form-data';
3
-
4
- import base64 from 'base-64';
5
- import nock from 'nock';
6
- import { expect } from 'chai';
7
- import Request from '../lib/request';
8
- import RequestOptions from '../lib/interfaces/RequestOptions';
9
- import APIError from '../lib/error';
10
- import APIResponse from '../lib/interfaces/ApiResponse';
11
- import { InputFormData } from '../lib/interfaces/IFormData';
12
-
13
- describe('Request', function () {
14
- let headers: { [key: string]: string };
15
-
16
- beforeEach(function () {
17
- headers = {};
18
- headers.Authorization = `Basic ${base64.encode('api:key')}`;
19
- });
20
-
21
- describe('request', function () {
22
- it('makes API request', async function () {
23
- headers.Test = 'Custom Header';
24
- headers['X-CSRF-Token'] = 'protectme';
25
-
26
- nock('https://api.mailgun.com', { reqheaders: headers })
27
- .get('/v2/some/resource1')
28
- .query({ some: 'parameter' })
29
- .reply(200, {});
30
-
31
- const req = new Request({
32
- username: 'api',
33
- key: 'key',
34
- url: 'https://api.mailgun.com',
35
- headers: { 'X-CSRF-Token': 'protectme' },
36
- timeout: 10000
37
- }, formData as InputFormData);
38
-
39
- await req.request('get', '/v2/some/resource1', {
40
- headers: { Test: 'Custom Header', 'X-CSRF-Token': 'protectme' },
41
- query: { some: 'parameter' }
42
- });
43
- });
44
-
45
- it('parses API response', function () {
46
- nock('https://api.mailgun.com', { reqheaders: headers })
47
- .get('/v2/some/resource')
48
- .reply(200, { id: 1, message: 'hello' });
49
-
50
- const req = new Request({ username: 'api', key: 'key', url: 'https://api.mailgun.com' } as RequestOptions, formData as InputFormData);
51
- const res = req.request('get', '/v2/some/resource')
52
- .then(function (response: APIResponse) {
53
- expect(response.status).to.eql(200);
54
- expect(response.body).to.eql({ id: 1, message: 'hello' });
55
- });
56
-
57
- return res;
58
- });
59
-
60
- it('handles API error', function () {
61
- nock('https://api.mailgun.com', { reqheaders: headers })
62
- .get('/v2/some/resource')
63
- .reply(429, 'Too many requests');
64
-
65
- const req = new Request({ username: 'api', key: 'key', url: 'https://api.mailgun.com' } as RequestOptions, formData as InputFormData);
66
- const res = req.request('get', '/v2/some/resource').catch(function (error: APIError) {
67
- expect(error.status).to.eql(429);
68
- expect(error.details).to.eql('Too many requests');
69
- });
70
-
71
- return res;
72
- });
73
- });
74
-
75
- describe('query', function () {
76
- const search = { query: 'data' };
77
-
78
- it('sends data as query parameter', async function () {
79
- nock('https://api.mailgun.com')
80
- .get('/v2/some/resource2')
81
- .query(search)
82
- .reply(200, {});
83
-
84
- const req = new Request({ url: 'https://api.mailgun.com' } as RequestOptions, formData as InputFormData);
85
- await req.query('get', '/v2/some/resource2', search);
86
- });
87
- });
88
-
89
- describe('command', function () {
90
- const body = { query: 'data' };
91
-
92
- it('sends data as form-encoded request body', function () {
93
- nock('https://api.mailgun.com')
94
- .post('/v2/some/resource')
95
- .reply(200, {});
96
-
97
- const req = new Request({ url: 'https://api.mailgun.com' } as RequestOptions, formData as InputFormData);
98
- const res = req.command('post', '/v2/some/resource', body);
99
-
100
- return res;
101
- });
102
- });
103
- });