yammer-client 0.1.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.
- data/.gitignore +29 -0
- data/.travis.yml +9 -0
- data/.yardopts +10 -0
- data/CHANGELOG.md +0 -0
- data/Gemfile +13 -0
- data/LICENSE.md +20 -0
- data/README.md +265 -0
- data/Rakefile +12 -0
- data/certs/tiabas-public.pem +21 -0
- data/lib/yammer.rb +28 -0
- data/lib/yammer/api.rb +10 -0
- data/lib/yammer/api/autocomplete.rb +25 -0
- data/lib/yammer/api/group.rb +78 -0
- data/lib/yammer/api/group_membership.rb +32 -0
- data/lib/yammer/api/message.rb +196 -0
- data/lib/yammer/api/network.rb +21 -0
- data/lib/yammer/api/notification.rb +18 -0
- data/lib/yammer/api/search.rb +28 -0
- data/lib/yammer/api/thread.rb +23 -0
- data/lib/yammer/api/topic.rb +21 -0
- data/lib/yammer/api/user.rb +156 -0
- data/lib/yammer/client.rb +101 -0
- data/lib/yammer/configurable.rb +46 -0
- data/lib/yammer/error.rb +61 -0
- data/lib/yammer/http_connection.rb +184 -0
- data/lib/yammer/identity_map.rb +42 -0
- data/lib/yammer/model.rb +6 -0
- data/lib/yammer/model/base.rb +133 -0
- data/lib/yammer/model/group.rb +13 -0
- data/lib/yammer/model/group_membership.rb +11 -0
- data/lib/yammer/model/message.rb +17 -0
- data/lib/yammer/model/message_body.rb +13 -0
- data/lib/yammer/model/thread.rb +44 -0
- data/lib/yammer/model/user.rb +46 -0
- data/lib/yammer/response.rb +43 -0
- data/lib/yammer/version.rb +18 -0
- data/spec/api/autocomplete_spec.rb +23 -0
- data/spec/api/group_membership_spec.rb +30 -0
- data/spec/api/group_spec.rb +58 -0
- data/spec/api/message_spec.rb +118 -0
- data/spec/api/network_spec.rb +23 -0
- data/spec/api/notification_spec.rb +23 -0
- data/spec/api/search_spec.rb +23 -0
- data/spec/api/thread_spec.rb +23 -0
- data/spec/api/topic_spec.rb +23 -0
- data/spec/api/user_spec.rb +76 -0
- data/spec/client_spec.rb +208 -0
- data/spec/connection_spec.rb +280 -0
- data/spec/error_spec.rb +69 -0
- data/spec/fixtures/group.json +1 -0
- data/spec/fixtures/message.json +1 -0
- data/spec/fixtures/messages_in_thread.json +1 -0
- data/spec/fixtures/portal_thread.json +1 -0
- data/spec/fixtures/private_thread.json +1 -0
- data/spec/fixtures/public_thread.json +1 -0
- data/spec/fixtures/user.json +1 -0
- data/spec/identity_map_spec.rb +108 -0
- data/spec/model/base_spec.rb +155 -0
- data/spec/model/group_membership_spec.rb +27 -0
- data/spec/model/group_spec.rb +44 -0
- data/spec/model/message_spec.rb +45 -0
- data/spec/model/thread_spec.rb +66 -0
- data/spec/model/user_spec.rb +150 -0
- data/spec/response_spec.rb +66 -0
- data/spec/spec_helper.rb +42 -0
- data/yammer.gemspec +29 -0
- metadata +270 -0
@@ -0,0 +1,118 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Yammer::Api::Message do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@client = Yammer::Client.new(
|
7
|
+
:site_url => 'https://www.yammer.com',
|
8
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
9
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
10
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A',
|
11
|
+
:connection_client => Yammer::HttpConnection
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { @client }
|
16
|
+
|
17
|
+
describe '#all_messages' do
|
18
|
+
context 'with options' do
|
19
|
+
it 'should get_messages' do
|
20
|
+
params = { :page => 1, :letter => 'm' }
|
21
|
+
subject.should_receive(:get).with('/api/v1/messages', params)
|
22
|
+
subject.all_messages(params)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'without options' do
|
27
|
+
it 'should return all messages viewable by a user' do
|
28
|
+
subject.should_receive(:get).with('/api/v1/messages', {})
|
29
|
+
subject.all_messages
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
describe '#create_message' do
|
35
|
+
it 'should create_message' do
|
36
|
+
params = { :body => 'Greetings, we come in peace' }
|
37
|
+
subject.should_receive(:post).with('/api/v1/messages', params)
|
38
|
+
subject.create_message(params)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
describe '#message' do
|
43
|
+
it 'should fetch a message' do
|
44
|
+
subject.should_receive(:get).with('/api/v1/messages/3', {})
|
45
|
+
subject.get_message(3)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe '#delete_message' do
|
50
|
+
it 'should delete a message' do
|
51
|
+
subject.should_receive(:post).with('/api/v1/messages/4', {})
|
52
|
+
subject.delete_message(4)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe '#messages_sent' do
|
57
|
+
it 'should fetch messages sent by a user' do
|
58
|
+
subject.should_receive(:get).with('/api/v1/messages/sent', {})
|
59
|
+
subject.messages_sent
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#messages_received' do
|
64
|
+
it 'should fetch messages received by a user' do
|
65
|
+
subject.should_receive(:get).with('/api/v1/messages/received', {})
|
66
|
+
subject.messages_received
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe '#private_messages' do
|
71
|
+
it 'should fetch private messages' do
|
72
|
+
subject.should_receive(:get).with('/api/v1/messages/private', {})
|
73
|
+
subject.private_messages
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
describe '#followed_messages' do
|
78
|
+
it 'should fetch messages followed by a user' do
|
79
|
+
subject.should_receive(:get).with('/api/v1/messages/following', {})
|
80
|
+
subject.followed_messages
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
describe '#messages_from_user' do
|
85
|
+
it 'should fetch messages created by a user' do
|
86
|
+
subject.should_receive(:get).with('/api/v1/messages/from_user/14', {})
|
87
|
+
subject.messages_from_user(14)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
describe '#messages_about_topic' do
|
92
|
+
it 'should fetch messages about a topic' do
|
93
|
+
subject.should_receive(:get).with('/api/v1/messages/about_topic/19', {})
|
94
|
+
subject.messages_about_topic(19)
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
describe '#messages_in_group' do
|
99
|
+
it 'should fetch messages in group' do
|
100
|
+
subject.should_receive(:get).with('/api/v1/messages/in_group/26', {})
|
101
|
+
subject.messages_in_group(26)
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
describe '#messages_liked_by' do
|
106
|
+
it 'should fetch messages liked by user' do
|
107
|
+
subject.should_receive(:get).with('/api/v1/messages/liked_by/58', {})
|
108
|
+
subject.messages_liked_by(58)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
describe '#messages_in_thread' do
|
113
|
+
it 'should fetch messages in thread' do
|
114
|
+
subject.should_receive(:get).with('/api/v1/messages/in_thread/97', {})
|
115
|
+
subject.messages_in_thread(97)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Yammer::Api::Network do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@client = Yammer::Client.new(
|
7
|
+
:site_url => 'https://www.yammer.com',
|
8
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
9
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
10
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A',
|
11
|
+
:connection_client => Yammer::HttpConnection
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { @client }
|
16
|
+
|
17
|
+
describe '#networks_current' do
|
18
|
+
it 'should fetch network data' do
|
19
|
+
subject.should_receive(:get).with('/api/v1/networks/current', { :include_suspended => true })
|
20
|
+
subject.current_networks({ :include_suspended => true })
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Yammer::Api::Notification do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@client = Yammer::Client.new(
|
7
|
+
:site_url => 'https://www.yammer.com',
|
8
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
9
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
10
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A',
|
11
|
+
:connection_client => Yammer::HttpConnection
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { @client }
|
16
|
+
|
17
|
+
describe '#search' do
|
18
|
+
it 'should search for stuff' do
|
19
|
+
subject.should_receive(:get).with('/api/v1/streams/notifications')
|
20
|
+
subject.notifications
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Yammer::Api::Search do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@client = Yammer::Client.new(
|
7
|
+
:site_url => 'https://www.yammer.com',
|
8
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
9
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
10
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A',
|
11
|
+
:connection_client => Yammer::HttpConnection
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { @client }
|
16
|
+
|
17
|
+
describe '#search' do
|
18
|
+
it 'should search for stuff' do
|
19
|
+
subject.should_receive(:get).with('/api/v1/search.json', {:search => 'money power women'})
|
20
|
+
subject.search(:search => 'money power women')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Yammer::Api::Thread do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@client = Yammer::Client.new(
|
7
|
+
:site_url => 'https://www.yammer.com',
|
8
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
9
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
10
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A',
|
11
|
+
:connection_client => Yammer::HttpConnection
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { @client }
|
16
|
+
|
17
|
+
describe '#get_thread' do
|
18
|
+
it 'should fetch a thread' do
|
19
|
+
subject.should_receive(:get).with('/api/v1/threads/1', {})
|
20
|
+
subject.get_thread(1)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Yammer::Api::Topic do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@client = Yammer::Client.new(
|
7
|
+
:site_url => 'https://www.yammer.com',
|
8
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
9
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
10
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A',
|
11
|
+
:connection_client => Yammer::HttpConnection
|
12
|
+
)
|
13
|
+
end
|
14
|
+
|
15
|
+
subject { @client }
|
16
|
+
|
17
|
+
describe '#topics' do
|
18
|
+
it 'should fetch topic' do
|
19
|
+
subject.should_receive(:get).with('/api/v1/topics/1',{ :is_followed_by => 2 })
|
20
|
+
subject.get_topic(1, :is_followed_by => 2)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,76 @@
|
|
1
|
+
require File.expand_path('../../spec_helper', __FILE__)
|
2
|
+
require 'ostruct'
|
3
|
+
|
4
|
+
describe Yammer::Api::User do
|
5
|
+
|
6
|
+
before :all do
|
7
|
+
@client = Yammer::Client.new(
|
8
|
+
:site_url => 'https://yammer.com',
|
9
|
+
:client_id => "PRbTcg9qjgKsp4jjpm1pw",
|
10
|
+
:client_secret => "Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U",
|
11
|
+
:access_token => "TolNOFka9Uls2DxahNi78A",
|
12
|
+
:connection_client => Yammer::HttpConnection
|
13
|
+
)
|
14
|
+
end
|
15
|
+
|
16
|
+
subject { @client }
|
17
|
+
|
18
|
+
describe "users" do
|
19
|
+
it "makes an http request" do
|
20
|
+
@client.should_receive(:get).with('/api/v1/users', { :page => 1, :letter => 'm' })
|
21
|
+
@client.all_users({:page => 1, :letter => 'm'})
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
describe "create_user" do
|
26
|
+
it "makes an http request" do
|
27
|
+
params = {:first_name => 'john', :last_name => 'doe', :email => 'jdoe@yammer-inc.com'}
|
28
|
+
@client.should_receive(:post).with('/api/v1/users', params)
|
29
|
+
@client.create_user(params)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "get_user" do
|
34
|
+
it "makes an http request" do
|
35
|
+
@client.should_receive(:get).with('/api/v1/users/1')
|
36
|
+
@client.get_user(1)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe "update_user" do
|
41
|
+
it "makes an http request" do
|
42
|
+
params = {:first_name => 'jane', :last_name => 'smith'}
|
43
|
+
@client.should_receive(:put).with('/api/v1/users/1', params)
|
44
|
+
@client.update_user(1, params)
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'with id as a string' do
|
48
|
+
it 'updates user' do
|
49
|
+
params = {:first_name => 'jane', :last_name => 'smith'}
|
50
|
+
@client.should_receive(:put).with('/api/v1/users/current', params)
|
51
|
+
subject.update_user('current', params)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
describe "delete_user" do
|
57
|
+
it "makes an http request" do
|
58
|
+
@client.should_receive(:delete).with('/api/v1/users/1')
|
59
|
+
@client.delete_user(1)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "user_by_email" do
|
64
|
+
it "makes an http request" do
|
65
|
+
@client.should_receive(:get).with('/api/v1/users/by_email', :email => 'bob@yammer-inc.com')
|
66
|
+
@client.get_user_by_email('bob@yammer-inc.com')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
describe "current_user" do
|
71
|
+
it "makes an http request" do
|
72
|
+
@client.should_receive(:get).with('/api/v1/users/current')
|
73
|
+
@client.current_user
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
data/spec/client_spec.rb
ADDED
@@ -0,0 +1,208 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
describe Yammer::Client do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
@configuration = {
|
7
|
+
:site_url => 'https://www.yammer.com',
|
8
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
9
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
10
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A'
|
11
|
+
}
|
12
|
+
end
|
13
|
+
|
14
|
+
subject { Yammer::Client.new(@configuration) }
|
15
|
+
|
16
|
+
context "with module configuration" do
|
17
|
+
|
18
|
+
before :each do
|
19
|
+
Yammer.configure do |config|
|
20
|
+
Yammer::Configurable.keys.each do |key|
|
21
|
+
config.send("#{key}=", key)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
after do
|
27
|
+
Yammer.reset!
|
28
|
+
end
|
29
|
+
|
30
|
+
it "inherits the module configuration" do
|
31
|
+
client = Yammer::Client.new
|
32
|
+
Yammer::Configurable.keys.each do |key|
|
33
|
+
expect(client.instance_variable_get(:"@#{key}")).to eq key
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
context "with initialization options" do
|
38
|
+
before(:all) do
|
39
|
+
@conf = {
|
40
|
+
:site_url => 'https://www.yammer.com',
|
41
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
42
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
43
|
+
:access_token => 'TolNOFka9Uls2DxahNi78A',
|
44
|
+
:http_adapter => Struct.new('CustomHttpAdapter', :site_url, :conn_options),
|
45
|
+
:connection_options => { :max_redirects => 5, :use_ssl => true }
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
context "during initialization" do
|
50
|
+
it "overrides the module configuration" do
|
51
|
+
client = Yammer::Client.new(@conf)
|
52
|
+
Yammer::Configurable.keys.each do |key|
|
53
|
+
expect(client.instance_variable_get(:"@#{key}")).to eq @conf[key]
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "after initialization" do
|
59
|
+
it "overrides the module configuration" do
|
60
|
+
client = Yammer::Client.new
|
61
|
+
client.configure do |config|
|
62
|
+
@conf.each do |key, value|
|
63
|
+
config.send("#{key}=", value)
|
64
|
+
end
|
65
|
+
end
|
66
|
+
Yammer::Configurable.keys.each do |key|
|
67
|
+
expect(client.instance_variable_get(:"@#{key}")).to eq @conf[key]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
describe "connection" do
|
75
|
+
it "looks like an http connection" do
|
76
|
+
conn = subject.instance_eval{ connection }
|
77
|
+
expect(conn).to respond_to(:send_request)
|
78
|
+
end
|
79
|
+
|
80
|
+
it "gets memoized" do
|
81
|
+
c1, c2 = subject.instance_eval{ connection }, subject.instance_eval{ connection }
|
82
|
+
expect(c1.object_id).to eq c2.object_id
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
describe "site_url" do
|
87
|
+
it "returns site_url" do
|
88
|
+
expect(subject.site_url).to eq 'https://www.yammer.com'
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "site_url=" do
|
93
|
+
before do
|
94
|
+
subject.site_url = 'elpmaxe.com'
|
95
|
+
end
|
96
|
+
|
97
|
+
it "sets the connection to nil" do
|
98
|
+
expect(subject.instance_variable_get(:'@connection')).to eq nil
|
99
|
+
end
|
100
|
+
|
101
|
+
it "sets new site_url on client" do
|
102
|
+
expect(subject.site_url).to eq 'elpmaxe.com'
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
describe "#connection_options" do
|
107
|
+
context "with default connection options" do
|
108
|
+
it "returns empty hash" do
|
109
|
+
expect(subject.connection_options).to eq ({ :max_redirects => 5, :use_ssl => true })
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
context "with custom connection options" do
|
114
|
+
it "returns default options" do
|
115
|
+
subject.connection_options = { :max_redirects => 5, :use_ssl => true }
|
116
|
+
expect(subject.connection_options).to eq ({:max_redirects => 5, :use_ssl => true})
|
117
|
+
end
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'http request' do
|
122
|
+
describe "#post" do
|
123
|
+
it "makes an http POST request" do
|
124
|
+
stub_post('/users').with(
|
125
|
+
:headers => {
|
126
|
+
'Accept'=>'application/json',
|
127
|
+
'Authorization'=>'Bearer TolNOFka9Uls2DxahNi78A',
|
128
|
+
'Content-Type'=>'application/x-www-form-urlencoded',
|
129
|
+
'User-Agent'=>"Yammer Ruby Gem #{Yammer::Version}"
|
130
|
+
},
|
131
|
+
:body => { :name => 'alice' })
|
132
|
+
subject.post('/users', { :name => 'alice'})
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe "#put" do
|
137
|
+
it "makes an http PUT request" do
|
138
|
+
stub_put('/users/1').with(
|
139
|
+
:headers => {
|
140
|
+
'Accept'=>'application/json',
|
141
|
+
'Authorization'=>'Bearer TolNOFka9Uls2DxahNi78A',
|
142
|
+
'Content-Type'=>'application/x-www-form-urlencoded',
|
143
|
+
'User-Agent'=> "Yammer Ruby Gem #{Yammer::Version}"
|
144
|
+
},
|
145
|
+
:body => { :name => 'bob' })
|
146
|
+
subject.put('/users/1', { :name => 'bob'})
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
describe "#get" do
|
151
|
+
it "makes an http GET request" do
|
152
|
+
stub_get('/users/1').with(:headers => { 'Authorization' => 'Bearer TolNOFka9Uls2DxahNi78A' })
|
153
|
+
subject.get('/users/1')
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
describe "#delete" do
|
158
|
+
it "makes an http DELETE request" do
|
159
|
+
stub_delete('/users/1').with(:headers => { 'Authorization' => 'Bearer TolNOFka9Uls2DxahNi78A' })
|
160
|
+
subject.delete('/users/1')
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
describe 'with invalid token' do
|
165
|
+
it 'raises exception' do
|
166
|
+
stub_get('/users/1').with(:headers => { 'Authorization' => 'Bearer TolNOFka9Uls2DxahNi78A' }).to_return(
|
167
|
+
:body => '{ "response": { "message": "Token not found.", "code": 16, "stat": "fail" } }',
|
168
|
+
:status => 401
|
169
|
+
)
|
170
|
+
expect { subject.get('/users/1') }.to raise_error(Yammer::Error::Unauthorized, 'Token not found.')
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
describe 'with too many requests' do
|
175
|
+
it 'raises exception' do
|
176
|
+
stub_get('/users/1').with(:headers => { 'Authorization' => 'Bearer TolNOFka9Uls2DxahNi78A' }).to_return(
|
177
|
+
:body => '{ "response": { "message": "Rate limited due to excessive requests.", "code": 33, "stat": "fail" } }',
|
178
|
+
:status => 429
|
179
|
+
)
|
180
|
+
expect { subject.get('/users/1') }.to raise_error(Yammer::Error::RateLimitExceeded, 'Rate limited due to excessive requests.')
|
181
|
+
end
|
182
|
+
end
|
183
|
+
end
|
184
|
+
|
185
|
+
describe "#connection" do
|
186
|
+
context "with default connection options" do
|
187
|
+
it "returns HttpConnection" do
|
188
|
+
expect(subject.send(:connection)).to be_instance_of(Yammer::HttpConnection)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
context "with custom connection options" do
|
193
|
+
it "returns custom connection" do
|
194
|
+
custom_http = Struct.new('CustomHttpClient', :site_url, :connection_options)
|
195
|
+
client = Yammer::Client.new(
|
196
|
+
:site_url => 'www.example.com',
|
197
|
+
:client_id => 'PRbTcg9qjgKsp4jjpm1pw',
|
198
|
+
:client_secret => 'Xn7kp7Ly0TCY4GtZWkmSsqGEPg10DmMADyjWkf2U',
|
199
|
+
:http_adapter => custom_http,
|
200
|
+
:connection_options => { :max_redirects => 5, :use_ssl => true }
|
201
|
+
)
|
202
|
+
connection = client.send(:connection)
|
203
|
+
expect(connection.site_url).to eq "www.example.com"
|
204
|
+
expect(connection.connection_options).to eq({ :max_redirects => 5, :use_ssl => true })
|
205
|
+
end
|
206
|
+
end
|
207
|
+
end
|
208
|
+
end
|