1 |
|
2 | var API_TOKEN = process.env.MJ_API_TOKEN
|
3 | var API_PUBLIC_KEY = process.env.MJ_APIKEY_PUBLIC
|
4 | var API_PRIVATE_KEY = process.env.MJ_APIKEY_PRIVATE
|
5 |
|
6 | var Mailjet = require('../mailjet-client')
|
7 | var chai = require('chai')
|
8 | var expect = chai.expect
|
9 | var should = chai.should()
|
10 | var Promise = require('bluebird')
|
11 |
|
12 | describe('Basic Error Handling', function () {
|
13 | API_TOKEN = API_TOKEN || '#invalidToken'
|
14 | API_PUBLIC_KEY = API_PUBLIC_KEY || '#invalidPublicKey'
|
15 | API_PRIVATE_KEY = API_PRIVATE_KEY || '#invalidPrivateKey'
|
16 |
|
17 | const AUTH_ERROR_MESSAGE = 'API key authentication/authorization failure. You may be unauthorized to access the API or your API key may be expired. Visit API keys management section to check your keys.'
|
18 | const AUTH_V3_ERROR_MESSAGE = 'Unauthorized'
|
19 | const AUTH_ERROR_CODE = 401
|
20 |
|
21 | describe('no auth data provided', function () {
|
22 | it('no api key provided', function () {
|
23 | try {
|
24 | Mailjet.connect()
|
25 | } catch (error) {
|
26 | expect(error.message).to.equal('Mailjet API_KEY is required')
|
27 | }
|
28 | })
|
29 |
|
30 | it('no api secret provided', function () {
|
31 | try {
|
32 | Mailjet.connect(null, { url: 'api.mailjet.com' })
|
33 | } catch (error) {
|
34 | expect(error.message).to.equal('Mailjet API_TOKEN is required')
|
35 | }
|
36 | })
|
37 |
|
38 | it('no api api token provided', function () {
|
39 | try {
|
40 | Mailjet.connect('1234')
|
41 | } catch (error) {
|
42 | expect(error.message).to.equal('Mailjet API_SECRET is required')
|
43 | }
|
44 | })
|
45 | })
|
46 |
|
47 | describe('invalid token', function () {
|
48 | var v4Config = {
|
49 | 'url': 'api.mailjet.com',
|
50 | 'version': 'v4',
|
51 | 'output': 'json',
|
52 | 'perform_api_call': true
|
53 | }
|
54 | var v4Client = Mailjet.connect(API_TOKEN, v4Config)
|
55 |
|
56 | describe('get', function () {
|
57 |
|
58 | var smsGet = v4Client.get('sms')
|
59 |
|
60 | it('check error message', function (done) {
|
61 | var promise = smsGet
|
62 | .request({ FromTS: +new Date, ToTS: +new Date })
|
63 | .then(function (response) {
|
64 | expect(response.body).to.be.a('object')
|
65 | done()
|
66 | })
|
67 | .catch(function (err) {
|
68 | expect(err.ErrorMessage).to.equal(AUTH_ERROR_MESSAGE)
|
69 | done()
|
70 | })
|
71 | expect(Promise.prototype.isPrototypeOf(promise)).to.equal(true)
|
72 | })
|
73 |
|
74 | it('check status code', function (done) {
|
75 | var promise = smsGet
|
76 | .request({ FromTS: +new Date, ToTS: +new Date })
|
77 | .then(function (response) {
|
78 | expect(response.body).to.be.a('object')
|
79 | expect(response.body.Data.length).to.equal(0)
|
80 | done()
|
81 | })
|
82 | .catch(function (err) {
|
83 | expect(err.statusCode).to.equal(AUTH_ERROR_CODE)
|
84 | done()
|
85 | })
|
86 | expect(Promise.prototype.isPrototypeOf(promise)).to.equal(true)
|
87 | })
|
88 |
|
89 | it('check response body is not null on error', function (done) {
|
90 | var promise = smsGet
|
91 | .request({ FromTS: +new Date, ToTS: +new Date })
|
92 | .then(function (response) {
|
93 | expect(response.body).to.be.a('object')
|
94 | expect(response.body.Data.length).to.equal(0)
|
95 | done()
|
96 | })
|
97 | .catch(function (err) {
|
98 | expect(err.response).to.not.equal(null)
|
99 | done()
|
100 | })
|
101 | expect(Promise.prototype.isPrototypeOf(promise)).to.equal(true)
|
102 | })
|
103 |
|
104 | it('check error identitfier is not empty string', function (done) {
|
105 | var promise = smsGet
|
106 | .request({ FromTS: +new Date, ToTS: +new Date })
|
107 | .then(function (response) {
|
108 | expect(response.body).to.be.a('object')
|
109 | expect(response.body.Data.length).to.equal(0)
|
110 | done()
|
111 | })
|
112 | .catch(function (err) {
|
113 | expect(err.ErrorIdentifier).to.not.equal('')
|
114 | done()
|
115 | })
|
116 | expect(Promise.prototype.isPrototypeOf(promise)).to.equal(true)
|
117 | })
|
118 | })
|
119 |
|
120 | describe('invalid public/private keys', function () {
|
121 | var v3Config = {
|
122 | url: 'api.mailjet.com',
|
123 | version: 'v3',
|
124 | output: 'json',
|
125 | perform_api_call: true
|
126 | }
|
127 | var v3Client = Mailjet.connect(API_PUBLIC_KEY, API_PRIVATE_KEY, v3Config)
|
128 |
|
129 | describe('get', function () {
|
130 |
|
131 | var contact = v3Client.get('contact')
|
132 |
|
133 | it('check v3 error message', function (done) {
|
134 | contact.request()
|
135 | .then(function (result) {
|
136 | result.body.should.be.a('object')
|
137 | expect(result.response.statusCode).to.equal(200)
|
138 | done()
|
139 | })
|
140 | .catch(function (err) {
|
141 | expect(err.ErrorMessage).to.equal(AUTH_V3_ERROR_MESSAGE)
|
142 | done()
|
143 | })
|
144 | })
|
145 |
|
146 | it('check v3 error status code', function (done) {
|
147 | contact.request()
|
148 | .then(function (result) {
|
149 | result.body.should.be.a('object')
|
150 | expect(result.response.statusCode).to.equal(200)
|
151 | done()
|
152 | })
|
153 | .catch(function (err) {
|
154 | expect(err.statusCode).to.equal(AUTH_ERROR_CODE)
|
155 | done()
|
156 | })
|
157 | })
|
158 |
|
159 | it('check v3 response body is not null on error', function (done) {
|
160 | contact.request()
|
161 | .then(function (result) {
|
162 | result.body.should.be.a('object')
|
163 | expect(result.response.statusCode).to.equal(200)
|
164 | done()
|
165 | })
|
166 | .catch(function (err) {
|
167 | expect(err.response).to.not.equal(null)
|
168 | done()
|
169 | })
|
170 | })
|
171 |
|
172 | it('check v3 error identitfier is not empty string', function (done) {
|
173 | contact.request()
|
174 | .then(function (result) {
|
175 | result.body.should.be.a('object')
|
176 | expect(result.response.statusCode).to.equal(200)
|
177 | done()
|
178 | })
|
179 | .catch(function (err) {
|
180 | expect(err.ErrorIdentifier).to.not.equal('')
|
181 | done()
|
182 | })
|
183 | })
|
184 |
|
185 | })
|
186 | })
|
187 | })
|
188 | })
|