bq/corbel-composr

View on GitHub
src/routes/test.js

Summary

Maintainability
A
1 hr
Test Coverage
'use strict'

var corbel = require('corbel-js')
var ComposrError = require('composr-core').ComposrError
var config = require('config')

function getCorbelErrorBody (corbelErrResponse) {
  var errorBody = typeof (corbelErrResponse.data) !== 'undefined' && typeof (corbelErrResponse.data.body) === 'string' && corbelErrResponse.data.body.indexOf('{') !== -1 ? JSON.parse(corbelErrResponse.data.body) : corbelErrResponse
  return errorBody
}

module.exports = function (server) {
  server.get('/e1', function (res) {
    res.undefinedFunction()
  })

  server.get('/e2', function () {
    throw new ComposrError('error:custom', 'Error body', 555)
  })

  server.post('/jwt', function (req, res) {
    req.body = req.body || {}
    req.body.claims.aud = corbel.Iam.AUD

    res.send(200, corbel.jwt.generate(req.body.claims, req.body.secret))
  })

  server.post('/postexecutionhandler', function (req, res, next) {
    req.body = { 'hello': 'world' }
    return next()
  }, function (req, res, e) {
    res.send(200, req.body)
  })

  server.post('/token', function (req, res, next) {
    var data = req.body || {}

    var corbelConfig = {
      urlBase: config.get('corbel.options.urlBase'),
      clientId: data.clientId,
      clientSecret: data.clientSecret,
      scopes: data.scopes
    }

    var corbelDriver = corbel.getDriver(corbelConfig)

    corbelDriver.iam.token().create().then(function (response) {
      res.send(200, response)
    }).catch(function (error) {
      var errorBody = getCorbelErrorBody(error)
      next(new ComposrError('error:token', errorBody, error.status))
    })
  })

  server.get('/cache', function (req, res) {
    res.set('Cache-Control', 'public, max-age=31536000')
    res.send(200, {
      data: true
    })
  })
}