livefyre-mashable 0.2.0

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,3 @@
1
+ module Livefyre
2
+ VERSION = "0.2.0"
3
+ end
data/livefyre.gemspec ADDED
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/livefyre/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Mashable"]
6
+ gem.email = ["cheald@mashable.com"]
7
+ gem.description = %q{Interface library for Livefyre's comment API with Rails helpers}
8
+ gem.summary = %q{Interface library for Livefyre's comment API with Rails helpers}
9
+ gem.homepage = "http://github.com/mashable/livefyre"
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(spec)/})
14
+ gem.name = "livefyre-mashable"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Livefyre::VERSION
17
+
18
+ gem.signing_key = File.expand_path('~/.gemcert/cheald@mashable.com-private_key.pem')
19
+ gem.cert_chain = ['gem-public_cert.pem']
20
+
21
+ gem.add_dependency "faraday"
22
+ gem.add_dependency "jwt"
23
+ gem.add_dependency "ruby-hmac"
24
+
25
+ gem.add_development_dependency "rspec"
26
+ gem.add_development_dependency "simplecov"
27
+ gem.add_development_dependency "simplecov-rcov"
28
+ gem.add_development_dependency "rails"
29
+ gem.add_development_dependency "resque"
30
+ gem.add_development_dependency "yard"
31
+ gem.add_development_dependency "yard-tomdoc"
32
+ gem.add_development_dependency "redcarpet"
33
+ gem.post_install_message = <<-MESSAGE
34
+ ! The 'livefyre' gem has been deprecated and has been replaced by 'livefyre-mashable'.
35
+ ! An official client library from Livefyre will replace this one in mid-April 2014.
36
+ ! See: https://rubygems.org/gems/livefyre-mashable
37
+ ! And: https://github.com/mashable/livefyre
38
+ MESSAGE
39
+ end
@@ -0,0 +1,9 @@
1
+ module Livefyre
2
+ class Railtie < Rails::Railtie
3
+ initializer "livefyre.initializer" do
4
+ ActionController::Base.send :include, Livefyre::Controller
5
+ ActionView::Base.send :include, Livefyre::Helpers
6
+ ActiveRecord::Base.send :include, Livefyre::Model if defined?(ActiveRecord)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+
3
+ describe Livefyre::Client do
4
+ it "should not initialize without a host" do
5
+ expect { Livefyre::Client.new(:key => "x", :system_token => "x") }.to raise_error Exception
6
+ end
7
+
8
+ it "should not initialize without a key" do
9
+ expect { Livefyre::Client.new(:host => "x", :system_token => "x") }.to raise_error Exception
10
+ end
11
+
12
+ it "should not initialize without a system token" do
13
+ expect { Livefyre::Client.new(:key => "x", :host => "x") }.to raise_error Exception
14
+ end
15
+
16
+ it "should initialize with a key, host, and system token" do
17
+ Livefyre::Client.new(:key => "x", :network => "x", :system_token => "x").should be_a Livefyre::Client
18
+ end
19
+
20
+ context "an instance" do
21
+ subject { Livefyre::Client.new(:key => "x", :host => "x", :system_token => "x") }
22
+
23
+ describe "#sign" do
24
+ before { @token = subject.sign({:foo => "bar"}) }
25
+
26
+ it "should return a string token" do
27
+ @token.should be_a String
28
+ end
29
+
30
+ it "should validate" do
31
+ subject.validate(@token).should be_a Hash
32
+ end
33
+
34
+ it "should decode" do
35
+ subject.validate(@token)["foo"].should == "bar"
36
+ end
37
+ end
38
+
39
+ describe "#user" do
40
+ before { @user = subject.user(1234, "foobar") }
41
+ it "should return a user" do
42
+ @user.should be_a Livefyre::User
43
+ end
44
+
45
+ it "should have its ID set" do
46
+ @user.id.should == 1234
47
+ end
48
+
49
+ it "should have a reference to this client" do
50
+ @user.instance_variable_get("@client").should == subject
51
+ end
52
+ end
53
+
54
+ describe "#set_user_role" do
55
+ context "with a valid role and scope" do
56
+ let(:client) { double "client" }
57
+
58
+ before do
59
+ subject.stub(:http_client).and_return(client)
60
+ end
61
+
62
+ it "should post an affiliation update for a domain" do
63
+ client.should_receive(:post).with("/api/v1.1/private/management/user/123@x/role/", {:affiliation=>"admin", :lftoken=>"x", :domain_wide=>1}).and_return( double(:success? => true) )
64
+ subject.set_user_role(123, "admin", "domain").should == true
65
+ end
66
+
67
+ context "when updating a site affiliation" do
68
+ it "should fail if no scope ID is passed" do
69
+ client.should_not_receive(:post)
70
+ expect { subject.set_user_role(123, "admin", "site") }.to raise_error Exception
71
+ end
72
+
73
+ it "should post an affiliation update for a site" do
74
+ client.should_receive(:post).with("/api/v1.1/private/management/user/123@x/role/", {:affiliation=>"admin", :lftoken=>"x", :site_id=>123}).and_return( double(:success? => true) )
75
+ subject.set_user_role(123, "admin", "site", 123).should == true
76
+ end
77
+ end
78
+
79
+ context "when updating a conversation affiliation" do
80
+ it "should fail if no scope ID is passed" do
81
+ client.should_not_receive(:post)
82
+ expect { subject.set_user_role(123, "admin", "conv") }.to raise_error Exception
83
+ end
84
+
85
+ it "should post an affiliation update for a site" do
86
+ client.should_receive(:post).with("/api/v1.1/private/management/user/123@x/role/", {:affiliation=>"admin", :lftoken=>"x", :conv_id=>123}).and_return( double(:success? => true) )
87
+ subject.set_user_role(123, "admin", "conv", 123).should == true
88
+ end
89
+ end
90
+
91
+ context "when it fails" do
92
+ it "should raise an exception" do
93
+ client.should_receive(:post).and_return( double(:success? => false, :body => "Failure due to zombie outbreak") )
94
+ expect { subject.set_user_role(123, "admin", "domain") }.to raise_error(Livefyre::APIException)
95
+ end
96
+ end
97
+ end
98
+ end
99
+
100
+ it "should have a valid string representation" do
101
+ subject.to_s.should match(/Livefyre::Client/)
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,294 @@
1
+ require 'spec_helper'
2
+
3
+ describe Livefyre::Domain do
4
+ context "an instance" do
5
+ subject { Livefyre::Domain.new }
6
+
7
+ describe "#sites" do
8
+ context "on success" do
9
+ before do
10
+ client = double( :get => double(:success? => true, :body => [{:id => "foo.com"}].to_json), :system_token => "x" )
11
+ subject.stub(:client).and_return(client)
12
+ end
13
+
14
+ its(:sites) { should be_a Array }
15
+
16
+ its("sites.first") { should be_a Livefyre::Site }
17
+ its("sites.first.id") { should == "foo.com" }
18
+ end
19
+
20
+ context "on failure" do
21
+ before do
22
+ client = double( :get => double(:success? => false, :body => ""), :system_token => "x" )
23
+ subject.stub(:client).and_return(client)
24
+ end
25
+
26
+ it "should raise an exception" do
27
+ expect { subject.sites }.to raise_error(Livefyre::APIException)
28
+ end
29
+ end
30
+ end
31
+
32
+ describe "#users" do
33
+ context "on success" do
34
+ before do
35
+ client = double( :get => double(:success? => true, :body => [{:id => "foo"}].to_json), :system_token => "x" )
36
+ subject.stub(:client).and_return(client)
37
+ end
38
+
39
+ its(:users) { should be_a Array }
40
+
41
+ its("users.first") { should be_a Livefyre::User }
42
+ its("users.first.id") { should == "foo" }
43
+ end
44
+
45
+ context "on failure" do
46
+ before do
47
+ client = double( :get => double(:success? => false, :body => ""), :system_token => "x" )
48
+ subject.stub(:client).and_return(client)
49
+ end
50
+
51
+ it "should raise an exception" do
52
+ expect { subject.users }.to raise_error(Livefyre::APIException)
53
+ end
54
+ end
55
+ end
56
+
57
+ describe "#add_user" do
58
+ context "on success" do
59
+ before do
60
+ client = double( :post => double(:success? => true), :system_token => "x", :host => "some_host", :key => "some_key" )
61
+ subject.stub(:client).and_return(client)
62
+ end
63
+
64
+ it "should return true" do
65
+ subject.add_user({"id" => "valid ID"}).should be true
66
+ end
67
+ end
68
+
69
+ context "on failure" do
70
+ before do
71
+ client = double( :post => double(:success? => false, :body => ""), :system_token => "x" )
72
+ subject.stub(:client).and_return(client)
73
+ end
74
+
75
+ it "should raise an exception" do
76
+ expect { subject.add_user({"id" => "valid ID"}) }.to raise_error(Livefyre::APIException)
77
+ end
78
+
79
+ it "should raise an exception when passed an invalid ID" do
80
+ expect { subject.add_user({"bad_id" => "invalid ID"}) }.to raise_error("Invalid ID")
81
+ end
82
+ end
83
+ end
84
+
85
+ describe "#create_site" do
86
+ context "on success" do
87
+ before do
88
+ client = double( :post => double(:success? => true, :body => {"id" => "foo"}.to_json), :system_token => "x", :host => "some_host", :key => "some_key" )
89
+ subject.stub(:client).and_return(client)
90
+ @site = subject.create_site("some URL")
91
+ end
92
+
93
+ it "should return a Site" do
94
+ @site.should be_a Livefyre::Site
95
+ end
96
+
97
+ it "should be prepopulated with the values we just passed" do
98
+ @site.id.should == "foo"
99
+ end
100
+ end
101
+
102
+ context "on failure" do
103
+ before do
104
+ client = double( :post => double(:success? => false, :body => ""), :system_token => "x" )
105
+ subject.stub(:client).and_return(client)
106
+ end
107
+
108
+ it "should raise an exception" do
109
+ expect { subject.create_site("some_url") }.to raise_error(Livefyre::APIException)
110
+ end
111
+ end
112
+ end
113
+
114
+ describe "#owners" do
115
+ context "on success" do
116
+ before do
117
+ client = double( :get => double(:success? => true, :body => ["foo@bar"].to_json), :system_token => "x" )
118
+ client.should_receive(:user).with("foo").and_return( Livefyre.client.user("foo") )
119
+ subject.stub(:client).and_return(client)
120
+ end
121
+
122
+ its(:owners) { should be_a Array }
123
+
124
+ its("owners.first") { should be_a Livefyre::User }
125
+ its("owners.first.id") { should == "foo" }
126
+ end
127
+
128
+ context "on failure" do
129
+ before do
130
+ client = double( :get => double(:success? => false, :body => ""), :system_token => "x" )
131
+ subject.stub(:client).and_return(client)
132
+ end
133
+
134
+ it "should raise an exception" do
135
+ expect { subject.owners }.to raise_error(Livefyre::APIException)
136
+ end
137
+ end
138
+ end
139
+
140
+ describe "#add_owner" do
141
+ context "on success" do
142
+ before do
143
+ client = double( :post => double(:success? => true), :system_token => "x", :host => "some_host", :key => "some_key" )
144
+ subject.stub(:client).and_return(client)
145
+ end
146
+
147
+ it "should return true" do
148
+ subject.add_owner("some ID").should be true
149
+ end
150
+ end
151
+
152
+ context "on failure" do
153
+ before do
154
+ client = double( :post => double(:success? => false, :body => ""), :system_token => "x", :host => "some_host", :key => "some_key" )
155
+ subject.stub(:client).and_return(client)
156
+ end
157
+
158
+ it "should raise an exception" do
159
+ expect { subject.add_owner("some user ID") }.to raise_error(Livefyre::APIException)
160
+ end
161
+ end
162
+ end
163
+
164
+ describe "#remove_owner" do
165
+ context "on success" do
166
+ before do
167
+ client = double( :delete => double(:success? => true), :system_token => "x", :host => "some_host", :key => "some_key" )
168
+ subject.stub(:client).and_return(client)
169
+ end
170
+
171
+ it "should return true" do
172
+ subject.remove_owner("some ID").should be true
173
+ end
174
+ end
175
+
176
+ context "on failure" do
177
+ before do
178
+ client = double( :delete => double(:success? => false, :body => ""), :system_token => "x", :host => "some_host", :key => "some_key" )
179
+ subject.stub(:client).and_return(client)
180
+ end
181
+
182
+ it "should raise an exception" do
183
+ expect { subject.remove_owner("some user ID") }.to raise_error(Livefyre::APIException)
184
+ end
185
+ end
186
+ end
187
+
188
+
189
+ describe "#admins" do
190
+ context "on success" do
191
+ before do
192
+ client = double( :get => double(:success? => true, :body => ["foo@bar"].to_json), :system_token => "x" )
193
+ client.should_receive(:user).with("foo").and_return( Livefyre.client.user("foo") )
194
+ subject.stub(:client).and_return(client)
195
+ end
196
+
197
+ its(:admins) { should be_a Array }
198
+
199
+ its("admins.first") { should be_a Livefyre::User }
200
+ its("admins.first.id") { should == "foo" }
201
+ end
202
+
203
+ context "on failure" do
204
+ before do
205
+ client = double( :get => double(:success? => false, :body => ""), :system_token => "x" )
206
+ subject.stub(:client).and_return(client)
207
+ end
208
+
209
+ it "should raise an exception" do
210
+ expect { subject.admins }.to raise_error(Livefyre::APIException)
211
+ end
212
+ end
213
+ end
214
+
215
+ describe "#add_admin" do
216
+ context "on success" do
217
+ before do
218
+ client = double( :post => double(:success? => true), :system_token => "x", :host => "some_host", :key => "some_key" )
219
+ subject.stub(:client).and_return(client)
220
+ end
221
+
222
+ it "should return true" do
223
+ subject.add_admin("some ID").should be true
224
+ end
225
+ end
226
+
227
+ context "on failure" do
228
+ before do
229
+ client = double( :post => double(:success? => false, :body => ""), :system_token => "x", :host => "some_host", :key => "some_key" )
230
+ subject.stub(:client).and_return(client)
231
+ end
232
+
233
+ it "should raise an exception" do
234
+ expect { subject.add_admin("some user ID") }.to raise_error(Livefyre::APIException)
235
+ end
236
+ end
237
+ end
238
+
239
+ describe "#remove_admin" do
240
+ context "on success" do
241
+ before do
242
+ client = double( :delete => double(:success? => true), :system_token => "x", :host => "some_host", :key => "some_key" )
243
+ subject.stub(:client).and_return(client)
244
+ end
245
+
246
+ it "should return true" do
247
+ subject.remove_admin("some ID").should be true
248
+ end
249
+ end
250
+
251
+ context "on failure" do
252
+ before do
253
+ client = double( :delete => double(:success? => false, :body => ""), :system_token => "x", :host => "some_host", :key => "some_key" )
254
+ subject.stub(:client).and_return(client)
255
+ end
256
+
257
+ it "should raise an exception" do
258
+ expect { subject.remove_admin("some user ID") }.to raise_error(Livefyre::APIException)
259
+ end
260
+ end
261
+ end
262
+
263
+ describe "#set_pull_url" do
264
+ context "when it succeeds" do
265
+ before do
266
+ response = double(:success? => true)
267
+ client = double(:post => response, :system_token => "x")
268
+ subject.stub(:client).and_return(client)
269
+ @response = subject.set_pull_url 'http://foo.bar/{id}/'
270
+ end
271
+
272
+ it "should return true" do
273
+ @response.should == true
274
+ end
275
+ end
276
+
277
+ context "when it fails" do
278
+ before do
279
+ response = double(:success? => false, :body => "failure")
280
+ client = double(:post => response, :system_token => "x")
281
+ subject.stub(:client).and_return(client)
282
+ end
283
+
284
+ it "should raise an exception" do
285
+ expect { subject.set_pull_url 'http://foo.bar/{id}/' }.to raise_error(Livefyre::APIException)
286
+ end
287
+ end
288
+ end
289
+
290
+ it "should have a valid string representation" do
291
+ subject.to_s.should match(/Livefyre::Domain.*host='#{subject.client.host}'/)
292
+ end
293
+ end
294
+ end