facebook-stub 0.0.1.4 → 0.0.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,10 @@
1
+ module FacebookStub
2
+ module Rails
3
+ module ActionViewHelper
4
+ @@facebook_javascript_stub = nil
5
+ def include_facebook_stub
6
+ @@facebook_javascript_stub ||= javascript_tag File.read File.expand_path('../../../../pkg/facebook-stub.js', __FILE__)
7
+ end
8
+ end
9
+ end
10
+ end
File without changes
File without changes
@@ -0,0 +1,3 @@
1
+ module FacebookStub
2
+ VERSION = "0.0.1.6"
3
+ end
@@ -0,0 +1,301 @@
1
+ require 'spec_helper'
2
+
3
+ describe "facebook-stub.js" do
4
+
5
+ def js_exec script
6
+ page.evaluate_script script
7
+ end
8
+
9
+ def logged_in?
10
+ js_exec("FBWorld.state('loggedIn')")
11
+ end
12
+
13
+ def being_prompted_to_login?
14
+ js_exec("FBWorld.beingPromptedToLogin")
15
+ end
16
+
17
+ def login!(options={})
18
+ js_exec("FB.login(function() {}, #{options.to_json})")
19
+ end
20
+
21
+ def successfully_login!
22
+ js_exec("FBWorld.successfullyLogin()")
23
+ end
24
+
25
+ def fail_to_login!
26
+ js_exec("FBWorld.failToLogin()")
27
+ end
28
+
29
+ def cancel_login!
30
+ js_exec("FBWorld.cancelLogin()")
31
+ end
32
+
33
+ def logged_in!
34
+ js_exec("FBWorld.loggedIn()")
35
+ end
36
+
37
+ def connected!
38
+ js_exec("FBWorld.connected()")
39
+ end
40
+
41
+ def connected?
42
+ js_exec("FBWorld.state('connected')")
43
+ end
44
+
45
+ def being_prompted_to_connect?
46
+ js_exec("FBWorld.beingPromptedToConnect")
47
+ end
48
+
49
+ def accept_prompt_to_connect!
50
+ js_exec("FBWorld.acceptPromptToConnect()")
51
+ end
52
+
53
+ def cancel_prompt_to_connect!
54
+ js_exec("FBWorld.cancelPromptToConnect()")
55
+ end
56
+
57
+ def deny_prompt_to_connect!
58
+ js_exec("FBWorld.cancelPromptToConnect()")
59
+ end
60
+
61
+ def being_prompted_to_add_permissions?
62
+ js_exec("FBWorld.beingPromptedToAddPermissions")
63
+ end
64
+
65
+ def being_prompted_to_add_these_permissions?(perms)
66
+ js_exec("FBWorld.beingPromptedToAddThesePermissions('#{perms}')")
67
+ end
68
+
69
+ def accept_prompt_to_add_permissions!(perms=nil)
70
+ if perms
71
+ js_exec("FBWorld.acceptPromptToAddPermissions('#{perms}')")
72
+ else
73
+ js_exec("FBWorld.acceptPromptToAddPermissions()")
74
+ end
75
+ end
76
+
77
+ def skip_prompt_to_add_permissions!
78
+ js_exec("FBWorld.skipPromptToAddPermissions()")
79
+ end
80
+
81
+ def has_permissions?(perms)
82
+ js_exec("FBWorld.hasPermissions('#{perms}')")
83
+ end
84
+
85
+ describe "logging into facebook" do
86
+
87
+ before do
88
+ visit '/'
89
+ logged_in?.should be_false
90
+ being_prompted_to_login?.should be_false
91
+ login!
92
+ end
93
+
94
+ it "should simulate a login prompt" do
95
+ being_prompted_to_login?.should be_true
96
+ end
97
+
98
+ context "when I call FBWorld.successfullyLogin()" do
99
+ before{ successfully_login! }
100
+ it "should make FBWorld.state('loggedIn') true" do
101
+ being_prompted_to_login?.should be_false
102
+ logged_in?.should be_true
103
+ visit '/'
104
+ logged_in?.should be_true
105
+ end
106
+ end
107
+
108
+ context "when I call FBWorld.cancelLogin()" do
109
+ before{ cancel_login! }
110
+ it "should make FBWorld.state('loggedIn') false" do
111
+ being_prompted_to_login?.should be_false
112
+ logged_in?.should be_false
113
+ visit '/'
114
+ logged_in?.should be_false
115
+ end
116
+ end
117
+
118
+ context "when I call FBWorld.failToLogin()" do
119
+ before{ fail_to_login! }
120
+ it "should make FBWorld.state('loggedIn') false" do
121
+ being_prompted_to_login?.should be_false
122
+ logged_in?.should be_false
123
+ visit '/'
124
+ logged_in?.should be_false
125
+ end
126
+ end
127
+ end
128
+
129
+ describe "connecting to facebook" do
130
+ context "when I try login to facebook" do
131
+ before do
132
+ visit '/'
133
+ logged_in!
134
+ logged_in?.should be_true
135
+ end
136
+
137
+ context "I should see simulated connect dialogs" do
138
+ before do
139
+ connected?.should be_false
140
+ being_prompted_to_connect?.should be_false
141
+ login!
142
+ logged_in?.should be_true
143
+ being_prompted_to_connect?.should be_true
144
+ end
145
+
146
+ context "when I call FBWorld.acceptPromptToConnect()" do
147
+ before { accept_prompt_to_connect! }
148
+ it "should make FBWorld.state('connected') true" do
149
+ being_prompted_to_connect?.should be_false
150
+ connected?.should be_true
151
+ visit '/'
152
+ connected?.should be_true
153
+ end
154
+ end
155
+
156
+ context "when I call FBWorld.cancelPromptToConnect()" do
157
+ before { cancel_prompt_to_connect! }
158
+ it "should make FBWorld.state('connected') false" do
159
+ being_prompted_to_connect?.should be_false
160
+ connected?.should be_false
161
+ visit '/'
162
+ connected?.should be_false
163
+ end
164
+ end
165
+
166
+ context "when I call FBWorld.denyPromptToConnect()" do
167
+ before { deny_prompt_to_connect! }
168
+ it "should make FBWorld.state('connected') false" do
169
+ being_prompted_to_connect?.should be_false
170
+ connected?.should be_false
171
+ visit '/'
172
+ connected?.should be_false
173
+ end
174
+ end
175
+ end
176
+ end
177
+ end
178
+
179
+ describe "adding permissions after being logged in and connected" do
180
+
181
+ before do
182
+ visit '/'
183
+ logged_in?.should be_false
184
+ being_prompted_to_login?.should be_false
185
+ logged_in!
186
+ connected!
187
+ end
188
+
189
+ context "when I call FB.login with more permissions" do
190
+ before do
191
+ login! :scope => 'perm1,perm2'
192
+ end
193
+
194
+ it "should make FBWorld.beingPromptedToAddThesePermissions('perm1') return true" do
195
+ being_prompted_to_add_these_permissions?('perm1,perm2').should be_true
196
+ end
197
+
198
+ context "when I call FBWorld.acceptPromptToAddPermissions and accept partial permissions" do
199
+ before do
200
+ accept_prompt_to_add_permissions! 'perm1'
201
+ end
202
+
203
+ it "should make hasPermissions('perm1') return true and hasPermissions('perm2') return false" do
204
+ has_permissions?('perm1').should be_true
205
+ has_permissions?('perm2').should be_false
206
+ end
207
+
208
+ context "when I call FB.login with more permissions than accepted and the previous accepted permissions" do
209
+ before do
210
+ login! :scope => 'perm1,perm2'
211
+ end
212
+
213
+ it "should make FBWorld.beingPromptedToAddThesePermissions('perm2') return true" do
214
+ being_prompted_to_add_these_permissions?('perm2').should be_true
215
+ end
216
+
217
+ context "when I call FBWorld.acceptPromptToAddPermissions and accept partial permissions" do
218
+ before do
219
+ accept_prompt_to_add_permissions! 'perm2'
220
+ end
221
+
222
+ it "should make hasPermissions('perm1,perm2') return true" do
223
+ has_permissions?('perm1,perm2').should be_true
224
+ end
225
+
226
+ end
227
+ end
228
+
229
+ context "when I call FB.login with more permissions than accepted" do
230
+ before do
231
+ login! :scope => 'perm2'
232
+ end
233
+
234
+ it "should make FBWorld.beingPromptedToAddThesePermissions('perm2') return true" do
235
+ being_prompted_to_add_these_permissions?('perm2').should be_true
236
+ end
237
+
238
+ context "when I call FBWorld.acceptPromptToAddPermissions and accept partial permissions" do
239
+ before do
240
+ accept_prompt_to_add_permissions! 'perm2'
241
+ end
242
+
243
+ it "should make hasPermissions('perm1,perm2') return true" do
244
+ has_permissions?('perm1,perm2').should be_true
245
+ end
246
+
247
+ end
248
+ end
249
+
250
+ end
251
+
252
+ context "when I call FBWorld.acceptPromptToAddPermissions to accept all permissions" do
253
+ before do
254
+ accept_prompt_to_add_permissions!
255
+ end
256
+
257
+ it "should make FBWorld.hasPermissions('perm1,perm2') return true" do
258
+ has_permissions?('perm1,perm2').should be_true
259
+ end
260
+
261
+ context "when I call FB.login again" do
262
+ before do
263
+ login! :scope => "perm1,perm2"
264
+ end
265
+
266
+ it "should make call to FBWorld.beingPromptedToAddPermissions return false" do
267
+ being_prompted_to_add_permissions?.should be_false
268
+ end
269
+ end
270
+ end
271
+
272
+ context "when I call FBWorld.skipPromptToAddPermissions to skip permissions" do
273
+ before do
274
+ skip_prompt_to_add_permissions!
275
+ end
276
+
277
+ it "should make FBWorld.beingPromptedToAddThesePermissions('perm1,perm2') return false" do
278
+ being_prompted_to_add_these_permissions?('perm1,perm2').should be_false
279
+ end
280
+
281
+ it "should make FBWorld.hasPermissions('perm1,perm2') return false" do
282
+ has_permissions?('perm1,perm2').should be_false
283
+ has_permissions?('perm1').should be_false
284
+ has_permissions?('perm2').should be_false
285
+ end
286
+
287
+ context "when I call FB.login again" do
288
+ before do
289
+ login! :scope => 'perm1,perm2'
290
+ end
291
+
292
+ it "should make FBWorld.beingPromptedToAddThesePermissions('perm1,perm2') return false" do
293
+ being_prompted_to_add_these_permissions?('perm1,perm2').should be_true
294
+ end
295
+ end
296
+
297
+ end
298
+
299
+ end
300
+ end
301
+ end
@@ -0,0 +1,41 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # Require this file using `require "spec_helper.rb"` to ensure that it is only
4
+ # loaded once.
5
+ #
6
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
7
+
8
+ $: << File.expand_path('../../lib', __FILE__)
9
+
10
+ require 'capybara'
11
+ require 'capybara/dsl'
12
+ require 'capybara/rspec'
13
+
14
+ require 'ruby-debug'
15
+ require File.expand_path('../../test/server', __FILE__)
16
+
17
+ Capybara.configure do |config|
18
+
19
+ config.register_driver :selenium_firefox do |app|
20
+ Capybara::Selenium::Driver.new(app, :browser => :firefox, :resynchronization_timeout => 20)
21
+ end
22
+
23
+ config.register_driver :selenium_chrome do |app|
24
+ Capybara::Selenium::Driver.new(app, :browser => :chrome, :resynchronization_timeout => 20)
25
+ end
26
+
27
+ config.app = TestServer
28
+ config.run_server = true
29
+ # config.server {|app, port| Capybara.run_default_server(app, port) }
30
+ config.default_driver = :selenium_chrome
31
+ config.javascript_driver = :selenium_chrome
32
+ config.default_selector = :css
33
+ config.ignore_hidden_elements = true
34
+ end
35
+
36
+ RSpec.configure do |config|
37
+ config.treat_symbols_as_metadata_keys_with_true_values = true
38
+ config.run_all_when_everything_filtered = true
39
+ config.filter_run :focus
40
+ config.include Capybara::DSL
41
+ end
data/test/config.ru ADDED
@@ -0,0 +1,3 @@
1
+ require File.expand_path('../server', __FILE__)
2
+
3
+ run TestServer
data/test/server.rb ADDED
@@ -0,0 +1,20 @@
1
+ require 'sinatra/base'
2
+ require 'haml'
3
+
4
+ class TestServer < Sinatra::Base
5
+
6
+ ROOT = Pathname.new(File.expand_path('../..', __FILE__))
7
+ VIEWS = ROOT + "test/views"
8
+
9
+ set :views, VIEWS
10
+
11
+ get '/javascripts/facebook-stub.js' do
12
+ response['Content-Type'] = "application/javascript"
13
+ File.read ROOT + 'pkg/facebook-stub.js'
14
+ end
15
+
16
+ get '/' do
17
+ haml :test
18
+ end
19
+
20
+ end
@@ -0,0 +1,20 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %meta{:charset => "utf-8"}
5
+ %title Facebook Stub Test
6
+ %script{:src => "/javascripts/facebook-stub.js", :type => "text/javascript"}
7
+ :javascript
8
+
9
+ FBWorld.setSecret('00000000000000000000000000000000');
10
+
11
+ FB.init({
12
+ appId : '000000000000000',
13
+ status : true, // check login status
14
+ cookie : true, // enable cookies to allow the server to access the session
15
+ xfbml : false, // parse XFBML
16
+ channelUrl : '/facebook/channel.html',
17
+ oauth : true
18
+ });
19
+
20
+ %body
metadata CHANGED
@@ -1,95 +1,206 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: facebook-stub
3
- version: !ruby/object:Gem::Version
4
- hash: 67
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1.6
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 1
10
- - 4
11
- version: 0.0.1.4
12
6
  platform: ruby
13
- authors:
7
+ authors:
14
8
  - Change.org
15
9
  autorequire:
16
10
  bindir: bin
17
11
  cert_chain: []
18
-
19
- date: 2012-04-18 00:00:00 Z
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
12
+ date: 2012-04-19 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: debugger
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: sprockets
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
22
38
  type: :development
23
39
  prerelease: false
24
- requirement: &id001 !ruby/object:Gem::Requirement
25
- none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- version_requirements: *id001
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
34
47
  name: rake
35
- description: facebook-stub is a gem for stubbing out the Facebook JavaScript API in acceptance and integration tests.
36
- email:
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: sinatra
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: shotgun
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: haml
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: capybara
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ description: facebook-stub is a gem for stubbing out the Facebook JavaScript API in
143
+ acceptance and integration tests.
144
+ email:
37
145
  - techops@change.org
38
146
  executables: []
39
-
40
147
  extensions: []
41
-
42
148
  extra_rdoc_files: []
43
-
44
- files:
149
+ files:
45
150
  - .gitignore
151
+ - .rspec
46
152
  - Gemfile
47
153
  - Rakefile
48
154
  - Readme.md
49
- - builder/concat
50
155
  - facebook-stub.gemspec
51
- - facebook-stub.js
156
+ - lib/facebook-stub.js
52
157
  - lib/facebook-stub.rb
53
- - lib/facebook-stub/rails/action_view_helper.rb
54
- - lib/facebook-stub/version.rb
55
- - src/facebook.js
56
- - src/libs/base64_encode.js
57
- - src/libs/cookie.js
58
- - src/libs/sha256.js
59
- - src/libs/utf8_encode.js
60
- - test/test.html
61
- homepage: ""
158
+ - lib/facebook_stub.rb
159
+ - lib/facebook_stub/base64_encode.js
160
+ - lib/facebook_stub/cookie.js
161
+ - lib/facebook_stub/core.js
162
+ - lib/facebook_stub/rails/action_view_helper.rb
163
+ - lib/facebook_stub/sha256.js
164
+ - lib/facebook_stub/utf8_encode.js
165
+ - lib/facebook_stub/version.rb
166
+ - spec/acceptance/facebook-stub_spec.rb
167
+ - spec/spec_helper.rb
168
+ - test/config.ru
169
+ - test/server.rb
170
+ - test/views/test.haml
171
+ homepage: ''
62
172
  licenses: []
63
-
64
173
  post_install_message:
65
174
  rdoc_options: []
66
-
67
- require_paths:
175
+ require_paths:
68
176
  - lib
69
- required_ruby_version: !ruby/object:Gem::Requirement
177
+ required_ruby_version: !ruby/object:Gem::Requirement
70
178
  none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 3
75
- segments:
179
+ requirements:
180
+ - - ! '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ segments:
76
184
  - 0
77
- version: "0"
78
- required_rubygems_version: !ruby/object:Gem::Requirement
185
+ hash: 3582845831125202795
186
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
187
  none: false
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- hash: 3
84
- segments:
188
+ requirements:
189
+ - - ! '>='
190
+ - !ruby/object:Gem::Version
191
+ version: '0'
192
+ segments:
85
193
  - 0
86
- version: "0"
194
+ hash: 3582845831125202795
87
195
  requirements: []
88
-
89
196
  rubyforge_project: facebook-stub
90
- rubygems_version: 1.8.10
197
+ rubygems_version: 1.8.21
91
198
  signing_key:
92
199
  specification_version: 3
93
200
  summary: Stub out the FB JS API
94
- test_files:
95
- - test/test.html
201
+ test_files:
202
+ - spec/acceptance/facebook-stub_spec.rb
203
+ - spec/spec_helper.rb
204
+ - test/config.ru
205
+ - test/server.rb
206
+ - test/views/test.haml