UNPKG

6.03 kBJavaScriptView Raw
1/* global describe, it */
2var API_TOKEN = process.env.MJ_API_TOKEN
3var API_PUBLIC_KEY = process.env.MJ_APIKEY_PUBLIC
4var API_PRIVATE_KEY = process.env.MJ_APIKEY_PRIVATE
5
6var Mailjet = require('../mailjet-client')
7var chai = require('chai')
8var expect = chai.expect
9var should = chai.should() // eslint-disable-line no-unused-vars
10var Promise = require('bluebird')
11
12describe('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})