heroku-debug
Version:
debugging plugin for the CLI
72 lines (63 loc) • 1.85 kB
JavaScript
var zlib = require('zlib')
var test = require('tape')
var nock = require('nock')
var Client = require('./')
var options = {
organizationId: 'some-org-id',
appId: 'some-app-id',
secretToken: 'secret',
userAgent: 'foo'
}
test('throw if missing required options', function (t) {
var fn = function () {
Client({ appId: 'foo', organizationId: 'bar' })
}
t.throws(fn)
t.end()
})
test('#request()', function (t) {
var encode = function (body, cb) {
zlib.deflate(JSON.stringify(body), function (err, buffer) {
if (err) throw err
cb(buffer)
})
}
var body = { foo: 'bar' }
encode(body, function (buffer) {
t.test('normal request', function (t) {
var client = Client(options)
var scope = nock('https://intake.opbeat.com')
.filteringRequestBody(function (body) {
t.equal(body, buffer.toString('hex'))
return 'ok'
})
.post('/api/v1/organizations/some-org-id/apps/some-app-id/endpoint/', 'ok')
.reply(202)
client.request('endpoint', body, function (err, res, body) {
t.error(err)
t.equal(res.statusCode, 202)
t.equal(body, '')
scope.done()
t.end()
})
})
t.test('request with error', function (t) {
var client = Client(options)
var scope = nock('https://intake.opbeat.com')
.filteringRequestBody(function (body) {
t.equal(body, buffer.toString('hex'))
return 'ok'
})
.post('/api/v1/organizations/some-org-id/apps/some-app-id/endpoint/', 'ok')
.reply(500, { error: 'foo' })
client.request('endpoint', body, function (err, res, body) {
t.error(err)
t.equal(res.statusCode, 500)
t.deepEqual(body, '{"error":"foo"}')
scope.done()
t.end()
})
})
})
})