UNPKG

3.28 kBJavaScriptView Raw
1'use strict';
2
3var assert = require('assert'),
4 when = require('when'),
5 rewire = require('rewire'),
6 constants = require('../lib/constants'),
7 mocks = require('./mocks');
8
9describe('AkamaiRequest', function () {
10
11 describe('basic request', function () {
12 beforeEach(function () {
13 this.object = rewire('./../lib/request.js');
14 this.requestOptions = {
15 uri: '/someuri',
16 json: true,
17 auth: {
18 username: 'someuser',
19 password: 'supersecret'
20 }
21 };
22 });
23
24
25 it('should make request', function (done) {
26 this.object.__set__('request', mocks.request.goodResponse(this.requestOptions, {
27 httpStatus: 200
28 }));
29
30
31 var request = this.object.AkamaiRequest(this.requestOptions).then(function (response) {
32 assert.equal(response.httpStatus, 200);
33 }.bind(this)).then(done).catch(done);
34
35 assert.equal(when.isPromiseLike(request), true);
36 });
37
38 it('should make request and handle hard error', function (done) {
39 var errToAssert = new Error('test error');
40 this.object.__set__('request', mocks.request.hardError(this.requestOptions, errToAssert));
41
42
43 var request = this.object.AkamaiRequest(this.requestOptions).then(function () {
44 done(new Error('should never get here.'));
45 }).catch(function (err) {
46 try {
47 assert.equal(err, errToAssert);
48
49 if (err.toString() === 'Error: test error') {
50 done();
51 } else {
52 done(err);
53 }
54 } catch (e) {
55 done(e);
56 }
57 });
58
59 assert.equal(when.isPromiseLike(request), true);
60 });
61
62 it('should make request and handle statuscode error', function (done) {
63 this.object.__set__('request', mocks.request.statusCodeError(this.requestOptions, 403, {
64 httpStatus: 403,
65 describedBy: 'https://www.example.com/somedescription'
66 }));
67
68
69 var request = this.object.AkamaiRequest(this.requestOptions).then(function () {
70 done(new Error('should never get here.'));
71 }).catch(function (err) {
72 try {
73 assert.equal(typeof err.res, 'object');
74 assert.equal(/Unexpected status code: 403/.test(err.toString()), true);
75 assert.equal(typeof err.body, 'object');
76 assert.equal(typeof err.body.describe, 'function');
77
78 if (/Unexpected status code: 403/.test(err.toString())) {
79 done();
80 } else {
81 done(err);
82 }
83 } catch (e) {
84 done(e);
85 }
86 });
87
88 assert.equal(when.isPromiseLike(request), true);
89 });
90
91
92// it('should make request then make status request call', function (done) {
93// var statusRequest = this.object.AkamaiStatus('someusername', 'supersecret', this.progressUri).then(function (response) {
94// assert.equal(response.httpStatus, 200);
95// assert.equal(typeof response.status, 'function');
96// assert.deepEqual(response.requestBody, this.requestBody);
97//
98// return response.status();
99// }.bind(this)).then(function (statusResponse) {
100// assert.equal(statusResponse.httpStatus, 200);
101// }).then(done).catch(done);
102//
103// assert.equal(when.isPromiseLike(statusRequest), true);
104// });
105
106 });
107});
\No newline at end of file