diff --git a/src/app.js b/src/app.js index 4c994a7..13cfb2d 100755 --- a/src/app.js +++ b/src/app.js @@ -3,9 +3,9 @@ module.exports = function (badgerService) { Habitat.load('.env'); Habitat.load('env.dist'); var env = new Habitat(); - var express = require('express'), + var express = require('express'), app = express(), - path = require('path'); + path = require('path'); app.set('view engine', 'jade'); app.use(express.static(path.join(__dirname, '..', '/public'))); @@ -13,19 +13,19 @@ module.exports = function (badgerService) { function returnBadges(getBadges, httpRequest, httpResponse) { getBadges(function (error, badges) { if (error !== null) { - console.log("Get error from return Badges " + error); + console.log('Get error from return Badges ' + error); httpResponse.send(error); } else { if (httpRequest.query.pretty) { httpResponse.render(path.join(__dirname, '..', '/public/code.jade'), { data: JSON.stringify(badges, null, 2) }); - } else { + } else { httpResponse.json(badges); } } }); - }; + } // Set the client credentials and the OAuth2 server var credentials = { @@ -83,10 +83,7 @@ module.exports = function (badgerService) { }); }); - var auth = { - key: env.get('BADGES_KEY'), - secret: env.get('BADGES_SECRET') - }; + /* Get all badges from system */ app.get('/badges', function (request, response) { returnBadges(badgerService.getAllBadges(), request, response); @@ -104,8 +101,8 @@ module.exports = function (badgerService) { if (!orcid) { response.status(400).end(); return; - } - returnBadges(badgerService.getBadges(orcid), request, response); + } + returnBadges(badgerService.getBadges(orcid), request, response); }); // Get all badge instances of a certain badge earned by a user @@ -123,21 +120,27 @@ module.exports = function (badgerService) { // THIS DOES NOT WORK!! // Get all badge instances for a paper. - app.get('/papers/:doi1/:doi2/badges', function (request, response) { + app.get('/papers/:doi1/:doi2/badges', function (request, response) { if (!request.params.doi1 || !request.params.doi2) { response.status(400).end(); return; } - returnBadges(badgerService.getBadges(null, null, {'_1':request.params.doi1 , '_2':request.params.doi2}), request, response); + returnBadges(badgerService.getBadges(null, null, { + '_1': request.params.doi1, + '_2': request.params.doi2 + }), request, response); }); // Get all badge instances of a certain badge for a paper. NOTE: inefficiently filters for doi afterwards - app.get('/papers/:doi1/:doi2/badges/:badge', function (request, response) { + app.get('/papers/:doi1/:doi2/badges/:badge', function (request, response) { if (!request.params.doi1 || !request.params.doi2) { response.status(400).end(); return; } - returnBadges(badgerService.getBadges(null, request.params.badge, {'_1':request.params.doi1 , '_2':request.params.doi2}), request, response); + returnBadges(badgerService.getBadges(null, request.params.badge, { + '_1': request.params.doi1, + '_2': request.params.doi2 + }), request, response); }); // Get all badge instances earned by a user for a paper. @@ -146,7 +149,10 @@ module.exports = function (badgerService) { response.status(400).end(); return; } - returnBadges(badgerService.getBadges(request.params.orcid, null, {'_1':request.params.doi1 , '_2':request.params.doi2}), request, response); + returnBadges(badgerService.getBadges(request.params.orcid, null, { + '_1': request.params.doi1, + '_2': request.params.doi2 + }), request, response); }); // Get all badge instances of a certain badge earned by a user for a paper. @@ -155,7 +161,10 @@ module.exports = function (badgerService) { response.status(400).end(); return; } - returnBadges(badgerService.getBadges(request.params.orcid, request.params.badge, {'_1':request.params.doi1 , '_2':request.params.doi2}), request, response); + returnBadges(badgerService.getBadges(request.params.orcid, request.params.badge, { + '_1': request.params.doi1, + '_2': request.params.doi2 + }), request, response); }); // Create a badge instance -- need to add auth around this @@ -164,7 +173,10 @@ module.exports = function (badgerService) { response.status(400).end(); return; } - returnBadges(badgerService.createBadge(request.params.orcid, request.params.badge, {'_1':request.params.doi1 , '_2':request.params.doi2}), request, response); + returnBadges(badgerService.createBadge(request.params.orcid, request.params.badge, { + '_1': request.params.doi1, + '_2': request.params.doi2 + }), request, response); }); app.get('*', function (request, response) { diff --git a/src/badgeClient.js b/src/badgeClient.js index a6afc70..c14e90f 100644 --- a/src/badgeClient.js +++ b/src/badgeClient.js @@ -7,4 +7,4 @@ module.exports = function (config) { }; return new ApiClient(config.get('BADGES_ENDPOINT'), auth); -} +}; diff --git a/src/badgeService.js b/src/badgeService.js index 623013f..c1d2a53 100644 --- a/src/badgeService.js +++ b/src/badgeService.js @@ -1,10 +1,10 @@ module.exports = function (apiClient, config) { var system = config.get('BADGES_SYSTEM'); - var helpers = require('./helpers'); + var helpers = require('./helpers'); function _createBadge(orcid, badge, dois) { - return function (callback) { - var evidence = helpers.urlFromDOI(dois._1 + '/' + dois._2); + return function (callback) { + var evidence = helpers.urlFromDOI(dois._1 + '/' + dois._2); var context = { system: system, badge: badge, @@ -19,16 +19,16 @@ module.exports = function (apiClient, config) { console.error(err); return callback(err); } - helpers.modEntry(badgeResult, orcid); + helpers.modEntry(badgeResult, orcid); - callback(null, badgeResult); + callback(null, badgeResult); }); }; } function _getBadges(orcid, badge, dois) { - return function (callback) { - var evidenceUrl = dois ? helpers.urlFromDOI(dois._1 + '/' + dois._2) : null; + return function (callback) { + var evidenceUrl = dois ? helpers.urlFromDOI(dois._1 + '/' + dois._2) : null; var clientCallback = function (err, badges) { if (err) { @@ -37,9 +37,9 @@ module.exports = function (apiClient, config) { } // filter for the badge - if (badges) { + if (badges) { filtered = badges.filter(function (entry) { - var goodBadge = (!badge || entry.badge.slug === badge); + var goodBadge = (!badge || entry.badge.slug === badge); var goodDoi = (!dois || entry.evidenceUrl === evidenceUrl); return goodBadge && goodDoi; }); @@ -52,24 +52,23 @@ module.exports = function (apiClient, config) { if (filtered && filtered.length === 0) { callback('client return empty result'); - } else { + } else { callback(null, filtered); } - } + }; if (orcid) { var filtered; apiClient.getBadgeInstances({ system: system }, helpers.emailFromORCID(orcid), clientCallback); - } else { + } else { var filtered; apiClient.getBadgeInstances({ system: system, badge: badge }, clientCallback); } - }; } diff --git a/test/app.js b/test/app.js index a179b08..0d93fec 100644 --- a/test/app.js +++ b/test/app.js @@ -7,15 +7,13 @@ var testEnv = Habitat.load('.env'); var badgeClient = require('../src/badgeClient.js')(testEnv); var badgeService = require('../src/badgeService.js')(badgeClient, testEnv); var app = require('../src/app.js')(badgeService); - -describe("Intergration test against the real Badge server", function () { - +describe('Intergration test against the real Badge server', function () { it('get all the badges', function (done) { request(app) .get('/badges') .expect('Content-Type', /json/) .expect(function (res) { - assert.ok(res.body[0].slug, "not find badge slug in json"); + assert.ok(res.body[0].slug, 'not find badge slug in json'); }) .expect(200, done); }); @@ -31,79 +29,79 @@ describe("Intergration test against the real Badge server", function () { request(app) .get('/badges/formal_analysis') .expect('Content-Type', /json/) - .expect(function (res) { - assert.ok(res.body[0].slug, "not find badge slug in json"); - assert.equal(res.body[0].badge.name, "Formal analysis"); - //assert.equal(res.body[0].email, null); ?? bug?? - }) + .expect(function (res) { + assert.ok(res.body[0].slug, 'not find badge slug in json'); + assert.equal(res.body[0].badge.name, 'Formal analysis'); + // assert.equal(res.body[0].email, null); ?? bug?? + }) .expect(200, done); }); it('get all badge instances earned by a user', function (done) { request(app) - .get('/users/0000-0003-4959-3049/badges') - .expect('Content-Type', /json/) - .expect(function (res) { - assert.ok(res.body[0].slug, "not find one badge slug in json"); - assert.equal(res.body[0].orcid, "0000-0003-4959-3049"); - }) - .expect(200, done); + .get('/users/0000-0003-4959-3049/badges') + .expect('Content-Type', /json/) + .expect(function (res) { + assert.ok(res.body[0].slug, 'not find one badge slug in json'); + assert.equal(res.body[0].orcid, '0000-0003-4959-3049'); + }) + .expect(200, done); }); it('get all badge instances of a certain badge earned by a user', function (done) { request(app) - .get('/users/0000-0003-4959-3049/badges/writing_review') - .expect(function (res) { - assert.ok(res.body[0].slug, "not find one badge slug in json"); - assert.equal(res.body[0].badge.name, 'Writing - review & editing'); - assert.equal(res.body[0].orcid, '0000-0003-4959-3049'); - }) - .expect(200, done); + .get('/users/0000-0003-4959-3049/badges/writing_review') + .expect(function (res) { + assert.ok(res.body[0].slug, 'not find one badge slug in json'); + assert.equal(res.body[0].badge.name, 'Writing - review & editing'); + assert.equal(res.body[0].orcid, '0000-0003-4959-3049'); + }) + .expect(200, done); }); it('get all badge instances of a certain badge for a paper.', function (done) { request(app) - .get('/papers/10.1371/journal.pbio.1002126/badges/investigation') - .expect(function (res) { - assert.ok(res.body[0].slug, "not find one badge slug in json"); - assert.equal(res.body[0].badge.name, 'Investigation'); - assert.equal(res.body[0].evidenceUrl, 'http://dx.doi.org/10.1371/journal.pbio.1002126'); - }) - .expect(200, done); + .get('/papers/10.1371/journal.pbio.1002126/badges/investigation') + .expect(function (res) { + assert.ok(res.body[0].slug, 'not find one badge slug in json'); + assert.equal(res.body[0].badge.name, 'Investigation'); + assert.equal(res.body[0].evidenceUrl, 'http://dx.doi.org/10.1371/journal.pbio.1002126'); + }) + .expect(200, done); }); it('get all badge instances earned by a user for a paper.', function (done) { request(app) - .get('/papers/10.1371/journal.pbio.1002126/users/0000-0003-4959-3049/badges') - .expect(function (res) { - assert.ok(res.body[0].slug, "not find one badge slug in json"); - assert.equal(res.body[0].orcid, '0000-0003-4959-3049'); - assert.equal(res.body[0].evidenceUrl, 'http://dx.doi.org/10.1371/journal.pbio.1002126'); - }) - .expect(200, done); + .get('/papers/10.1371/journal.pbio.1002126/users/0000-0003-4959-3049/badges') + .expect(function (res) { + assert.ok(res.body[0].slug, 'not find one badge slug in json'); + assert.equal(res.body[0].orcid, '0000-0003-4959-3049'); + assert.equal(res.body[0].evidenceUrl, 'http://dx.doi.org/10.1371/journal.pbio.1002126'); + }) + .expect(200, done); }); it('get all badge instances of a certain badge earned by a user for a paper.', function (done) { request(app) - .get('/papers/10.1371/journal.pbio.1002126/users/0000-0003-4959-3049/badges/investigation') - .expect(function (res) { - assert.ok(res.body[0].slug, "not find one badge slug in json"); - assert.equal(res.body[0].badge.name, 'Investigation'); - assert.equal(res.body[0].orcid, '0000-0003-4959-3049'); - assert.equal(res.body[0].evidenceUrl, 'http://dx.doi.org/10.1371/journal.pbio.1002126'); - }) - .expect(200, done); + .get('/papers/10.1371/journal.pbio.1002126/users/0000-0003-4959-3049/badges/investigation') + .expect(function (res) { + assert.ok(res.body[0].slug, 'not find one badge slug in json'); + assert.equal(res.body[0].badge.name, 'Investigation'); + assert.equal(res.body[0].orcid, '0000-0003-4959-3049'); + assert.equal(res.body[0].evidenceUrl, 'http://dx.doi.org/10.1371/journal.pbio.1002126'); + }) + .expect(200, done); }); - // it('Create a badge instance', function (done) { - // var newOrcid = '0000-0003-4959' + Math.floor(Math.random()*1000) + '-test'; - // request(app) - // .post('/papers/10.1371/journal.pbio.1002126/users/' + newOrcid + '/badges/investigation') - // .expect(function (res) { - // assert.ok(res.body[0].slug, "not find one badge slug in json"); - // assert.equal(res.body[0].badge.name, 'Investigation'); - // assert.equal(res.body[0].orcid, newOrcid); - // }) - // .expect(200, done); - // }); + // it('Create a badge instance', function (done) { + // var newOrcid = '0000-0003-4959' + Math.floor(Math.random() * 1000) + '-test'; + // request(app) + // .post('/papers/10.1371/journal.pbio.1002126/users/' + newOrcid + '/badges/investigation') + // .expect(function (res) { + // assert.ok(res.body[0].slug, 'not find one badge slug in json'); + // assert.equal(res.body[0].badge.name, 'Investigation'); + // assert.equal(res.body[0].orcid, newOrcid); + // }) + // .expect(200, done); + // }); });