typetalk 0.0.1

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.
Files changed (89) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +23 -0
  3. data/.rspec +4 -0
  4. data/Gemfile +4 -0
  5. data/LICENSE.txt +22 -0
  6. data/README.md +215 -0
  7. data/Rakefile +7 -0
  8. data/lib/typetalk.rb +36 -0
  9. data/lib/typetalk/api.rb +49 -0
  10. data/lib/typetalk/api/auth.rb +43 -0
  11. data/lib/typetalk/api/mention.rb +28 -0
  12. data/lib/typetalk/api/message.rb +105 -0
  13. data/lib/typetalk/api/notification.rb +77 -0
  14. data/lib/typetalk/api/topic.rb +56 -0
  15. data/lib/typetalk/api/user.rb +17 -0
  16. data/lib/typetalk/connection.rb +31 -0
  17. data/lib/typetalk/error.rb +7 -0
  18. data/lib/typetalk/version.rb +3 -0
  19. data/spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_authorization_code.yml +40 -0
  20. data/spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials.yml +40 -0
  21. data/spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials_when_scope_changed.yml +40 -0
  22. data/spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_authorization_code_is_wrong.yml +40 -0
  23. data/spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_id_is_wrong.yml +40 -0
  24. data/spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_secret_is_wrong.yml +40 -0
  25. data/spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_redirect_uri_mismatch.yml +40 -0
  26. data/spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource.yml +85 -0
  27. data/spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource_till_mention.yml +83 -0
  28. data/spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_unread_resource.yml +83 -0
  29. data/spec/cassettes/Typetalk_Api_Mention/_read_mention/should_get_the_correct_resource.yml +83 -0
  30. data/spec/cassettes/Typetalk_Api_Mention/_read_mention/should_raise_error_when_mention_id_is_wrong.yml +73 -0
  31. data/spec/cassettes/Typetalk_Api_Message/_get_message/should_get_the_correct_resource.yml +129 -0
  32. data/spec/cassettes/Typetalk_Api_Message/_get_message/should_raise_error_when_post_id_is_wrong.yml +71 -0
  33. data/spec/cassettes/Typetalk_Api_Message/_get_message/should_raise_error_when_topic_id_is_wrong.yml +71 -0
  34. data/spec/cassettes/Typetalk_Api_Message/_like_message/should_get_the_correct_resource.yml +161 -0
  35. data/spec/cassettes/Typetalk_Api_Message/_like_message/should_raise_error_when_post_id_is_wrong.yml +73 -0
  36. data/spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource.yml +85 -0
  37. data/spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_attachments.yml +536 -0
  38. data/spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_reply.yml +130 -0
  39. data/spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_talks.yml +88 -0
  40. data/spec/cassettes/Typetalk_Api_Message/_post_message/should_raise_error_when_topic_id_is_wrong.yml +73 -0
  41. data/spec/cassettes/Typetalk_Api_Message/_read_message/should_get_the_correct_resource.yml +171 -0
  42. data/spec/cassettes/Typetalk_Api_Message/_read_message/should_get_the_correct_resource_till_post.yml +171 -0
  43. data/spec/cassettes/Typetalk_Api_Message/_read_message/should_raise_error_when_post_id_is_wrong.yml +73 -0
  44. data/spec/cassettes/Typetalk_Api_Message/_remove_message/should_get_the_correct_resource.yml +199 -0
  45. data/spec/cassettes/Typetalk_Api_Message/_remove_message/should_raise_error_when_post_id_is_wrong.yml +71 -0
  46. data/spec/cassettes/Typetalk_Api_Message/_unlike_message/should_get_the_correct_resource.yml +200 -0
  47. data/spec/cassettes/Typetalk_Api_Message/_unlike_message/should_raise_error_when_post_id_is_wrong.yml +71 -0
  48. data/spec/cassettes/Typetalk_Api_Message/_upload_attachment/should_get_the_correct_resource.yml +258 -0
  49. data/spec/cassettes/Typetalk_Api_Message/_upload_attachment/should_raise_error_when_topic_id_is_wrong.yml +250 -0
  50. data/spec/cassettes/Typetalk_Api_Notification/_accept_team/should_get_the_correct_resource.yml +119 -0
  51. data/spec/cassettes/Typetalk_Api_Notification/_accept_team/should_raise_error_when_invite_team_id_is_wrong.yml +73 -0
  52. data/spec/cassettes/Typetalk_Api_Notification/_accept_team/should_raise_error_when_team_id_is_wrong.yml +73 -0
  53. data/spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_get_the_correct_resource.yml +120 -0
  54. data/spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_raise_error_when_invite_topic_id_is_wrong.yml +73 -0
  55. data/spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_raise_error_when_topic_id_is_wrong.yml +73 -0
  56. data/spec/cassettes/Typetalk_Api_Notification/_decline_team/should_get_the_correct_resource.yml +118 -0
  57. data/spec/cassettes/Typetalk_Api_Notification/_decline_team/should_raise_error_when_invite_team_id_is_wrong.yml +73 -0
  58. data/spec/cassettes/Typetalk_Api_Notification/_decline_team/should_raise_error_when_team_id_is_wrong.yml +73 -0
  59. data/spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_get_the_correct_resource.yml +120 -0
  60. data/spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_raise_error_when_invite_topic_id_is_wrong.yml +73 -0
  61. data/spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_raise_error_when_topic_id_is_wrong.yml +73 -0
  62. data/spec/cassettes/Typetalk_Api_Notification/_get_notifications/should_get_the_correct_resource.yml +101 -0
  63. data/spec/cassettes/Typetalk_Api_Notification/_get_notifications_status/should_get_the_correct_resource.yml +79 -0
  64. data/spec/cassettes/Typetalk_Api_Notification/_read_notifications/should_get_the_correct_resource.yml +81 -0
  65. data/spec/cassettes/Typetalk_Api_Topic/_favorite_topic/should_get_the_correct_resource.yml +82 -0
  66. data/spec/cassettes/Typetalk_Api_Topic/_favorite_topic/should_raise_error_when_topic_id_is_wrong.yml +73 -0
  67. data/spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_backward_resource.yml +85 -0
  68. data/spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_forward_resource.yml +84 -0
  69. data/spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_resource.yml +88 -0
  70. data/spec/cassettes/Typetalk_Api_Topic/_get_topic/should_raise_error_when_topic_id_is_wrong.yml +71 -0
  71. data/spec/cassettes/Typetalk_Api_Topic/_get_topic_members/should_get_the_correct_resource.yml +81 -0
  72. data/spec/cassettes/Typetalk_Api_Topic/_get_topic_members/should_raise_error_when_topic_id_is_wrong.yml +71 -0
  73. data/spec/cassettes/Typetalk_Api_Topic/_get_topics/should_get_the_correct_resource.yml +83 -0
  74. data/spec/cassettes/Typetalk_Api_Topic/_unfavorite_topic/should_get_the_correct_resource.yml +80 -0
  75. data/spec/cassettes/Typetalk_Api_Topic/_unfavorite_topic/should_raise_error_when_topic_id_is_wrong.yml +71 -0
  76. data/spec/cassettes/Typetalk_Api_User/_get_profile/should_get_the_correct_resource.yml +81 -0
  77. data/spec/cassettes/Typetalk_Api_User/_get_profile/should_raise_error_when_access_token_is_wrong.yml +73 -0
  78. data/spec/cassettes/Typetalk_Api_User/_get_profile/should_raise_error_when_scope_is_wrong.yml +73 -0
  79. data/spec/fixtures/attachments/logo_cacoo.jpg +0 -0
  80. data/spec/fixtures/attachments/logo_typetalk.jpg +0 -0
  81. data/spec/spec_helper.rb +36 -0
  82. data/spec/typetalk/api/auth_spec.rb +81 -0
  83. data/spec/typetalk/api/mention_spec.rb +73 -0
  84. data/spec/typetalk/api/message_spec.rb +232 -0
  85. data/spec/typetalk/api/notification_spec.rb +200 -0
  86. data/spec/typetalk/api/topic_spec.rb +150 -0
  87. data/spec/typetalk/api/user_spec.rb +27 -0
  88. data/typetalk.gemspec +33 -0
  89. metadata +326 -0
@@ -0,0 +1,200 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Typetalk::Api::Notification do
5
+
6
+ let(:api) { Typetalk::Api.new }
7
+
8
+ describe '#get_notifications', :vcr do
9
+ it 'should get the correct resource' do
10
+ response = api.get_notifications
11
+ expect(response).to be_a(Hashie::Mash)
12
+
13
+ expect(response.invites.teams.size).to eq(2)
14
+ expect(response.invites.teams[0].role).to eq('member')
15
+ expect(response.invites.teams[0].team.name).to eq('Test Team 3')
16
+ expect(response.invites.teams[0].sender.name).to eq('umakoz')
17
+ expect(response.invites.teams[0].message).to eq('Test Team Invitation 3')
18
+ expect(response.invites.teams[0].account.name).to eq('typetalk-rubygem-tester')
19
+ expect(response.invites.teams[1].role).to eq('member')
20
+ expect(response.invites.teams[1].team.name).to eq('Test Team 4')
21
+ expect(response.invites.teams[1].sender.name).to eq('umakoz')
22
+ expect(response.invites.teams[1].message).to eq('Test Team Invitation 4')
23
+ expect(response.invites.teams[1].account.name).to eq('typetalk-rubygem-tester')
24
+
25
+ expect(response.invites.topics.size).to eq(2)
26
+ expect(response.invites.topics[0].topic.name).to eq('Test Topic 5')
27
+ expect(response.invites.topics[0].sender.name).to eq('umakoz')
28
+ expect(response.invites.topics[0].message).to eq('Test Topic Invitation 5')
29
+ expect(response.invites.topics[0].account.name).to eq('typetalk-rubygem-tester')
30
+ expect(response.invites.topics[1].topic.name).to eq('Test Topic 4')
31
+ expect(response.invites.topics[1].sender.name).to eq('umakoz')
32
+ expect(response.invites.topics[1].message).to eq('Test Topic Invitation 4')
33
+ expect(response.invites.topics[1].account.name).to eq('typetalk-rubygem-tester')
34
+
35
+ expect(response.mentions.size).to eq(3)
36
+ expect(response.mentions[0].post.message).to eq('Test Message 1 - 4 @typetalk-rubygem-tester ')
37
+ expect(response.mentions[0].post.topic.name).to eq('Test Topic 1')
38
+ expect(response.mentions[0].post.account.name).to eq('umakoz')
39
+ expect(response.mentions[1].post.message).to eq('Test Message 1 - 3 @typetalk-rubygem-tester ')
40
+ expect(response.mentions[1].post.topic.name).to eq('Test Topic 1')
41
+ expect(response.mentions[1].post.account.name).to eq('umakoz')
42
+ expect(response.mentions[2].post.message).to eq('Test Message 3 - 5 @typetalk-rubygem-tester ')
43
+ expect(response.mentions[2].post.topic.name).to eq('Test Topic 3')
44
+ expect(response.mentions[2].post.account.name).to eq('umakoz')
45
+ end
46
+ end
47
+
48
+
49
+
50
+
51
+
52
+ describe '#get_notifications_status', :vcr do
53
+ it 'should get the correct resource' do
54
+ response = api.get_notifications_status
55
+ expect(response).to be_a(Hashie::Mash)
56
+
57
+ expect(response.access.unopened).to eq(0)
58
+ expect(response.invite.team.pending).to eq(2)
59
+ expect(response.invite.topic.pending).to eq(2)
60
+ expect(response.mention.unread).to eq(1)
61
+ end
62
+ end
63
+
64
+
65
+
66
+
67
+
68
+ describe '#read_notifications', :vcr do
69
+ it 'should get the correct resource' do
70
+ response = api.read_notifications
71
+ expect(response).to be_a(Hashie::Mash)
72
+
73
+ expect(response.access.unopened).to eq(0)
74
+ end
75
+ end
76
+
77
+
78
+
79
+
80
+
81
+ describe '#accept_team', :vcr do
82
+ it 'should get the correct resource' do
83
+ response = api.accept_team(1038, 2052) # Test Team 3
84
+ expect(response).to be_a(Hashie::Mash)
85
+
86
+ expect(response.topics[0].name).to eq('Test Team 3')
87
+ expect(response.invite.role).to eq('member')
88
+ expect(response.invite.team.name).to eq('Test Team 3')
89
+ expect(response.invite.sender.name).to eq('umakoz')
90
+ expect(response.invite.message).to eq('Test Team Invitation 3')
91
+ expect(response.invite.account.name).to eq('typetalk-rubygem-tester')
92
+
93
+ # already accept team
94
+ expect{ api.accept_team(1038, 2052) }.to raise_error(Typetalk::InvalidRequest)
95
+ end
96
+
97
+
98
+ it 'should raise error when team_id is wrong' do
99
+ expect{ api.accept_team('dummy', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
100
+ end
101
+
102
+
103
+ it 'should raise error when invite_team_id is wrong' do
104
+ # Test Team 3
105
+ expect{ api.accept_team('1038', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
106
+ end
107
+ end
108
+
109
+
110
+
111
+
112
+
113
+ describe '#decline_team', :vcr do
114
+ it 'should get the correct resource' do
115
+ response = api.decline_team(1039, 2053) # Test Team 4
116
+ expect(response).to be_a(Hashie::Mash)
117
+
118
+ expect(response.role).to eq('member')
119
+ expect(response.team.name).to eq('Test Team 4')
120
+ expect(response.sender.name).to eq('umakoz')
121
+ expect(response.message).to eq('Test Team Invitation 4')
122
+ expect(response.account.name).to eq('typetalk-rubygem-tester')
123
+
124
+ # already decline team
125
+ expect{ api.decline_team(1039, 2053) }.to raise_error(Typetalk::InvalidRequest)
126
+ end
127
+
128
+
129
+ it 'should raise error when team_id is wrong' do
130
+ expect{ api.decline_team('dummy', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
131
+ end
132
+
133
+
134
+ it 'should raise error when invite_team_id is wrong' do
135
+ # Test Team 4
136
+ expect{ api.decline_team('1039', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
137
+ end
138
+ end
139
+
140
+
141
+
142
+
143
+
144
+ describe '#accept_topic', :vcr do
145
+ it 'should get the correct resource' do
146
+ response = api.accept_topic(5170, 1778) # Test Topic 4
147
+ expect(response).to be_a(Hashie::Mash)
148
+
149
+ expect(response.invite.topic.name).to eq('Test Topic 4')
150
+ expect(response.invite.sender.name).to eq('umakoz')
151
+ expect(response.invite.message).to eq('Test Topic Invitation 4')
152
+ expect(response.invite.account.name).to eq('typetalk-rubygem-tester')
153
+
154
+ # already accept topic
155
+ expect{ api.accept_topic(5170, 1778) }.to raise_error(Typetalk::InvalidRequest)
156
+ end
157
+
158
+
159
+ it 'should raise error when topic_id is wrong' do
160
+ expect{ api.accept_topic('dummy', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
161
+ end
162
+
163
+
164
+ it 'should raise error when invite_topic_id is wrong' do
165
+ # Test Topic 4
166
+ expect{ api.accept_topic('5170', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
167
+ end
168
+ end
169
+
170
+
171
+
172
+
173
+
174
+ describe '#decline_topic', :vcr do
175
+ it 'should get the correct resource' do
176
+ response = api.decline_topic(5171, 1779) # Test Topic 5
177
+ expect(response).to be_a(Hashie::Mash)
178
+
179
+ expect(response.invite.topic.name).to eq('Test Topic 5')
180
+ expect(response.invite.sender.name).to eq('umakoz')
181
+ expect(response.invite.message).to eq('Test Topic Invitation 5')
182
+ expect(response.invite.account.name).to eq('typetalk-rubygem-tester')
183
+
184
+ # already decline topic
185
+ expect{ api.decline_topic(5171, 1779) }.to raise_error(Typetalk::InvalidRequest)
186
+ end
187
+
188
+
189
+ it 'should raise error when topic_id is wrong' do
190
+ expect{ api.decline_topic('dummy', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
191
+ end
192
+
193
+
194
+ it 'should raise error when invite_topic_id is wrong' do
195
+ # Test Topic 5
196
+ expect{ api.decline_topic('5171', 'dummy') }.to raise_error(Typetalk::InvalidRequest)
197
+ end
198
+ end
199
+
200
+ end
@@ -0,0 +1,150 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Typetalk::Api::Topic do
5
+
6
+ let(:api) { Typetalk::Api.new }
7
+ let(:topic_id) { 5149 } # Test Topic 3
8
+
9
+ describe '#get_topics', :vcr do
10
+ it 'should get the correct resource' do
11
+ response = api.get_topics
12
+ expect(response).to be_a(Hashie::Mash)
13
+ expect(response.topics.size).to eq(3)
14
+
15
+ topic1 = response.topics.find {|t| t.topic.name == 'Test Topic 1'}
16
+ expect(topic1).to be_a(Hashie::Mash)
17
+ expect(topic1.favorite).to be true
18
+ expect(topic1.unread['count']).to eq(1)
19
+
20
+ topic2 = response.topics.find {|t| t.topic.name == 'Test Topic 2'}
21
+ expect(topic2).to be_a(Hashie::Mash)
22
+ expect(topic2.favorite).to be true
23
+ expect(topic2.unread).to be_nil
24
+
25
+ topic3 = response.topics.find {|t| t.topic.name == 'Test Topic 3'}
26
+ expect(topic3).to be_a(Hashie::Mash)
27
+ expect(topic3.favorite).to be false
28
+ expect(topic3.unread['count']).to eq(3)
29
+ end
30
+ end
31
+
32
+
33
+
34
+ describe '#get_topic', :vcr do
35
+ it 'should get the correct resource' do
36
+ response = api.get_topic(topic_id)
37
+ expect(response).to be_a(Hashie::Mash)
38
+ expect(response.posts.size).to eq(6)
39
+
40
+ expect(response.posts[0].topicId).to eq(topic_id)
41
+ expect(response.posts[0].message).to eq('Test Message 3 - 1')
42
+ expect(response.posts[0].account.name).to eq('umakoz')
43
+ expect(response.posts[0].talks).to be_empty
44
+ expect(response.posts[0].replyTo).to be_nil
45
+ expect(response.posts[0].likes).to be_empty
46
+ expect(response.posts[0].links).to be_empty
47
+ expect(response.posts[0].mention).to be_nil
48
+ expect(response.posts[0].attachments).to be_empty
49
+
50
+ expect(response.posts[1].message).to eq('Test Message 3 - 2')
51
+ expect(response.posts[1].likes).not_to be_nil
52
+
53
+ expect(response.posts[2].message).to eq('Test Message 3 - 3')
54
+ expect(response.posts[2].talks[0].name).to eq('Test Summary 3 - 1')
55
+
56
+ expect(response.posts[3].message).to eq('Test Message 3 - 4')
57
+ expect(response.posts[3].replyTo).to eq(response.posts[0].id)
58
+
59
+ expect(response.posts[4].message).to eq('Test Message 3 - 5 @typetalk-rubygem-tester ')
60
+ expect(response.posts[4].mention).not_to be_nil
61
+
62
+ expect(response.posts[5].message).to eq('Test Message 3 - 6')
63
+ expect(response.posts[5].attachments[0].fileName).to eq('logo.jpg')
64
+
65
+ expect(response.bookmark.postId).to eq(response.posts[0].id)
66
+ expect(response.hasNext).to be false
67
+ end
68
+
69
+
70
+ it 'should get the correct backward resource' do
71
+ response = api.get_topic(topic_id, count:3, direction:'backward', from:278782) # Test Message 3 - 5
72
+ expect(response).to be_a(Hashie::Mash)
73
+ expect(response.posts.size).to eq(3)
74
+
75
+ expect(response.posts[0].message).to eq('Test Message 3 - 2')
76
+ expect(response.posts[1].message).to eq('Test Message 3 - 3')
77
+ expect(response.posts[2].message).to eq('Test Message 3 - 4')
78
+ expect(response.hasNext).to be true
79
+ end
80
+
81
+
82
+ it 'should get the correct forward resource' do
83
+ response = api.get_topic(topic_id, count:2, direction:'forward', from:278765) # Test Message 3 - 2
84
+ expect(response).to be_a(Hashie::Mash)
85
+ expect(response.posts.size).to eq(2)
86
+
87
+ expect(response.posts[0].message).to eq('Test Message 3 - 3')
88
+ expect(response.posts[1].message).to eq('Test Message 3 - 4')
89
+ expect(response.hasNext).to be true
90
+ end
91
+
92
+
93
+ it 'should raise error when topic_id is wrong' do
94
+ expect{ api.get_topic('dummy') }.to raise_error(Typetalk::InvalidRequest)
95
+ end
96
+ end
97
+
98
+
99
+
100
+ describe '#get_topic_members', :vcr do
101
+ it 'should get the correct resource' do
102
+ response = api.get_topic_members(topic_id)
103
+ expect(response).to be_a(Hashie::Mash)
104
+ expect(response.accounts.size).to eq(2)
105
+
106
+ account1 = response.accounts.find {|a| a.account.name == 'typetalk-rubygem-tester'}
107
+ expect(account1).not_to be_nil
108
+ account2 = response.accounts.find {|a| a.account.name == 'umakoz'}
109
+ expect(account2).not_to be_nil
110
+ end
111
+
112
+
113
+ it 'should raise error when topic_id is wrong' do
114
+ expect{ api.get_topic_members('dummy') }.to raise_error(Typetalk::InvalidRequest)
115
+ end
116
+ end
117
+
118
+
119
+
120
+ describe '#favorite_topic', :vcr do
121
+ it 'should get the correct resource' do
122
+ response = api.favorite_topic(topic_id)
123
+ expect(response).to be_a(Hashie::Mash)
124
+ expect(response.id).to eq(topic_id)
125
+ expect(response.name).to eq('Test Topic 3')
126
+ end
127
+
128
+
129
+ it 'should raise error when topic_id is wrong' do
130
+ expect{ api.favorite_topic('dummy') }.to raise_error(Typetalk::InvalidRequest)
131
+ end
132
+ end
133
+
134
+
135
+
136
+ describe '#unfavorite_topic', :vcr do
137
+ it 'should get the correct resource' do
138
+ response = api.unfavorite_topic(topic_id)
139
+ expect(response).to be_a(Hashie::Mash)
140
+ expect(response.id).to eq(topic_id)
141
+ expect(response.name).to eq('Test Topic 3')
142
+ end
143
+
144
+
145
+ it 'should raise error when topic_id is wrong' do
146
+ expect{ api.unfavorite_topic('dummy') }.to raise_error(Typetalk::InvalidRequest)
147
+ end
148
+ end
149
+
150
+ end
@@ -0,0 +1,27 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ describe Typetalk::Api::User do
5
+
6
+ let(:api) { Typetalk::Api.new }
7
+
8
+ describe '#get_profile', :vcr do
9
+ it 'should get the correct resource' do
10
+ response = api.get_profile
11
+ expect(response).to be_a(Hashie::Mash)
12
+ expect(response.account.name).to eq('typetalk-rubygem-tester')
13
+ expect(response.account.fullName).to eq('Rubygem Tester')
14
+ end
15
+
16
+ it 'should raise error when access_token is wrong' do
17
+ api.get_access_token
18
+ expect{ api.get_profile(token: '(WRONG_ACCESS_TOKEN)') }.to raise_error(Typetalk::InvalidRequest)
19
+ end
20
+
21
+ it 'should raise error when scope is wrong' do
22
+ r = api.get_access_token(scope: 'topic.read,topic.post')
23
+ expect{ api.get_profile(token: r.access_token) }.to raise_error(Typetalk::InvalidRequest)
24
+ end
25
+ end
26
+
27
+ end
data/typetalk.gemspec ADDED
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'typetalk/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "typetalk"
8
+ spec.version = Typetalk::VERSION
9
+ spec.authors = ["umakoz"]
10
+ spec.email = ["umakoz@gmail.com"]
11
+ spec.summary = %q{A Ruby wrapper for Typetalk}
12
+ spec.description = %q{A Ruby wrapper for Typetalk}
13
+ spec.homepage = "https://github.com/umakoz/typetalk"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = '>= 2.0.0'
22
+
23
+ spec.add_dependency "hashie"
24
+ spec.add_dependency "faraday"
25
+ spec.add_dependency "mime-types"
26
+
27
+ spec.add_development_dependency "bundler", "~> 1.6"
28
+ spec.add_development_dependency "rake"
29
+ spec.add_development_dependency "rspec"
30
+ spec.add_development_dependency "webmock"
31
+ spec.add_development_dependency "vcr"
32
+ spec.add_development_dependency "awesome_print"
33
+ end
metadata ADDED
@@ -0,0 +1,326 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: typetalk
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - umakoz
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-05-19 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: hashie
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: faraday
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mime-types
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.6'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '>='
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '>='
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: vcr
113
+ requirement: !ruby/object:Gem::Requirement
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
+ requirements:
122
+ - - '>='
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: awesome_print
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - '>='
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - '>='
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: A Ruby wrapper for Typetalk
140
+ email:
141
+ - umakoz@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - .gitignore
147
+ - .rspec
148
+ - Gemfile
149
+ - LICENSE.txt
150
+ - README.md
151
+ - Rakefile
152
+ - lib/typetalk.rb
153
+ - lib/typetalk/api.rb
154
+ - lib/typetalk/api/auth.rb
155
+ - lib/typetalk/api/mention.rb
156
+ - lib/typetalk/api/message.rb
157
+ - lib/typetalk/api/notification.rb
158
+ - lib/typetalk/api/topic.rb
159
+ - lib/typetalk/api/user.rb
160
+ - lib/typetalk/connection.rb
161
+ - lib/typetalk/error.rb
162
+ - lib/typetalk/version.rb
163
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_authorization_code.yml
164
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials.yml
165
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials_when_scope_changed.yml
166
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_authorization_code_is_wrong.yml
167
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_id_is_wrong.yml
168
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_secret_is_wrong.yml
169
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_redirect_uri_mismatch.yml
170
+ - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource.yml
171
+ - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource_till_mention.yml
172
+ - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_unread_resource.yml
173
+ - spec/cassettes/Typetalk_Api_Mention/_read_mention/should_get_the_correct_resource.yml
174
+ - spec/cassettes/Typetalk_Api_Mention/_read_mention/should_raise_error_when_mention_id_is_wrong.yml
175
+ - spec/cassettes/Typetalk_Api_Message/_get_message/should_get_the_correct_resource.yml
176
+ - spec/cassettes/Typetalk_Api_Message/_get_message/should_raise_error_when_post_id_is_wrong.yml
177
+ - spec/cassettes/Typetalk_Api_Message/_get_message/should_raise_error_when_topic_id_is_wrong.yml
178
+ - spec/cassettes/Typetalk_Api_Message/_like_message/should_get_the_correct_resource.yml
179
+ - spec/cassettes/Typetalk_Api_Message/_like_message/should_raise_error_when_post_id_is_wrong.yml
180
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource.yml
181
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_attachments.yml
182
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_reply.yml
183
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_talks.yml
184
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_raise_error_when_topic_id_is_wrong.yml
185
+ - spec/cassettes/Typetalk_Api_Message/_read_message/should_get_the_correct_resource.yml
186
+ - spec/cassettes/Typetalk_Api_Message/_read_message/should_get_the_correct_resource_till_post.yml
187
+ - spec/cassettes/Typetalk_Api_Message/_read_message/should_raise_error_when_post_id_is_wrong.yml
188
+ - spec/cassettes/Typetalk_Api_Message/_remove_message/should_get_the_correct_resource.yml
189
+ - spec/cassettes/Typetalk_Api_Message/_remove_message/should_raise_error_when_post_id_is_wrong.yml
190
+ - spec/cassettes/Typetalk_Api_Message/_unlike_message/should_get_the_correct_resource.yml
191
+ - spec/cassettes/Typetalk_Api_Message/_unlike_message/should_raise_error_when_post_id_is_wrong.yml
192
+ - spec/cassettes/Typetalk_Api_Message/_upload_attachment/should_get_the_correct_resource.yml
193
+ - spec/cassettes/Typetalk_Api_Message/_upload_attachment/should_raise_error_when_topic_id_is_wrong.yml
194
+ - spec/cassettes/Typetalk_Api_Notification/_accept_team/should_get_the_correct_resource.yml
195
+ - spec/cassettes/Typetalk_Api_Notification/_accept_team/should_raise_error_when_invite_team_id_is_wrong.yml
196
+ - spec/cassettes/Typetalk_Api_Notification/_accept_team/should_raise_error_when_team_id_is_wrong.yml
197
+ - spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_get_the_correct_resource.yml
198
+ - spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_raise_error_when_invite_topic_id_is_wrong.yml
199
+ - spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_raise_error_when_topic_id_is_wrong.yml
200
+ - spec/cassettes/Typetalk_Api_Notification/_decline_team/should_get_the_correct_resource.yml
201
+ - spec/cassettes/Typetalk_Api_Notification/_decline_team/should_raise_error_when_invite_team_id_is_wrong.yml
202
+ - spec/cassettes/Typetalk_Api_Notification/_decline_team/should_raise_error_when_team_id_is_wrong.yml
203
+ - spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_get_the_correct_resource.yml
204
+ - spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_raise_error_when_invite_topic_id_is_wrong.yml
205
+ - spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_raise_error_when_topic_id_is_wrong.yml
206
+ - spec/cassettes/Typetalk_Api_Notification/_get_notifications/should_get_the_correct_resource.yml
207
+ - spec/cassettes/Typetalk_Api_Notification/_get_notifications_status/should_get_the_correct_resource.yml
208
+ - spec/cassettes/Typetalk_Api_Notification/_read_notifications/should_get_the_correct_resource.yml
209
+ - spec/cassettes/Typetalk_Api_Topic/_favorite_topic/should_get_the_correct_resource.yml
210
+ - spec/cassettes/Typetalk_Api_Topic/_favorite_topic/should_raise_error_when_topic_id_is_wrong.yml
211
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_backward_resource.yml
212
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_forward_resource.yml
213
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_resource.yml
214
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_raise_error_when_topic_id_is_wrong.yml
215
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic_members/should_get_the_correct_resource.yml
216
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic_members/should_raise_error_when_topic_id_is_wrong.yml
217
+ - spec/cassettes/Typetalk_Api_Topic/_get_topics/should_get_the_correct_resource.yml
218
+ - spec/cassettes/Typetalk_Api_Topic/_unfavorite_topic/should_get_the_correct_resource.yml
219
+ - spec/cassettes/Typetalk_Api_Topic/_unfavorite_topic/should_raise_error_when_topic_id_is_wrong.yml
220
+ - spec/cassettes/Typetalk_Api_User/_get_profile/should_get_the_correct_resource.yml
221
+ - spec/cassettes/Typetalk_Api_User/_get_profile/should_raise_error_when_access_token_is_wrong.yml
222
+ - spec/cassettes/Typetalk_Api_User/_get_profile/should_raise_error_when_scope_is_wrong.yml
223
+ - spec/fixtures/attachments/logo_cacoo.jpg
224
+ - spec/fixtures/attachments/logo_typetalk.jpg
225
+ - spec/spec_helper.rb
226
+ - spec/typetalk/api/auth_spec.rb
227
+ - spec/typetalk/api/mention_spec.rb
228
+ - spec/typetalk/api/message_spec.rb
229
+ - spec/typetalk/api/notification_spec.rb
230
+ - spec/typetalk/api/topic_spec.rb
231
+ - spec/typetalk/api/user_spec.rb
232
+ - typetalk.gemspec
233
+ homepage: https://github.com/umakoz/typetalk
234
+ licenses:
235
+ - MIT
236
+ metadata: {}
237
+ post_install_message:
238
+ rdoc_options: []
239
+ require_paths:
240
+ - lib
241
+ required_ruby_version: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - '>='
244
+ - !ruby/object:Gem::Version
245
+ version: 2.0.0
246
+ required_rubygems_version: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - '>='
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ requirements: []
252
+ rubyforge_project:
253
+ rubygems_version: 2.0.14
254
+ signing_key:
255
+ specification_version: 4
256
+ summary: A Ruby wrapper for Typetalk
257
+ test_files:
258
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_authorization_code.yml
259
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials.yml
260
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_get_the_correct_resource_by_client_credentials_when_scope_changed.yml
261
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_authorization_code_is_wrong.yml
262
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_id_is_wrong.yml
263
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_client_secret_is_wrong.yml
264
+ - spec/cassettes/Typetalk_Api_Auth/_get_access_token/should_raise_error_when_redirect_uri_mismatch.yml
265
+ - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource.yml
266
+ - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_correct_resource_till_mention.yml
267
+ - spec/cassettes/Typetalk_Api_Mention/_get_mentions/should_get_the_unread_resource.yml
268
+ - spec/cassettes/Typetalk_Api_Mention/_read_mention/should_get_the_correct_resource.yml
269
+ - spec/cassettes/Typetalk_Api_Mention/_read_mention/should_raise_error_when_mention_id_is_wrong.yml
270
+ - spec/cassettes/Typetalk_Api_Message/_get_message/should_get_the_correct_resource.yml
271
+ - spec/cassettes/Typetalk_Api_Message/_get_message/should_raise_error_when_post_id_is_wrong.yml
272
+ - spec/cassettes/Typetalk_Api_Message/_get_message/should_raise_error_when_topic_id_is_wrong.yml
273
+ - spec/cassettes/Typetalk_Api_Message/_like_message/should_get_the_correct_resource.yml
274
+ - spec/cassettes/Typetalk_Api_Message/_like_message/should_raise_error_when_post_id_is_wrong.yml
275
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource.yml
276
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_attachments.yml
277
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_reply.yml
278
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_get_the_correct_resource_for_talks.yml
279
+ - spec/cassettes/Typetalk_Api_Message/_post_message/should_raise_error_when_topic_id_is_wrong.yml
280
+ - spec/cassettes/Typetalk_Api_Message/_read_message/should_get_the_correct_resource.yml
281
+ - spec/cassettes/Typetalk_Api_Message/_read_message/should_get_the_correct_resource_till_post.yml
282
+ - spec/cassettes/Typetalk_Api_Message/_read_message/should_raise_error_when_post_id_is_wrong.yml
283
+ - spec/cassettes/Typetalk_Api_Message/_remove_message/should_get_the_correct_resource.yml
284
+ - spec/cassettes/Typetalk_Api_Message/_remove_message/should_raise_error_when_post_id_is_wrong.yml
285
+ - spec/cassettes/Typetalk_Api_Message/_unlike_message/should_get_the_correct_resource.yml
286
+ - spec/cassettes/Typetalk_Api_Message/_unlike_message/should_raise_error_when_post_id_is_wrong.yml
287
+ - spec/cassettes/Typetalk_Api_Message/_upload_attachment/should_get_the_correct_resource.yml
288
+ - spec/cassettes/Typetalk_Api_Message/_upload_attachment/should_raise_error_when_topic_id_is_wrong.yml
289
+ - spec/cassettes/Typetalk_Api_Notification/_accept_team/should_get_the_correct_resource.yml
290
+ - spec/cassettes/Typetalk_Api_Notification/_accept_team/should_raise_error_when_invite_team_id_is_wrong.yml
291
+ - spec/cassettes/Typetalk_Api_Notification/_accept_team/should_raise_error_when_team_id_is_wrong.yml
292
+ - spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_get_the_correct_resource.yml
293
+ - spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_raise_error_when_invite_topic_id_is_wrong.yml
294
+ - spec/cassettes/Typetalk_Api_Notification/_accept_topic/should_raise_error_when_topic_id_is_wrong.yml
295
+ - spec/cassettes/Typetalk_Api_Notification/_decline_team/should_get_the_correct_resource.yml
296
+ - spec/cassettes/Typetalk_Api_Notification/_decline_team/should_raise_error_when_invite_team_id_is_wrong.yml
297
+ - spec/cassettes/Typetalk_Api_Notification/_decline_team/should_raise_error_when_team_id_is_wrong.yml
298
+ - spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_get_the_correct_resource.yml
299
+ - spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_raise_error_when_invite_topic_id_is_wrong.yml
300
+ - spec/cassettes/Typetalk_Api_Notification/_decline_topic/should_raise_error_when_topic_id_is_wrong.yml
301
+ - spec/cassettes/Typetalk_Api_Notification/_get_notifications/should_get_the_correct_resource.yml
302
+ - spec/cassettes/Typetalk_Api_Notification/_get_notifications_status/should_get_the_correct_resource.yml
303
+ - spec/cassettes/Typetalk_Api_Notification/_read_notifications/should_get_the_correct_resource.yml
304
+ - spec/cassettes/Typetalk_Api_Topic/_favorite_topic/should_get_the_correct_resource.yml
305
+ - spec/cassettes/Typetalk_Api_Topic/_favorite_topic/should_raise_error_when_topic_id_is_wrong.yml
306
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_backward_resource.yml
307
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_forward_resource.yml
308
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_get_the_correct_resource.yml
309
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic/should_raise_error_when_topic_id_is_wrong.yml
310
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic_members/should_get_the_correct_resource.yml
311
+ - spec/cassettes/Typetalk_Api_Topic/_get_topic_members/should_raise_error_when_topic_id_is_wrong.yml
312
+ - spec/cassettes/Typetalk_Api_Topic/_get_topics/should_get_the_correct_resource.yml
313
+ - spec/cassettes/Typetalk_Api_Topic/_unfavorite_topic/should_get_the_correct_resource.yml
314
+ - spec/cassettes/Typetalk_Api_Topic/_unfavorite_topic/should_raise_error_when_topic_id_is_wrong.yml
315
+ - spec/cassettes/Typetalk_Api_User/_get_profile/should_get_the_correct_resource.yml
316
+ - spec/cassettes/Typetalk_Api_User/_get_profile/should_raise_error_when_access_token_is_wrong.yml
317
+ - spec/cassettes/Typetalk_Api_User/_get_profile/should_raise_error_when_scope_is_wrong.yml
318
+ - spec/fixtures/attachments/logo_cacoo.jpg
319
+ - spec/fixtures/attachments/logo_typetalk.jpg
320
+ - spec/spec_helper.rb
321
+ - spec/typetalk/api/auth_spec.rb
322
+ - spec/typetalk/api/mention_spec.rb
323
+ - spec/typetalk/api/message_spec.rb
324
+ - spec/typetalk/api/notification_spec.rb
325
+ - spec/typetalk/api/topic_spec.rb
326
+ - spec/typetalk/api/user_spec.rb