facebook-stub 0.0.1.21 → 0.0.1.22

Sign up to get free protection for your applications and to get access to all the features.
@@ -381,7 +381,7 @@
381
381
  }
382
382
 
383
383
  function setSecret(newSecret) {
384
- return state('secret', newSecret);
384
+ return FBWorld.state('secret', newSecret);
385
385
  }
386
386
 
387
387
  function loggedIn(perms) {
@@ -648,10 +648,10 @@
648
648
  // cookie looks like this: (with the quotes): "access_token=theToken&base_domain=local-change.org&expires=0&secret=theSecret&session_key=theSessionKeysig=theSig-Hashed&uid=theUID"
649
649
  function createConnectedCookie() {
650
650
  var theState = {
651
- user_id: state('uid'),
652
- code: 'theAccessToken|hashData',
653
- // We need to verify the timezone for this value. Traditionally FB uses PST8PDT, but it may be UTC.
654
- issued_at: Math.floor(new Date().getTime() / 1000)
651
+ userID: state('uid'),
652
+ authToken: 'theAccessToken|hashData',
653
+ signedRequest: 'ABC123',
654
+ expiresIn: 2*60*60
655
655
  };
656
656
 
657
657
  if (uid() !== null) {
@@ -745,55 +745,76 @@ setTimeout(function() { if (typeof fbAsyncInit === 'function') fbAsyncInit(); },
745
745
  */
746
746
 
747
747
  // Modified to make it not use jquery
748
- FBWorld.Helpers.makeMeACookie = function(name, value, options) {
749
- if (typeof value != 'undefined') { // name and value given, set cookie
750
- options = options || {};
751
- if (value === null) {
752
- value = '';
753
- options.expires = -1;
754
- } else {
755
- options.expires = 100; // 100 days from now
756
- }
757
- var expires = '';
758
- if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
759
- var date;
760
- if (typeof options.expires == 'number') {
761
- date = new Date();
762
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
763
- } else {
764
- date = options.expires;
765
- }
766
- expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
767
- }
768
- // CAUTION: Needed to parenthesize options.path and options.domain
769
- // in the following expressions, otherwise they evaluate to undefined
770
- // in the packed version for some reason...
771
- var path = '; path=/';
772
- var domain = options.domain ? '; domain=' + (options.domain) : '';
773
- var secure = options.secure ? '; secure' : '';
774
- document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
748
+ FBWorld.Helpers = {
749
+ makeMeACookie: function(name, value, options) {
750
+ if (typeof value !== 'undefined') {
751
+ // name and value given, set cookie
752
+ this.setCookieWithValue(name, value, options);
775
753
  } else { // only name given, get cookie
776
- var cookieValue = null;
777
- if (document.cookie && document.cookie != '') {
778
- var cookies = document.cookie.split(';');
779
- for (var i = 0; i < cookies.length; i++) {
780
- var cookie = FBWorld.Helpers.trim(cookies[i]);
781
- // Does this cookie string begin with the name we want?
782
- if (cookie.substring(0, name.length + 1) == (name + '=')) {
783
- cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
784
- break;
785
- }
786
- }
787
- }
788
- return cookieValue;
754
+ return this.getCookieBasedOnName(name);
789
755
  }
790
- };
756
+ },
791
757
 
792
- //Taken from jQuery
793
- FBWorld.Helpers.trim = function( text ) {
794
- return text == null ?
795
- "" :
796
- text.toString().replace( /^\s+/, "" ).replace( /\s+$/, "" );
758
+ setCookieWithValue: function(name, value, options) {
759
+ options = options || {};
760
+ if (value === null) {
761
+ value = '';
762
+ options.expires = -1;
763
+ } else {
764
+ options.expires = 100; // 100 days from now
765
+ }
766
+
767
+ this.setCookieBasedOnName(name, value, options);
768
+ },
769
+
770
+ //Taken from jQuery
771
+ trim: function( text ) {
772
+ return text === null ?
773
+ "" :
774
+ text.toString().replace( /^\s+/, "" ).replace( /\s+$/, "" );
775
+ },
776
+
777
+ expirationForCookie: function(expires) {
778
+ var expireString = '';
779
+ if (expires && (typeof expires == 'number' || expires.toUTCString)) {
780
+ var date;
781
+ if (typeof expires == 'number') {
782
+ date = new Date();
783
+ var millisecondsPer24Hours = 24 * 60 * 60 * 1000;
784
+ date.setTime(date.getTime() + (expires * millisecondsPer24Hours));
785
+ } else {
786
+ date = expires;
787
+ }
788
+ expireString = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
789
+ }
790
+ return expireString;
791
+ },
792
+
793
+ setCookieBasedOnName: function(name, value, options) {
794
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
795
+ var secure = options.secure ? '; secure' : '';
796
+ var cookieString = [encodeURIComponent(value), this.expirationForCookie(options.expires),
797
+ '; path=/', domain, secure].join('');
798
+
799
+ document.cookie = [name, '=', cookieString].join('');
800
+ },
801
+
802
+ getCookieBasedOnName: function(name) {
803
+ var cookieValue = null;
804
+ var cookieString = document.cookie;
805
+ if (cookieString && cookieString !== '') {
806
+ var cookies = cookieString.split(';');
807
+ for (var i = 0; i < cookies.length; i++) {
808
+ var cookie = this.trim(cookies[i]);
809
+ // Does this cookie string begin with the name we want?
810
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
811
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
812
+ break;
813
+ }
814
+ }
815
+ }
816
+ return cookieValue;
817
+ }
797
818
  };
798
819
  /* A JavaScript implementation of the SHA family of hashes, as defined in FIPS
799
820
  * PUB 180-2 as well as the corresponding HMAC implementation as defined in
@@ -55,53 +55,74 @@
55
55
  */
56
56
 
57
57
  // Modified to make it not use jquery
58
- FBWorld.Helpers.makeMeACookie = function(name, value, options) {
59
- if (typeof value != 'undefined') { // name and value given, set cookie
60
- options = options || {};
61
- if (value === null) {
62
- value = '';
63
- options.expires = -1;
64
- } else {
65
- options.expires = 100; // 100 days from now
66
- }
67
- var expires = '';
68
- if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
69
- var date;
70
- if (typeof options.expires == 'number') {
71
- date = new Date();
72
- date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
73
- } else {
74
- date = options.expires;
75
- }
76
- expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
77
- }
78
- // CAUTION: Needed to parenthesize options.path and options.domain
79
- // in the following expressions, otherwise they evaluate to undefined
80
- // in the packed version for some reason...
81
- var path = '; path=/';
82
- var domain = options.domain ? '; domain=' + (options.domain) : '';
83
- var secure = options.secure ? '; secure' : '';
84
- document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
58
+ FBWorld.Helpers = {
59
+ makeMeACookie: function(name, value, options) {
60
+ if (typeof value !== 'undefined') {
61
+ // name and value given, set cookie
62
+ this.setCookieWithValue(name, value, options);
85
63
  } else { // only name given, get cookie
86
- var cookieValue = null;
87
- if (document.cookie && document.cookie != '') {
88
- var cookies = document.cookie.split(';');
89
- for (var i = 0; i < cookies.length; i++) {
90
- var cookie = FBWorld.Helpers.trim(cookies[i]);
91
- // Does this cookie string begin with the name we want?
92
- if (cookie.substring(0, name.length + 1) == (name + '=')) {
93
- cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
94
- break;
95
- }
96
- }
97
- }
98
- return cookieValue;
64
+ return this.getCookieBasedOnName(name);
99
65
  }
100
- };
66
+ },
67
+
68
+ setCookieWithValue: function(name, value, options) {
69
+ options = options || {};
70
+ if (value === null) {
71
+ value = '';
72
+ options.expires = -1;
73
+ } else {
74
+ options.expires = 100; // 100 days from now
75
+ }
76
+
77
+ this.setCookieBasedOnName(name, value, options);
78
+ },
101
79
 
102
- //Taken from jQuery
103
- FBWorld.Helpers.trim = function( text ) {
104
- return text == null ?
105
- "" :
106
- text.toString().replace( /^\s+/, "" ).replace( /\s+$/, "" );
80
+ //Taken from jQuery
81
+ trim: function( text ) {
82
+ return text === null ?
83
+ "" :
84
+ text.toString().replace( /^\s+/, "" ).replace( /\s+$/, "" );
85
+ },
86
+
87
+ expirationForCookie: function(expires) {
88
+ var expireString = '';
89
+ if (expires && (typeof expires == 'number' || expires.toUTCString)) {
90
+ var date;
91
+ if (typeof expires == 'number') {
92
+ date = new Date();
93
+ var millisecondsPer24Hours = 24 * 60 * 60 * 1000;
94
+ date.setTime(date.getTime() + (expires * millisecondsPer24Hours));
95
+ } else {
96
+ date = expires;
97
+ }
98
+ expireString = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
99
+ }
100
+ return expireString;
101
+ },
102
+
103
+ setCookieBasedOnName: function(name, value, options) {
104
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
105
+ var secure = options.secure ? '; secure' : '';
106
+ var cookieString = [encodeURIComponent(value), this.expirationForCookie(options.expires),
107
+ '; path=/', domain, secure].join('');
108
+
109
+ document.cookie = [name, '=', cookieString].join('');
110
+ },
111
+
112
+ getCookieBasedOnName: function(name) {
113
+ var cookieValue = null;
114
+ var cookieString = document.cookie;
115
+ if (cookieString && cookieString !== '') {
116
+ var cookies = cookieString.split(';');
117
+ for (var i = 0; i < cookies.length; i++) {
118
+ var cookie = this.trim(cookies[i]);
119
+ // Does this cookie string begin with the name we want?
120
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
121
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
122
+ break;
123
+ }
124
+ }
125
+ }
126
+ return cookieValue;
127
+ }
107
128
  };
@@ -381,7 +381,7 @@
381
381
  }
382
382
 
383
383
  function setSecret(newSecret) {
384
- return state('secret', newSecret);
384
+ return FBWorld.state('secret', newSecret);
385
385
  }
386
386
 
387
387
  function loggedIn(perms) {
@@ -648,10 +648,10 @@
648
648
  // cookie looks like this: (with the quotes): "access_token=theToken&base_domain=local-change.org&expires=0&secret=theSecret&session_key=theSessionKeysig=theSig-Hashed&uid=theUID"
649
649
  function createConnectedCookie() {
650
650
  var theState = {
651
- user_id: state('uid'),
652
- code: 'theAccessToken|hashData',
653
- // We need to verify the timezone for this value. Traditionally FB uses PST8PDT, but it may be UTC.
654
- issued_at: Math.floor(new Date().getTime() / 1000)
651
+ userID: state('uid'),
652
+ authToken: 'theAccessToken|hashData',
653
+ signedRequest: 'ABC123',
654
+ expiresIn: 2*60*60
655
655
  };
656
656
 
657
657
  if (uid() !== null) {
@@ -1,3 +1,3 @@
1
1
  module FacebookStub
2
- VERSION = "0.0.1.21"
2
+ VERSION = "0.0.1.22"
3
3
  end
@@ -1,19 +1,17 @@
1
1
  describe("FB.api", function() {
2
- beforeEach(function() {
3
- setup();
4
- });
5
-
6
- afterEach(function() {
7
- FBWorld.reset();
8
- });
9
2
 
10
3
  describe("when loggedIn, connected, and granted permissions", function() {
11
4
 
12
5
  beforeEach(function() {
6
+ setup();
13
7
  FBWorld.loggedIn('publish_actions');
14
8
  FBWorld.connected();
15
9
  });
16
10
 
11
+ afterEach(function() {
12
+ FBWorld.reset();
13
+ });
14
+
17
15
  describe("when I call FB.api('/me/friends', callback)", function() {
18
16
  it("should callback with FBWorld.friendList", function() {
19
17
  FB.api('/me/friends', function (r) {
@@ -160,6 +158,14 @@ describe("FB.api", function() {
160
158
  });
161
159
 
162
160
  describe("when not connected", function () {
161
+ beforeEach(function() {
162
+ setup();
163
+ });
164
+
165
+ afterEach(function() {
166
+ FBWorld.reset();
167
+ });
168
+
163
169
  it("should callback with the unconnected error object", function() {
164
170
  FB.api('/me/friends', function (r) {
165
171
  expect(r).toEqual(apiUnconnectedMessage());
@@ -1,4 +1,14 @@
1
1
  function setup() {
2
+ FBWorld.Helpers.setCookieBasedOnName = function(name, value, options) {
3
+ this.fakeCookie = this.fakeCookie || {};
4
+ this.fakeCookie[name] = value;
5
+ };
6
+
7
+ FBWorld.Helpers.getCookieBasedOnName = function(name) {
8
+ this.fakeCookie = this.fakeCookie || {};
9
+ return this.fakeCookie[name];
10
+ };
11
+
2
12
  FBWorld.setSecret('00000000000000000000000000000000');
3
13
 
4
14
  FB.init({
@@ -9,7 +19,6 @@ function setup() {
9
19
  channelUrl : '/facebook/channel.html',
10
20
  oauth : true
11
21
  });
12
-
13
22
  }
14
23
 
15
24
  function apiUnconnectedMessage() {
@@ -11,7 +11,7 @@
11
11
  # - dist/**/*.js
12
12
  #
13
13
  src_files:
14
- - bin/*.js
14
+ - bin/*.js
15
15
 
16
16
  # stylesheets
17
17
  #
@@ -37,6 +37,7 @@ stylesheets:
37
37
  # - helpers/**/*.js
38
38
  #
39
39
  helpers:
40
+ - helpers/*.js
40
41
 
41
42
  # spec_files
42
43
  #
@@ -49,6 +50,7 @@ helpers:
49
50
  # - **/*[sS]pec.js
50
51
  #
51
52
  spec_files:
53
+ - /*Spec.js
52
54
 
53
55
  # src_dir
54
56
  #
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: facebook-stub
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1.21
4
+ version: 0.0.1.22
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-12-07 00:00:00.000000000 Z
12
+ date: 2013-01-18 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: debugger
16
- requirement: &2190503640 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2190503640
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: sprockets
27
- requirement: &2190503220 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *2190503220
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rake
38
- requirement: &2190502800 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *2190502800
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: sinatra
49
- requirement: &2190502380 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,10 +69,15 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *2190502380
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  - !ruby/object:Gem::Dependency
59
79
  name: shotgun
60
- requirement: &2190501960 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
61
81
  none: false
62
82
  requirements:
63
83
  - - ! '>='
@@ -65,10 +85,15 @@ dependencies:
65
85
  version: '0'
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *2190501960
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
69
94
  - !ruby/object:Gem::Dependency
70
95
  name: haml
71
- requirement: &2190501540 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
72
97
  none: false
73
98
  requirements:
74
99
  - - ! '>='
@@ -76,10 +101,15 @@ dependencies:
76
101
  version: '0'
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *2190501540
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
80
110
  - !ruby/object:Gem::Dependency
81
111
  name: rspec
82
- requirement: &2190501120 !ruby/object:Gem::Requirement
112
+ requirement: !ruby/object:Gem::Requirement
83
113
  none: false
84
114
  requirements:
85
115
  - - ! '>='
@@ -87,10 +117,15 @@ dependencies:
87
117
  version: '0'
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *2190501120
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
91
126
  - !ruby/object:Gem::Dependency
92
127
  name: capybara
93
- requirement: &2190500700 !ruby/object:Gem::Requirement
128
+ requirement: !ruby/object:Gem::Requirement
94
129
  none: false
95
130
  requirements:
96
131
  - - ! '>='
@@ -98,10 +133,15 @@ dependencies:
98
133
  version: '0'
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *2190500700
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
102
142
  - !ruby/object:Gem::Dependency
103
143
  name: jasmine
104
- requirement: &2190500280 !ruby/object:Gem::Requirement
144
+ requirement: !ruby/object:Gem::Requirement
105
145
  none: false
106
146
  requirements:
107
147
  - - ! '>='
@@ -109,7 +149,12 @@ dependencies:
109
149
  version: '0'
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *2190500280
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
113
158
  description: facebook-stub is a gem for stubbing out the Facebook JavaScript API in
114
159
  acceptance and integration tests.
115
160
  email:
@@ -160,7 +205,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
160
205
  version: '0'
161
206
  segments:
162
207
  - 0
163
- hash: -1661798866571045948
208
+ hash: -3884959683233776032
164
209
  required_rubygems_version: !ruby/object:Gem::Requirement
165
210
  none: false
166
211
  requirements:
@@ -169,10 +214,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
214
  version: '0'
170
215
  segments:
171
216
  - 0
172
- hash: -1661798866571045948
217
+ hash: -3884959683233776032
173
218
  requirements: []
174
219
  rubyforge_project: facebook-stub
175
- rubygems_version: 1.8.15
220
+ rubygems_version: 1.8.24
176
221
  signing_key:
177
222
  specification_version: 3
178
223
  summary: Stub out the FB JS API