Code coverage report for server/app/configure/authentication/twitter.js

Statements: 0% (0 / 20)      Branches: 0% (0 / 2)      Functions: 0% (0 / 7)      Lines: 0% (0 / 20)      Ignored: none     

All files » server/app/configure/authentication/ » twitter.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59                                                                                                                     
'use strict';
 
var passport = require('passport');
var TwitterStrategy = require('passport-twitter').Strategy;
 
module.exports = function (app, db) {
 
    var User = db.model('user');
 
    var twitterConfig = app.getValue('env').TWITTER;
 
    var twitterCredentials = {
        consumerKey: twitterConfig.consumerKey,
        consumerSecret: twitterConfig.consumerSecret,
        callbackUrl: twitterConfig.callbackUrl
    };
 
    var createNewUser = function (token, tokenSecret, profile) {
        return User.create({
            twitter_id: profile.id
        });
    };
 
    var verifyCallback = function (token, tokenSecret, profile, done) {
 
        UserModel.findOne({
            where: {
                twitter_id: profile.id
            }
        }).exec()
            .then(function (user) {
                if (user) { // If a user with this twitter id already exists.
                    return user;
                } else { // If this twitter id has never been seen before and no user is attached.
                    return createNewUser(token, tokenSecret, profile);
                }
            })
            .then(function (user) {
                done(null, user);
            })
            .catch(function (err) {
                console.error('Error creating user from Twitter authentication', err);
                done(err);
            });
 
    };
 
    passport.use(new TwitterStrategy(twitterCredentials, verifyCallback));
 
    app.get('/auth/twitter', passport.authenticate('twitter'));
 
    app.get('/auth/twitter/callback',
        passport.authenticate('twitter', {failureRedirect: '/login'}),
        function (req, res) {
            res.redirect('/');
        });
 
};