UNPKG

facebook

Version:

Simple Facebook Integration for NodeJS (and Express)

129 lines (108 loc) 4.92 kB
describe 'Express' before_each facebook = require('facebook') var express = require('express') var querystring = require('querystring') app = express.createServer(); app.use(facebook.Facebook, { apiKey: 'e1249f7d4bc25b8f90e5c9c7523e3ee1', apiSecret: '4ae45734dd66fa85c7b189fc2d7d5b4c' }) validCookies = {"e1249f7d4bc25b8f90e5c9c7523e3ee1": querystring.stringify({ "sig" : "e", "user":"687215451", "ss":"lWYbyFp0GP8e7BgPa1aLDg__", "session_key":"3.LIysipyTte6aXFBcStEixg__.3600.1267714800-687215451", "expires":"1267714800" })} tamperedCookies = { "e1249f7d4bc25b8f90e5c9c7523e3ee1": "5b820bb72e780318acb26ff375db4cc9", "e1249f7d4bc25b8f90e5c9c7523e3ee1_user": "687215453", "e1249f7d4bc25b8f90e5c9c7523e3ee1_ss": "lWYbyFp0GP8e7BgPa1aLDg__", "e1249f7d4bc25b8f90e5c9c7523e3ee1_session_key": "3.LIysipyTte6aXFBcStEixg__.3600.1267714800-687215451", "e1249f7d4bc25b8f90e5c9c7523e3ee1_expires": "1267714800" } validParams = { "fb_sig_in_iframe": 1, "fb_sig_iframe_key": "7d0665438e81d8eceb98c1e31fca80c1", "fb_sig_locale": "en_US", "fb_sig_in_new_facebook": 1, "fb_sig_time": 1267707311.2722, "fb_sig_added": 1, "fb_sig_profile_update_time": 1257283845, "fb_sig_expires": 1267711200, "fb_sig_user": 687215451, "fb_sig_session_key": "2._iAVUxKTc6ASHM_UQJZddA__.3600.1267711200-687215451", "fb_sig_ss": "I667xeojG4lgcEfzc5TcZw__", "fb_sig_cookie_sig": "e379d598512da632c49946041a3a6847", "fb_sig_ext_perms": "auto_publish_recent_activity", "fb_sig_api_key": "e1249f7d4bc25b8f90e5c9c7523e3ee1", "fb_sig_app_id": 341436568738, "fb_sig": "24188c7a57d420ad27beba0f22d00289" } tamperedParams = { "fb_sig_in_iframe": 1, "fb_sig_iframe_key": "7d0665438e81d8eceb98c1e31fca80c1", "fb_sig_locale": "en_US", "fb_sig_in_new_facebook": 1, "fb_sig_time": 1267707311.2722, "fb_sig_added": 1, "fb_sig_profile_update_time": 1257283845, "fb_sig_expires": 1267711200, "fb_sig_user": 687215448, "fb_sig_session_key": "2._iAVUxKTc6ASHM_UQJZddA__.3600.1267711200-687215451", "fb_sig_ss": "I667xeojG4lgcEfzc5TcZw__", "fb_sig_cookie_sig": "e379d598512da632c49946041a3a6847", "fb_sig_ext_perms": "auto_publish_recent_activity", "fb_sig_api_key": "e1249f7d4bc25b8f90e5c9c7523e3ee1", "fb_sig_app_id": 341436568738, "fb_sig": "24188c7a57d420ad27beba0f22d00289" } end describe 'Facebook' describe 'getFingerprintForParams' it 'should return a well formatted fingerprint' var fingerprint = facebook.getFingerprintForParams(validParams) fingerprint.should.eql("added=1api_key=e1249f7d4bc25b8f90e5c9c7523e3ee1app_id=341436568738cookie_sig=e379d598512da632c49946041a3a6847expires=1267711200ext_perms=auto_publish_recent_activityiframe_key=7d0665438e81d8eceb98c1e31fca80c1in_iframe=1in_new_facebook=1locale=en_USprofile_update_time=1257283845session_key=2._iAVUxKTc6ASHM_UQJZddA__.3600.1267711200-687215451ss=I667xeojG4lgcEfzc5TcZw__time=1267707311.2722user=687215451") end end describe 'getFingerprintForCookie' it 'should return a well formatted fingerprint' var fingerprint = facebook.getFingerprintForCookie('e1249f7d4bc25b8f90e5c9c7523e3ee1', validCookies) fingerprint.should.eql({fingerprint: "expires=1267714800session_key=3.LIysipyTte6aXFBcStEixg__.3600.1267714800-687215451ss=lWYbyFp0GP8e7BgPa1aLDg__user=687215451", sig: "e"}) end end describe 'Request' describe 'fbAuthenticate' it 'should return true on a request with a valid cookie' get('/fbSession', function () { this.cookies = validCookies return this.fbAuthenticate() + '' }) get('/fbSession', {}).body.should.eql 'true' end it 'should return false on a request with a tampered cookie' get('/fbSession', function () { this.cookies = tamperedCookies return this.fbAuthenticate() + '' }) get('/fbSession', {}).body.should.eql 'false' end it 'should return true on a request with valid params' get('/fbSession', function () { this.params.get = validParams return this.fbAuthenticate() + '' }) get('/fbSession', {}).body.should.eql 'true' end it 'should return false on a request with tampered params' get('/fbSession', function () { this.params.get = tamperedParams return this.fbAuthenticate() + '' }) get('/fbSession', {}).body.should.eql 'false' end end end end end