rest-graph 1.4.5 → 1.4.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.
data/test/common.rb CHANGED
@@ -7,6 +7,9 @@ require 'rr'
7
7
  require 'webmock'
8
8
  require 'bacon'
9
9
 
10
+ # for testing lighten (serialization)
11
+ require 'yaml'
12
+
10
13
  include RR::Adapters::RRMethods
11
14
  include WebMock
12
15
  WebMock.disable_net_connect!
@@ -0,0 +1,26 @@
1
+
2
+ if respond_to?(:require_relative, true)
3
+ require_relative 'common'
4
+ else
5
+ require File.dirname(__FILE__) + '/common'
6
+ end
7
+
8
+ describe RestGraph do
9
+ after do
10
+ reset_webmock
11
+ RR.verify
12
+ end
13
+
14
+ it 'would return true in authorized? if there is an access_token' do
15
+ RestGraph.new(:access_token => '1').authorized?.should == true
16
+ RestGraph.new(:access_token => nil).authorized?.should == false
17
+ end
18
+
19
+ it 'would treat oauth_token as access_token as well' do
20
+ rg = RestGraph.new
21
+ hate_facebook = 'why the hell two different name?'
22
+ rg.data['oauth_token'] = hate_facebook
23
+ rg.authorized?.should == true
24
+ rg.access_token == hate_facebook
25
+ end
26
+ end
@@ -11,39 +11,11 @@ describe RestGraph do
11
11
  RR.verify
12
12
  end
13
13
 
14
- it 'would build correct headers' do
15
- rg = RestGraph.new(:accept => 'text/html',
16
- :lang => 'zh-tw')
17
- rg.send(:build_headers).should == {'Accept' => 'text/html',
18
- 'Accept-Language' => 'zh-tw'}
19
- end
20
-
21
- it 'would build empty query string' do
22
- RestGraph.new.send(:build_query_string).should == ''
23
- end
24
-
25
- it 'would create access_token in query string' do
26
- RestGraph.new(:access_token => 'token').send(:build_query_string).
27
- should == '?access_token=token'
28
- end
29
-
30
- it 'would build correct query string' do
31
- TestHelper.normalize_query(
32
- RestGraph.new(:access_token => 'token').send(:build_query_string,
33
- :message => 'hi!!')).
34
- should == '?access_token=token&message=hi%21%21'
35
-
36
- TestHelper.normalize_query(
37
- RestGraph.new.send(:build_query_string, :message => 'hi!!',
38
- :subject => '(&oh&)')).
39
- should == '?message=hi%21%21&subject=%28%26oh%26%29'
40
- end
41
-
42
14
  it 'would generate correct url' do
43
15
  TestHelper.normalize_url(
44
- RestGraph.new(:access_token => 'awesome').url('path', :query => 'string')).
16
+ RestGraph.new(:access_token => 'awesome').url('path', :query => 'str')).
45
17
  should ==
46
- 'https://graph.facebook.com/path?access_token=awesome&query=string'
18
+ 'https://graph.facebook.com/path?access_token=awesome&query=str'
47
19
  end
48
20
 
49
21
  it 'would request to correct server' do
@@ -69,16 +41,6 @@ describe RestGraph do
69
41
  post('feed/me', :message => 'hi there').should == 'ok'
70
42
  end
71
43
 
72
- it 'would auto decode json' do
73
- RestGraph.new(:auto_decode => true).send(:post_request, '[]').
74
- should == []
75
- end
76
-
77
- it 'would not auto decode json' do
78
- RestGraph.new(:auto_decode => false).send(:post_request, '[]').
79
- should == '[]'
80
- end
81
-
82
44
  it 'could suppress auto-decode in an api call' do
83
45
  stub_request(:get, 'https://graph.facebook.com/woot').
84
46
  to_return(:body => 'bad json')
@@ -106,36 +68,10 @@ describe RestGraph do
106
68
  }
107
69
  end
108
70
 
109
- it 'would return true in authorized? if there is an access_token' do
110
- RestGraph.new(:access_token => '1').authorized?.should == true
111
- RestGraph.new(:access_token => nil).authorized?.should == false
112
- end
113
-
114
71
  it 'would convert query to string' do
115
72
  mock(o = Object.new).to_s{ 'i am mock' }
116
73
  stub_request(:get, "https://graph.facebook.com/search?q=i%20am%20mock").
117
74
  to_return(:body => 'ok')
118
75
  RestGraph.new(:auto_decode => false).get('search', :q => o).should == 'ok'
119
76
  end
120
-
121
- it 'would enable cache if passing cache' do
122
- url, body = "https://graph.facebook.com/cache", '{"message":"ok"}'
123
- stub_request(:get, url).to_return(:body => body)
124
-
125
- cache = {}
126
- rg = RestGraph.new(:cache => cache, :auto_decode => false)
127
- 3.times{
128
- rg.get('cache').should == body
129
- reset_webmock
130
- }
131
- cache.should == {rg.send(:cache_key, url) => body}
132
- end
133
-
134
- it 'would treat oauth_token as access_token as well' do
135
- rg = RestGraph.new
136
- hate_facebook = 'why the hell two different name?'
137
- rg.data['oauth_token'] = hate_facebook
138
- rg.authorized?.should == true
139
- rg.access_token == hate_facebook
140
- end
141
77
  end
@@ -0,0 +1,41 @@
1
+
2
+ if respond_to?(:require_relative, true)
3
+ require_relative 'common'
4
+ else
5
+ require File.dirname(__FILE__) + '/common'
6
+ end
7
+
8
+ describe RestGraph do
9
+ after do
10
+ reset_webmock
11
+ RR.verify
12
+ end
13
+
14
+ it 'would enable cache if passing cache' do
15
+ url, body = "https://graph.facebook.com/cache", '{"message":"ok"}'
16
+ stub_request(:get, url).to_return(:body => body).times(1)
17
+
18
+ cache = {}
19
+ rg = RestGraph.new(:cache => cache, :auto_decode => false)
20
+ 3.times{ rg.get('cache').should == body }
21
+ cache.should == {rg.send(:cache_key, url) => body}
22
+ end
23
+
24
+ it 'would not cache post/put/delete' do
25
+ [:put, :post, :delete].each{ |meth|
26
+ url, body = "https://graph.facebook.com/cache", '{"message":"ok"}'
27
+ stub_request(meth, url).to_return(:body => body).times(3)
28
+
29
+ cache = {}
30
+ rg = RestGraph.new(:cache => cache)
31
+ 3.times{
32
+ if meth == :delete
33
+ rg.send(meth, 'cache').should == {'message' => 'ok'}
34
+ else
35
+ rg.send(meth, 'cache', 'payload').should == {'message' => 'ok'}
36
+ end
37
+ }
38
+ cache.should == {}
39
+ }
40
+ end
41
+ end
data/test/test_handler.rb CHANGED
@@ -5,8 +5,6 @@ else
5
5
  require File.dirname(__FILE__) + '/common'
6
6
  end
7
7
 
8
- require 'json'
9
-
10
8
  describe RestGraph do
11
9
  after do
12
10
  reset_webmock
@@ -34,7 +32,7 @@ describe RestGraph do
34
32
  before do
35
33
  @id = lambda{ |obj| obj }
36
34
  @error = '{"error":{"type":"Exception","message":"(#2500)"}}'
37
- @error_hash = JSON.parse(@error)
35
+ @error_hash = RestGraph.json_decode(@error)
38
36
 
39
37
  stub_request(:get, 'https://graph.facebook.com/me').
40
38
  to_return(:body => @error)
@@ -63,7 +61,7 @@ describe RestGraph do
63
61
  before do
64
62
  @id = lambda{ |obj| obj }
65
63
  @fql_error = '{"error_code":603,"error_msg":"Unknown table: bad"}'
66
- @fql_error_hash = JSON.parse(@fql_error)
64
+ @fql_error_hash = RestGraph.json_decode(@fql_error)
67
65
 
68
66
  @bad_fql_query = 'SELECT name FROM bad_table WHERE uid="12345"'
69
67
  bad_fql_request = "https://api.facebook.com/method/fql.query?" \
data/test/test_misc.rb ADDED
@@ -0,0 +1,51 @@
1
+
2
+ if respond_to?(:require_relative, true)
3
+ require_relative 'common'
4
+ else
5
+ require File.dirname(__FILE__) + '/common'
6
+ end
7
+
8
+ describe RestGraph do
9
+ after do
10
+ reset_webmock
11
+ RR.verify
12
+ end
13
+
14
+ it 'would build correct headers' do
15
+ rg = RestGraph.new(:accept => 'text/html',
16
+ :lang => 'zh-tw')
17
+ rg.send(:build_headers).should == {'Accept' => 'text/html',
18
+ 'Accept-Language' => 'zh-tw'}
19
+ end
20
+
21
+ it 'would build empty query string' do
22
+ RestGraph.new.send(:build_query_string).should == ''
23
+ end
24
+
25
+ it 'would create access_token in query string' do
26
+ RestGraph.new(:access_token => 'token').send(:build_query_string).
27
+ should == '?access_token=token'
28
+ end
29
+
30
+ it 'would build correct query string' do
31
+ TestHelper.normalize_query(
32
+ RestGraph.new(:access_token => 'token').send(:build_query_string,
33
+ :message => 'hi!!')).
34
+ should == '?access_token=token&message=hi%21%21'
35
+
36
+ TestHelper.normalize_query(
37
+ RestGraph.new.send(:build_query_string, :message => 'hi!!',
38
+ :subject => '(&oh&)')).
39
+ should == '?message=hi%21%21&subject=%28%26oh%26%29'
40
+ end
41
+
42
+ it 'would auto decode json' do
43
+ RestGraph.new(:auto_decode => true).send(:post_request, '[]').
44
+ should == []
45
+ end
46
+
47
+ it 'would not auto decode json' do
48
+ RestGraph.new(:auto_decode => false).send(:post_request, '[]').
49
+ should == '[]'
50
+ end
51
+ end
data/test/test_old.rb CHANGED
@@ -45,19 +45,7 @@ describe RestGraph do
45
45
  }
46
46
 
47
47
  stub_multi.call
48
-
49
- queries = {:f0 => f0, :f1 => f1}
50
- RestGraph.new.fql_multi(queries).should == []
51
-
52
- # FIXME: didn't work
53
- # mock(queries).respond_to?(:json){ false }
54
- # mock.proxy(queries).inject
55
- def queries.respond_to? msg
56
- msg == :to_json ? false : super(msg)
57
- end
58
-
59
- stub_multi.call
60
- RestGraph.new.fql_multi(queries).should == []
48
+ RestGraph.new.fql_multi(:f0 => f0, :f1 => f1).should == []
61
49
  end
62
50
 
63
51
  it 'would do facebook old rest api' do
data/test/test_parse.rb CHANGED
@@ -70,7 +70,7 @@ describe RestGraph do
70
70
 
71
71
  it 'would parse signed_request' do
72
72
  secret = 'aloha'
73
- json = {'ooh' => 'dir', 'moo' => 'bar'}.to_json
73
+ json = RestGraph.json_encode('ooh' => 'dir', 'moo' => 'bar')
74
74
  encode = lambda{ |str|
75
75
  [str].pack('m').tr("\n=", '').tr('+/', '-_')
76
76
  }
@@ -0,0 +1,26 @@
1
+
2
+ if respond_to?(:require_relative, true)
3
+ require_relative 'common'
4
+ else
5
+ require File.dirname(__FILE__) + '/common'
6
+ end
7
+
8
+ describe RestGraph do
9
+ after do
10
+ reset_webmock
11
+ RR.verify
12
+ end
13
+
14
+ it 'could be serialized with lighten' do
15
+ marshal = RUBY_VERSION >= '1.9' ? Marshal : nil
16
+ [YAML, marshal].compact.each{ |engine|
17
+ test = lambda{ |obj| engine.load(engine.dump(obj)) }
18
+ rg = RestGraph.new(:log_handler => lambda{})
19
+ lambda{ test[rg] }.should.raise(TypeError)
20
+ test[rg.lighten].should == rg.lighten
21
+ lambda{ test[rg] }.should.raise(TypeError)
22
+ rg.lighten!
23
+ test[rg.lighten].should == rg
24
+ }
25
+ end
26
+ end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rest-graph
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
5
4
  prerelease: false
6
5
  segments:
7
6
  - 1
8
7
  - 4
9
- - 5
10
- version: 1.4.5
8
+ - 6
9
+ version: 1.4.6
11
10
  platform: ruby
12
11
  authors:
13
12
  - Cardinal Blue
@@ -16,7 +15,7 @@ autorequire:
16
15
  bindir: bin
17
16
  cert_chain: []
18
17
 
19
- date: 2010-08-07 00:00:00 +08:00
18
+ date: 2010-09-01 00:00:00 +08:00
20
19
  default_executable:
21
20
  dependencies:
22
21
  - !ruby/object:Gem::Dependency
@@ -27,111 +26,134 @@ dependencies:
27
26
  requirements:
28
27
  - - ">="
29
28
  - !ruby/object:Gem::Version
30
- hash: 15
31
29
  segments:
32
30
  - 1
33
31
  - 6
34
- - 0
35
- version: 1.6.0
32
+ - 1
33
+ version: 1.6.1
36
34
  type: :runtime
37
35
  version_requirements: *id001
38
36
  - !ruby/object:Gem::Dependency
39
- name: json
37
+ name: yajl-ruby
40
38
  prerelease: false
41
39
  requirement: &id002 !ruby/object:Gem::Requirement
42
40
  none: false
43
41
  requirements:
44
42
  - - ">="
45
43
  - !ruby/object:Gem::Version
46
- hash: 1
44
+ segments:
45
+ - 0
46
+ - 7
47
+ - 7
48
+ version: 0.7.7
49
+ type: :development
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: json
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
47
59
  segments:
48
60
  - 1
49
61
  - 4
50
- - 3
51
- version: 1.4.3
62
+ - 6
63
+ version: 1.4.6
52
64
  type: :development
53
- version_requirements: *id002
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: json_pure
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ segments:
75
+ - 1
76
+ - 4
77
+ - 6
78
+ version: 1.4.6
79
+ type: :development
80
+ version_requirements: *id004
54
81
  - !ruby/object:Gem::Dependency
55
82
  name: rack
56
83
  prerelease: false
57
- requirement: &id003 !ruby/object:Gem::Requirement
84
+ requirement: &id005 !ruby/object:Gem::Requirement
58
85
  none: false
59
86
  requirements:
60
87
  - - ">="
61
88
  - !ruby/object:Gem::Version
62
- hash: 29
63
89
  segments:
64
90
  - 1
65
91
  - 2
66
92
  - 1
67
93
  version: 1.2.1
68
94
  type: :development
69
- version_requirements: *id003
95
+ version_requirements: *id005
70
96
  - !ruby/object:Gem::Dependency
71
97
  name: rr
72
98
  prerelease: false
73
- requirement: &id004 !ruby/object:Gem::Requirement
99
+ requirement: &id006 !ruby/object:Gem::Requirement
74
100
  none: false
75
101
  requirements:
76
102
  - - ">="
77
103
  - !ruby/object:Gem::Version
78
- hash: 33
79
104
  segments:
105
+ - 1
106
+ - 0
80
107
  - 0
81
- - 10
82
- - 11
83
- version: 0.10.11
108
+ version: 1.0.0
84
109
  type: :development
85
- version_requirements: *id004
110
+ version_requirements: *id006
86
111
  - !ruby/object:Gem::Dependency
87
112
  name: webmock
88
113
  prerelease: false
89
- requirement: &id005 !ruby/object:Gem::Requirement
114
+ requirement: &id007 !ruby/object:Gem::Requirement
90
115
  none: false
91
116
  requirements:
92
117
  - - ">="
93
118
  - !ruby/object:Gem::Version
94
- hash: 29
95
119
  segments:
96
120
  - 1
97
121
  - 3
98
- - 3
99
- version: 1.3.3
122
+ - 4
123
+ version: 1.3.4
100
124
  type: :development
101
- version_requirements: *id005
125
+ version_requirements: *id007
102
126
  - !ruby/object:Gem::Dependency
103
127
  name: bacon
104
128
  prerelease: false
105
- requirement: &id006 !ruby/object:Gem::Requirement
129
+ requirement: &id008 !ruby/object:Gem::Requirement
106
130
  none: false
107
131
  requirements:
108
132
  - - ">="
109
133
  - !ruby/object:Gem::Version
110
- hash: 19
111
134
  segments:
112
135
  - 1
113
136
  - 1
114
137
  - 0
115
138
  version: 1.1.0
116
139
  type: :development
117
- version_requirements: *id006
140
+ version_requirements: *id008
118
141
  - !ruby/object:Gem::Dependency
119
142
  name: bones
120
143
  prerelease: false
121
- requirement: &id007 !ruby/object:Gem::Requirement
144
+ requirement: &id009 !ruby/object:Gem::Requirement
122
145
  none: false
123
146
  requirements:
124
147
  - - ">="
125
148
  - !ruby/object:Gem::Version
126
- hash: 25
127
149
  segments:
128
150
  - 3
129
151
  - 4
130
152
  - 7
131
153
  version: 3.4.7
132
154
  type: :development
133
- version_requirements: *id007
134
- description: " A super simple Facebook Open Graph API client"
155
+ version_requirements: *id009
156
+ description: A super simple Facebook Open Graph API client
135
157
  email: dev (XD) cardinalblue.com
136
158
  executables: []
137
159
 
@@ -139,19 +161,16 @@ extensions: []
139
161
 
140
162
  extra_rdoc_files:
141
163
  - CHANGES
164
+ - CONTRIBUTORS
142
165
  - Gemfile
143
166
  - Gemfile.lock
144
167
  - LICENSE
145
168
  - README
146
169
  - TODO
147
- - example/rails/README
148
- - example/rails/config/rest-graph.yaml
149
- - example/rails/log
150
- - example/rails/script/console
151
- - example/rails/script/server
152
170
  - rest-graph.gemspec
153
171
  files:
154
172
  - CHANGES
173
+ - CONTRIBUTORS
155
174
  - Gemfile
156
175
  - Gemfile.lock
157
176
  - LICENSE
@@ -187,13 +206,17 @@ files:
187
206
  - rest-graph.gemspec
188
207
  - test/common.rb
189
208
  - test/config/rest-graph.yaml
209
+ - test/test_access_token.rb
210
+ - test/test_api.rb
211
+ - test/test_cache.rb
190
212
  - test/test_default.rb
191
213
  - test/test_handler.rb
192
214
  - test/test_load_config.rb
215
+ - test/test_misc.rb
193
216
  - test/test_oauth.rb
194
217
  - test/test_old.rb
195
218
  - test/test_parse.rb
196
- - test/test_rest-graph.rb
219
+ - test/test_serialize.rb
197
220
  has_rdoc: true
198
221
  homepage: http://github.com/cardinalblue/rest-graph
199
222
  licenses: []
@@ -209,7 +232,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
209
232
  requirements:
210
233
  - - ">="
211
234
  - !ruby/object:Gem::Version
212
- hash: 3
213
235
  segments:
214
236
  - 0
215
237
  version: "0"
@@ -218,7 +240,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
218
240
  requirements:
219
241
  - - ">="
220
242
  - !ruby/object:Gem::Version
221
- hash: 3
222
243
  segments:
223
244
  - 0
224
245
  version: "0"
@@ -230,10 +251,14 @@ signing_key:
230
251
  specification_version: 3
231
252
  summary: A super simple Facebook Open Graph API client
232
253
  test_files:
254
+ - test/test_access_token.rb
255
+ - test/test_api.rb
256
+ - test/test_cache.rb
233
257
  - test/test_default.rb
234
258
  - test/test_handler.rb
235
259
  - test/test_load_config.rb
260
+ - test/test_misc.rb
236
261
  - test/test_oauth.rb
237
262
  - test/test_old.rb
238
263
  - test/test_parse.rb
239
- - test/test_rest-graph.rb
264
+ - test/test_serialize.rb