Skip to content
This repository was archived by the owner on Jul 6, 2022. It is now read-only.

Commit 0240f0b

Browse files
committed
more tests; middleware and redirects done.
1 parent 36bf6fc commit 0240f0b

6 files changed

Lines changed: 107 additions & 10 deletions

File tree

‎lib/controllers/application.js‎

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
var success_response = require(__dirname + '/../response/success')
22
, error_response = require(__dirname + '/../response/error')
3+
, passport = require('passport')
34

45
exports.index = function(req, res, next) {
56
res.render('main', { user: req.user });
67
};
78

89
exports.login = function(req, res, next) {
9-
success_response.respond(res, []);
10+
res.render('login', { user: req.user, error: req.flash('error') });
11+
};
12+
13+
exports.authenticate = function(req, res, next) {
14+
passport.authenticate('atlassian-crowd', { failureRedirect:'/login', failureFlash:"Invalid username or password." })
15+
res.redirect('/link');
1016
};
1117

1218
exports.logout = function(req, res, next) {
@@ -18,6 +24,10 @@ exports.link = function(req, res, next) {
1824
success_response.respond(res, []);
1925
};
2026

27+
exports.link_pilot = function(req, res, next) {
28+
29+
};
30+
2131
exports.unlink = function(req, res, next) {
2232
success_response.respond(res, []);
2333
}

‎lib/routes/index.js‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@ var express = require('express')
55
, application = require(__dirname + '/../controllers/application')
66

77
router.get('/login', [ checks.redirect_if_authenticated, application.login ]);
8+
router.post('/login', application.authenticate );
89
router.get('/logout', application.logout );
910
router.get('/link', [ checks.if_authenticated, application.link ]);
11+
router.post('/link', [ checks.if_authenticated, application.link_pilot ]);
1012
router.get('/unlink', [ checks.if_authenticated, application.unlink ]);
1113
router.get('/', application.index)
1214

‎server.js‎

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ var express = require('express')
1010
, compression = require('compression')
1111
, cookieParser = require('cookie-parser')
1212
, bodyParser = require('body-parser')
13+
, flash = require('connect-flash')
14+
15+
var checks = require(__dirname + '/lib/middleware/checks')
1316

1417
var database = require(__dirname + '/lib/initializers/database')
1518
, passport = require(__dirname + '/lib/initializers/passport')
@@ -26,6 +29,9 @@ app.use(compression())
2629
app.use(bodyParser.json());
2730
app.use(bodyParser.urlencoded({ extended: true }));
2831

32+
app.use(checks.ssl_headers);
33+
app.use(checks.static_rewrite);
34+
2935
app.enable('trust proxy');
3036

3137
app.use(favicon(__dirname + '/public/favicon.ico'));
@@ -46,6 +52,8 @@ app.use(require('express-session')({
4652
store: require('mongoose-session')(mongoose)
4753
}));
4854

55+
app.use(flash());
56+
4957
app.use('/', routes);
5058
app.use('/api', fleet);
5159

@@ -81,10 +89,7 @@ app.use(function(err, req, res, next) {
8189
app.set('port', process.env.PORT || 5000);
8290

8391
function start() {
84-
var server = app.listen(app.get('port'), function() {
85-
console.log('Standing Fleet API listening on port ' + server.address().port);
86-
console.log('Mode: ' + app.get('env'))
87-
});
92+
var server = app.listen(app.get('port'));
8893
}
8994

9095
start();

‎test/fixtures/tarei-ju-.json‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"EVE_TRUSTED": "true",
3+
"EVE_CHARID": "724817669",
4+
"EVE_CHARNAME": "Tarei",
5+
"EVE_SHIPTYPENAME": "Stratios",
6+
"EVE_SHIPTYPEID": "33470",
7+
"EVE_SHIPNAME": "Talk shit, get hit.",
8+
"EVE_SOLARSYSTEMNAME": "JU-OWQ",
9+
"EVE_SOLARSYSTEMID": "30002911"
10+
}

‎test/mocha.opts‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
--require should
2+
--reporter spec
3+
--ui bdd

‎test/server.js‎

Lines changed: 72 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ describe('Server', function() {
1212
done();
1313
});
1414

15-
describe('Static Assets', function() {
15+
describe('Assets', function() {
1616
it('should serve images', function(done) {
1717
request(url)
1818
.get('/images/panel-logo.png')
@@ -25,17 +25,84 @@ describe('Server', function() {
2525
.expect(200, done);
2626
});
2727

28-
it('should serve compiled javascript', function(done) {
28+
it('should serve compiled client javascript', function(done) {
2929
request(url)
3030
.get('/js/app.js')
3131
.expect(200, done);
32+
});
33+
34+
it('should serve compiled vendor javascript', function(done) {
3235
request(url)
3336
.get('/js/lib.js')
3437
.expect(200, done);
38+
});
39+
});
40+
41+
describe('Views', function() {
42+
it('should handle static root view', function(done) {
3543
request(url)
36-
.get('/js/templates.js')
37-
.expect(200, done);
44+
.get('/')
45+
.expect(200)
46+
.end(function(err, res) {
47+
if (err) return done(err);
48+
res.text.match(/<title>Standing Fleet<\/title>/)
49+
done();
50+
});
51+
});
52+
53+
it('should handle static login view', function(done) {
54+
request(url)
55+
.get('/login')
56+
.expect(200)
57+
.end(function(err, res) {
58+
if (err) return done(err);
59+
res.text.match(/Goonfleet ESA Login/)
60+
done();
61+
});
3862
});
39-
})
63+
});
64+
65+
describe('Middleware', function() {
66+
describe('IGB Headers', function() {
67+
it('should error if not present', function(done) {
68+
request(url)
69+
.get('/api/fleet/status')
70+
.expect(200)
71+
.end(function(err, res) {
72+
if (err) return done(err);
73+
res.body.success.should.not.be.ok;
74+
res.body.error.type.should.equal('request');
75+
done();
76+
});
77+
});
78+
79+
it('should parse values appropriately', function(done) {
80+
var tarei = require('./fixtures/tarei-ju-.json')
81+
request(url)
82+
.get('/api/fleet/status')
83+
.set(tarei)
84+
.expect(200)
85+
.end(function(err,res) {
86+
if (err) return done(err);
87+
res.body.success.should.be.ok;
88+
done();
89+
});
90+
});
91+
});
92+
93+
describe('Check Authentication', function() {
94+
it('should redirect to login for non-authenticated requests', function(done) {
95+
request(url)
96+
.get('/link')
97+
.expect(302)
98+
.end(function(err, res) {
99+
if (err) return done(err);
100+
res.headers.location.should.match(/\/login/);
101+
done();
102+
});
103+
104+
});
105+
});
106+
});
40107

41108
});

0 commit comments

Comments
 (0)