livefyre 0.1.2 → 1.0.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.
- checksums.yaml +13 -5
- data/.gitignore +1 -1
- data/Gemfile +0 -0
- data/LICENSE.txt +21 -0
- data/README.md +47 -127
- data/Rakefile +2 -9
- data/lib/livefyre/core.rb +102 -0
- data/lib/livefyre/version.rb +1 -1
- data/lib/livefyre.rb +4 -51
- data/livefyre.gemspec +24 -34
- data/spec/livefyre/core_spec.rb +33 -0
- metadata +58 -172
- checksums.yaml.gz.sig +0 -0
- data/LICENSE +0 -22
- data/app/assets/javascripts/livefyre.js +0 -180
- data/app/assets/javascripts/livefyre.js.coffee +0 -109
- data/gem-public_cert.pem +0 -21
- data/lib/livefyre/activity.rb +0 -43
- data/lib/livefyre/client.rb +0 -141
- data/lib/livefyre/comment.rb +0 -190
- data/lib/livefyre/controller_extensions.rb +0 -82
- data/lib/livefyre/conversation.rb +0 -133
- data/lib/livefyre/domain.rb +0 -220
- data/lib/livefyre/engine.rb +0 -6
- data/lib/livefyre/helpers.rb +0 -57
- data/lib/livefyre/model_extensions.rb +0 -64
- data/lib/livefyre/site.rb +0 -237
- data/lib/livefyre/user.rb +0 -162
- data/railties/railtie.rb +0 -9
- data/spec/livefyre/client_spec.rb +0 -104
- data/spec/livefyre/domain_spec.rb +0 -294
- data/spec/livefyre/livefyre_spec.rb +0 -30
- data/spec/livefyre/model_spec.rb +0 -96
- data/spec/livefyre/site_spec.rb +0 -212
- data/spec/livefyre/user_spec.rb +0 -111
- data/spec/spec_helper.rb +0 -26
- data.tar.gz.sig +0 -1
- metadata.gz.sig +0 -0
data/lib/livefyre/user.rb
DELETED
@@ -1,162 +0,0 @@
|
|
1
|
-
module Livefyre
|
2
|
-
# Public: Interface for dealing with Livefyre users by User ID.
|
3
|
-
class User
|
4
|
-
attr_accessor :id, :display_name
|
5
|
-
|
6
|
-
# Public: Create a new Livefyre User proxy.
|
7
|
-
#
|
8
|
-
# id - [String] ID of the user to proxy
|
9
|
-
# client - [Livefyre::Client] an instance of Livefyre::Client. If nil, the default client is used.
|
10
|
-
# display_name - [String] The display name for this user (optional)
|
11
|
-
def initialize(id, client = nil, display_name = nil, args = {})
|
12
|
-
@id = id
|
13
|
-
@client = client || Livefyre.client
|
14
|
-
@display_name = display_name
|
15
|
-
@options = args
|
16
|
-
end
|
17
|
-
|
18
|
-
# Public: Retrieve user information and recent comments for this user from Livefyre
|
19
|
-
#
|
20
|
-
# Returns [Hash] of profile data
|
21
|
-
# Raises [JSON::ParserError] if the returned data cannot be parsed
|
22
|
-
# Raises [APIException] if the API does not return a valid response
|
23
|
-
def profile
|
24
|
-
response = @client.get "/profile/#{id}/", {:actor_token => token}
|
25
|
-
if response.success?
|
26
|
-
begin
|
27
|
-
JSON.parse(response.body)["data"]
|
28
|
-
rescue JSON::ParserError => e
|
29
|
-
raise APIException.new("Parse error: #{e.message}")
|
30
|
-
end
|
31
|
-
else
|
32
|
-
raise APIException.new(result.body)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
# Public: Setter for the client to associate with this user
|
37
|
-
def client=(client)
|
38
|
-
@client = client
|
39
|
-
end
|
40
|
-
|
41
|
-
# Internal - Fetch an internal Jabber-style ID for this user
|
42
|
-
#
|
43
|
-
# Returns [String] representation of this user
|
44
|
-
def jid
|
45
|
-
"#{id}@#{@client.host}"
|
46
|
-
end
|
47
|
-
|
48
|
-
# Public: Creates a signed JWT token for this user
|
49
|
-
#
|
50
|
-
# max_age - [Integer] Expiry time for this token in seconds (default: 86400)
|
51
|
-
#
|
52
|
-
# Returns [String] token
|
53
|
-
def token(max_age = 86400)
|
54
|
-
data = {
|
55
|
-
:domain => @client.host,
|
56
|
-
:user_id => id,
|
57
|
-
:expires => Time.now.to_i + max_age
|
58
|
-
}.tap do |opts|
|
59
|
-
opts[:display_name] = @display_name unless @display_name.nil?
|
60
|
-
end
|
61
|
-
JWT.encode(data, @client.key)
|
62
|
-
end
|
63
|
-
|
64
|
-
# Public: Update this user's profile on Livefyre
|
65
|
-
#
|
66
|
-
# data - [Hash] A hash of user data as defined by the Livefyre user profile schema
|
67
|
-
#
|
68
|
-
# Returns [Bool] true on success
|
69
|
-
# Raises [APIException] if the request failed
|
70
|
-
def push(data)
|
71
|
-
result = @client.post "/profiles/?actor_token=#{CGI.escape @client.system_token}&id=#{id}", {:data => data.to_json}
|
72
|
-
if result.success?
|
73
|
-
true
|
74
|
-
else
|
75
|
-
raise APIException.new(result.body)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
# Public: Invoke Livefyre ping-to-pull to refresh this user's data
|
80
|
-
#
|
81
|
-
# Returns [Bool] true on success
|
82
|
-
# Raises [APIException] if the request failed
|
83
|
-
def refresh
|
84
|
-
result = @client.post "/api/v3_0/user/#{id}/refresh", {:lftoken => @client.system_token}
|
85
|
-
if result.success?
|
86
|
-
true
|
87
|
-
else
|
88
|
-
raise APIException.new(result.body)
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
# Public: Follow the given conversation
|
93
|
-
#
|
94
|
-
# conversation - [Conversation] to follow
|
95
|
-
# Returns [Boolean] true on success
|
96
|
-
# Raises [APIException] on failure
|
97
|
-
def follow_conversation(conversation)
|
98
|
-
conversation.follow_as self
|
99
|
-
end
|
100
|
-
|
101
|
-
# Public: Unfollow the given conversation
|
102
|
-
#
|
103
|
-
# conversation - [Conversation] to unfollow
|
104
|
-
# Returns [Boolean] true on success
|
105
|
-
# Raises [APIException] on failure
|
106
|
-
def unfollow_conversation(conversation)
|
107
|
-
conversation.unfollow_as self
|
108
|
-
end
|
109
|
-
|
110
|
-
# Public: Coerce a string or [User] into a user ID
|
111
|
-
#
|
112
|
-
# userish - [String/User/Int]A [User] or user ID
|
113
|
-
#
|
114
|
-
# Returns [String] User ID
|
115
|
-
# Raises Exception when value can't be coerced
|
116
|
-
def self.get_user_id(userish)
|
117
|
-
case userish
|
118
|
-
when String
|
119
|
-
userish.split("@", 2).first
|
120
|
-
when Fixnum
|
121
|
-
userish
|
122
|
-
when User
|
123
|
-
userish.id
|
124
|
-
else
|
125
|
-
raise "Invalid user ID"
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
# Public: Convenience method to refresh a user by ID
|
130
|
-
#
|
131
|
-
# id - A Livefyre user ID to refresh
|
132
|
-
#
|
133
|
-
# Returns [Bool] true on success
|
134
|
-
# Raises [APIException] if the request failed
|
135
|
-
def self.refresh(id)
|
136
|
-
new(id).refresh
|
137
|
-
end
|
138
|
-
|
139
|
-
# Public: Fetch a Livefyre::User from a user record or ID
|
140
|
-
#
|
141
|
-
# userish - [String/User/Int] A User or user ID
|
142
|
-
# client - [Livefyre::Client] Client to bind to the User record
|
143
|
-
#
|
144
|
-
# Returns [User]
|
145
|
-
def self.get_user(userish, client)
|
146
|
-
case userish
|
147
|
-
when User
|
148
|
-
userish.client = client
|
149
|
-
userish
|
150
|
-
else
|
151
|
-
new get_user_id(userish), client
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
# Internal: Returns a cleaner string representation of this object
|
156
|
-
#
|
157
|
-
# Returns [String] representation of this class
|
158
|
-
def to_s
|
159
|
-
"#<#{self.class.name}:0x#{object_id.to_s(16).rjust(14, "0")} id='#{id}' display_name='#{display_name}'>"
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
data/railties/railtie.rb
DELETED
@@ -1,9 +0,0 @@
|
|
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
|
@@ -1,104 +0,0 @@
|
|
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
|
@@ -1,294 +0,0 @@
|
|
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
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Livefyre do
|
4
|
-
context "the default client" do
|
5
|
-
it "should raise an exception if the configuration is not set" do
|
6
|
-
c = Livefyre.config
|
7
|
-
Livefyre.config = nil
|
8
|
-
lambda { Livefyre.client }.should raise_exception(Exception)
|
9
|
-
Livefyre.config = c
|
10
|
-
end
|
11
|
-
|
12
|
-
context "when a configuration is set" do
|
13
|
-
before {
|
14
|
-
Livefyre.config = {:host => "foo.bar", :key => "foo", :system_token => "123"}
|
15
|
-
}
|
16
|
-
|
17
|
-
it "should get a Livefyre::Client" do
|
18
|
-
Livefyre.client.should be_a(Livefyre::Client)
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should get the same client instance across multiple calls' do
|
22
|
-
Livefyre.client.should eql(Livefyre.client)
|
23
|
-
end
|
24
|
-
|
25
|
-
it 'should fetch the config' do
|
26
|
-
Livefyre.config.should == {:host => "foo.bar", :key => "foo", :system_token => "123"}
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
data/spec/livefyre/model_spec.rb
DELETED
@@ -1,96 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
if defined? Livefyre::Model
|
4
|
-
class BaseUser
|
5
|
-
include Livefyre::Model
|
6
|
-
attr_accessor :id
|
7
|
-
attr_accessor :email
|
8
|
-
|
9
|
-
def email=(email)
|
10
|
-
@email = email
|
11
|
-
@email_changed = true
|
12
|
-
end
|
13
|
-
|
14
|
-
def email_changed?
|
15
|
-
@email_changed
|
16
|
-
end
|
17
|
-
|
18
|
-
def save
|
19
|
-
self.class.instance_variable_get("@callbacks").each do |callback|
|
20
|
-
send callback
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def self.after_save(callback)
|
25
|
-
@callbacks ||= []
|
26
|
-
@callbacks.push callback
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
class UserWithBlock < BaseUser
|
31
|
-
attr_accessor :foo
|
32
|
-
livefyre_user :update_on => [:email] do |o, id|
|
33
|
-
o.foo = 1
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class UserWithoutBlock < BaseUser
|
38
|
-
livefyre_user :update_on => [:email]
|
39
|
-
end
|
40
|
-
|
41
|
-
class UserWithCustomId < BaseUser
|
42
|
-
livefyre_user :id => :custom_id, :update_on => [:email]
|
43
|
-
|
44
|
-
def custom_id
|
45
|
-
"foobar"
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
describe Livefyre::Model do
|
50
|
-
context "when saving" do
|
51
|
-
it "should not do anything if the watched fields haven't changed" do
|
52
|
-
u = UserWithoutBlock.new
|
53
|
-
u.should_not_receive(:refresh_livefyre)
|
54
|
-
u.save
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should call refresh when fields have changed" do
|
58
|
-
u = UserWithoutBlock.new
|
59
|
-
u.email = "new@email.com"
|
60
|
-
u.should_receive(:refresh_livefyre)
|
61
|
-
u.save
|
62
|
-
end
|
63
|
-
|
64
|
-
context "an instance that is set to call a block" do
|
65
|
-
let(:user) { UserWithBlock.new }
|
66
|
-
|
67
|
-
it "should invoke the passed block when refresh_livefyre is called" do
|
68
|
-
Livefyre::User.should_not_receive(:refresh)
|
69
|
-
user.email = "new@email.com"
|
70
|
-
user.save
|
71
|
-
user.foo.should == 1
|
72
|
-
end
|
73
|
-
end
|
74
|
-
|
75
|
-
context "an instance that is not set to defer" do
|
76
|
-
let(:user) { UserWithoutBlock.new }
|
77
|
-
|
78
|
-
it "should invoke Livefyre::Model::RequestPull when refresh_livefyre is called" do
|
79
|
-
Livefyre::User.should_receive(:refresh)
|
80
|
-
user.email = "new@email.com"
|
81
|
-
user.save
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
context "an instance with a custom ID" do
|
86
|
-
let(:user) { UserWithCustomId.new }
|
87
|
-
|
88
|
-
it "should invoke Livefyre::Model::RequestPull when refresh_livefyre is called" do
|
89
|
-
Livefyre::User.should_receive(:refresh)
|
90
|
-
user.email = "new@email.com"
|
91
|
-
user.save
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
end
|
96
|
-
end
|