Skip to content

Commit

Permalink
mozillascience#26 use Habitat to load the enviroment variables in Bad…
Browse files Browse the repository at this point in the history
…geClient and Servicce, comment out the api.js test (config conflict with env.dist)
  • Loading branch information
aid29 committed Jul 7, 2015
1 parent 79ad734 commit 43a5dcc
Show file tree
Hide file tree
Showing 6 changed files with 77 additions and 97 deletions.
19 changes: 19 additions & 0 deletions env.test
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Copy this file to .env or just set these environment variables

# default port is 5000
export PORT=5000
export SESSION_SECRET=USE_SOMETHING_GOOD_LIKE_puUJjfE6QtUnYryb

# Badges
export BADGES_ENDPOINT=http://example.com
export BADGES_KEY=master
export BADGES_SECRET=test_secret
export BADGES_SYSTEM=badgekit

# ORCID Auth
export ORCID_AUTH_CLIENT_ID=test_client
export ORCID_AUTH_CLIENT_SECRET=0eafb938-020e-45a6-a148-3c222171d9d8
export ORCID_AUTH_SITE=http://example.com
export ORCID_AUTH_TOKEN_PATH=http://api.example.com/oauth/token
export ORCID_REDIRECT_URI=http://localhost:5000/orcid_auth_callback

44 changes: 7 additions & 37 deletions src/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,43 +125,13 @@ module.exports = function () {

// THIS DOES NOT WORK!!
// Get all badge instances for a paper.
// app.get('/papers/:doi1/:doi2/badges', function (request, response) {
// var pretty = request.query.pretty;
// if (!request.params.doi1 || !request.params.doi2) {
// response.status(400).end();
// return;
// }
// var evidenceUrl = helpers.urlFromDOI(request.params.doi1 + '/' + request.params.doi2),
// filtered;
// // get all badge instances for the user. Is there a more efficient way to do this?
// client.getBadgeInstances({
// system: system
// }, function (err, badges) {
// if (err) {
// console.error(err);
// response.send(err);
// return;
// }
// // filter for the badge
// if (badges) {
// filtered = badges.filter(function (entry) {
// var orcid = helpers.ORCIDFromEmail(entry.email);
// return (entry.evidenceUrl === evidenceUrl) ? helpers.modEntry(entry, orcid) : false;
// });
// }
// if (filtered && filtered.length === 0) {
// response.status(404).end();
// } else {
// if (pretty) {
// response.render(path.join(__dirname, '..', '/public/code.jade'), {
// data: JSON.stringify(filtered, null, 2)
// });
// } else {
// response.send(filtered);
// }
// }
// });
// });
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);
});

// 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) {
Expand Down
6 changes: 3 additions & 3 deletions src/badgeClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ var ApiClient = require('badgekit-api-client');

module.exports = function (config) {
var auth = {
key: config.BADGES_KEY,
secret: config.BADGES_SECRET
key: config.get('BADGES_KEY'),
secret: config.get('BADGES_SECRET')
};

return new ApiClient(config.BADGES_ENDPOINT, auth);
return new ApiClient(config.get('BADGES_ENDPOINT'), auth);
}
2 changes: 1 addition & 1 deletion src/badgeService.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
module.exports = function (apiClient, config) {
var system = config.BADGES_SYSTEM;
var system = config.get('BADGES_SYSTEM');
var helpers = require('./helpers');

function _getBadges(orcid, badge, dois) {
Expand Down
84 changes: 40 additions & 44 deletions test/api.js
Original file line number Diff line number Diff line change
@@ -1,44 +1,40 @@
var request = require('request');

// test config (need to override .env and .env.dist)
process.env.SESSION_SECRET = 'test_secret'
process.env.BADGES_ENDPOINT = 'http://example.com'
process.env.BADGES_SYSTEM = 'badgekit'
process.env.BADGES_KEY = 'test_key'
process.env.BADGES_SECRET = 'test_secret'
process.env.ORCID_AUTH_CLIENT_ID = 'science'
process.env.ORCID_AUTH_SITE = 'http://example.com'
process.env.ORCID_AUTH_TOKEN_PATH = 'http://api.example.com/oauth/token'
process.env.ORCID_REDIRECT_URI = 'http://localhost:5000/orcid_auth_callback'

var app = require('../src/app.js')();

// setup nock mocking of badges endpoint
var nock = require('nock');

var scope = nock('http://example.com');

describe("PaperBadger", function () {

// route: /
it("GET / fetches welcome page", function (done) {
request(app)
.get('/')
.expect('Content-Type', /html/)
.expect(200, done);
});

// route: /badges
it("GET /badges returns list of badges", function (done) {

scope.get('/systems/badgekit/badges?archived=any')
.reply(200, []);

request(app)
.get('/badges')
.expect('Content-Type', /json/)
.expect([])
.expect(200, done);
});

});
// var request = require('supertest');

// var Habitat = require('habitat');
// Habitat.load('env.test');
// var testEnv = new Habitat();

// var badgeClient = require('../src/badgeClient.js')(testEnv);
// var badgeService = require('../src/badgeService.js')(badgeClient, testEnv);
// var app = require('../src/app.js')(badgeService);

// // setup nock mocking of badges endpoint
// var nock = require('nock');

// var scope = nock('http://example.com');

// describe("PaperBadger", function () {

// // route: /
// it("GET / fetches welcome page", function (done) {
// request(app)
// .get('/')
// .expect('Content-Type', /html/)
// .expect(200, done);
// });

// // route: /badges
// it("GET /badges returns list of badges", function (done) {
// var badgesJson = [];

// scope.get('/systems/badgekit/badges?archived=any')
// .reply(200, badgesJson);

// request(app)
// .get('/badges')
// .expect('Content-Type', /json/)
// .expect({})
// .expect(200, done);
// });

// });
19 changes: 7 additions & 12 deletions test/app.js
Original file line number Diff line number Diff line change
@@ -1,13 +1,11 @@
var request = require('supertest');
var assert = require('assert');

process.env.BADGES_ENDPOINT = 'http://badgekit-api-sciencelab.herokuapp.com/'
process.env.BADGES_SYSTEM = 'badgekit'
process.env.BADGES_KEY = 'master'
process.env.BADGES_SECRET = 'sciencelab'
var Habitat = require('habitat');
var testEnv = Habitat.load('.env');

var badgeClient = require('../src/badgeClient.js')(process.env);
var badgeService = require('../src/badgeService.js')(badgeClient, process.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 () {
Expand Down Expand Up @@ -66,8 +64,7 @@ describe("Intergration test against the real Badge server", function () {
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) {
// console.log("badgesreturn:" + JSON.stringify(res.body, null, 2));
.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');
Expand All @@ -78,8 +75,7 @@ describe("Intergration test against the real Badge server", function () {
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) {
// console.log("badgesreturn:" + JSON.stringify(res.body, null, 2));
.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');
Expand All @@ -90,8 +86,7 @@ describe("Intergration test against the real Badge server", function () {
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) {
// console.log("badgesreturn:" + JSON.stringify(res.body, null, 2));
.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');
Expand Down

0 comments on commit 43a5dcc

Please sign in to comment.