instagram-continued 1.3.0 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +11 -0
- data/.travis.yml +1 -0
- data/README.md +1 -1
- data/Rakefile +12 -11
- data/instagram-continued.gemspec +6 -5
- data/lib/faraday/loud_logger.rb +47 -48
- data/lib/faraday/oauth2.rb +16 -18
- data/lib/faraday/raise_http_exception.rb +9 -9
- data/lib/instagram.rb +8 -8
- data/lib/instagram/api.rb +4 -4
- data/lib/instagram/client.rb +1 -1
- data/lib/instagram/client/comments.rb +5 -5
- data/lib/instagram/client/embedding.rb +9 -9
- data/lib/instagram/client/likes.rb +5 -5
- data/lib/instagram/client/locations.rb +4 -4
- data/lib/instagram/client/media.rb +3 -3
- data/lib/instagram/client/subscriptions.rb +27 -27
- data/lib/instagram/client/tags.rb +3 -3
- data/lib/instagram/client/users.rb +19 -19
- data/lib/instagram/client/utils.rb +5 -5
- data/lib/instagram/configuration.rb +7 -6
- data/lib/instagram/connection.rb +7 -7
- data/lib/instagram/oauth.rb +8 -8
- data/lib/instagram/request.rb +23 -26
- data/lib/instagram/response.rb +8 -4
- data/lib/instagram/version.rb +1 -1
- data/spec/faraday/response_spec.rb +23 -25
- data/spec/instagram/api_spec.rb +90 -94
- data/spec/instagram/client/comments_spec.rb +21 -25
- data/spec/instagram/client/embedding_spec.rb +8 -8
- data/spec/instagram/client/geography_spec.rb +10 -13
- data/spec/instagram/client/likes_spec.rb +21 -25
- data/spec/instagram/client/locations_spec.rb +42 -48
- data/spec/instagram/client/media_spec.rb +33 -37
- data/spec/instagram/client/subscriptions_spec.rb +34 -46
- data/spec/instagram/client/tags_spec.rb +29 -33
- data/spec/instagram/client/users_spec.rb +155 -180
- data/spec/instagram/client/utils_spec.rb +8 -9
- data/spec/instagram/client_spec.rb +9 -9
- data/spec/instagram/request_spec.rb +27 -27
- data/spec/instagram_spec.rb +20 -24
- data/spec/spec_helper.rb +10 -10
- metadata +24 -9
@@ -1,26 +1,24 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
2
2
|
|
3
3
|
describe Instagram::Client do
|
4
4
|
Instagram::Configuration::VALID_FORMATS.each do |format|
|
5
5
|
context ".new(:format => '#{format}')" do
|
6
|
-
|
7
6
|
before do
|
8
|
-
@client = Instagram::Client.new(:
|
7
|
+
@client = Instagram::Client.new(format: format, client_id: "CID", client_secret: "CS", access_token: "AT")
|
9
8
|
end
|
10
9
|
|
11
10
|
describe ".subscriptions" do
|
12
|
-
|
13
11
|
before do
|
14
|
-
stub_get("subscriptions.#{format}")
|
15
|
-
with(:
|
16
|
-
to_return(:
|
12
|
+
stub_get("subscriptions.#{format}")
|
13
|
+
.with(query: { client_id: @client.client_id, client_secret: @client.client_secret })
|
14
|
+
.to_return(body: fixture("subscriptions.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
17
15
|
end
|
18
16
|
|
19
17
|
it "should get the correct resource" do
|
20
18
|
@client.subscriptions
|
21
|
-
expect(a_get("subscriptions.#{format}")
|
22
|
-
with(:
|
23
|
-
to have_been_made
|
19
|
+
expect(a_get("subscriptions.#{format}")
|
20
|
+
.with(query: { client_id: @client.client_id, client_secret: @client.client_secret }))
|
21
|
+
.to have_been_made
|
24
22
|
end
|
25
23
|
|
26
24
|
it "should return an array of subscriptions" do
|
@@ -31,67 +29,61 @@ describe Instagram::Client do
|
|
31
29
|
end
|
32
30
|
|
33
31
|
describe ".create_subscription" do
|
34
|
-
|
35
32
|
before do
|
36
|
-
stub_post("subscriptions.#{format}")
|
37
|
-
with(:
|
38
|
-
to_return(:
|
33
|
+
stub_post("subscriptions.#{format}")
|
34
|
+
.with(body: { object: "user", callback_url: "http://example.com/instagram/callback", aspect: "media", client_id: @client.client_id, client_secret: @client.client_secret })
|
35
|
+
.to_return(body: fixture("subscription.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
39
36
|
end
|
40
37
|
|
41
38
|
it "should get the correct resource" do
|
42
|
-
@client.create_subscription("user", :
|
43
|
-
expect(a_post("subscriptions.#{format}")
|
44
|
-
with(:
|
45
|
-
to have_been_made
|
39
|
+
@client.create_subscription("user", callback_url: "http://example.com/instagram/callback")
|
40
|
+
expect(a_post("subscriptions.#{format}")
|
41
|
+
.with(body: { object: "user", callback_url: "http://example.com/instagram/callback", aspect: "media", client_id: @client.client_id, client_secret: @client.client_secret }))
|
42
|
+
.to have_been_made
|
46
43
|
end
|
47
44
|
|
48
45
|
it "should return the new subscription when successful" do
|
49
|
-
subscription = @client.create_subscription("user", :
|
46
|
+
subscription = @client.create_subscription("user", callback_url: "http://example.com/instagram/callback")
|
50
47
|
expect(subscription.object).to eq("user")
|
51
48
|
end
|
52
49
|
end
|
53
50
|
|
54
51
|
describe ".delete_media_comment" do
|
55
|
-
|
56
52
|
before do
|
57
|
-
stub_delete("subscriptions.#{format}")
|
58
|
-
with(:
|
59
|
-
to_return(:
|
53
|
+
stub_delete("subscriptions.#{format}")
|
54
|
+
.with(query: { object: "user", client_id: @client.client_id, client_secret: @client.client_secret })
|
55
|
+
.to_return(body: fixture("subscription_deleted.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
60
56
|
end
|
61
57
|
|
62
58
|
it "should get the correct resource" do
|
63
|
-
@client.delete_subscription(:
|
64
|
-
expect(a_delete("subscriptions.#{format}")
|
65
|
-
with(:
|
66
|
-
to have_been_made
|
59
|
+
@client.delete_subscription(object: "user")
|
60
|
+
expect(a_delete("subscriptions.#{format}")
|
61
|
+
.with(query: { object: "user", client_id: @client.client_id, client_secret: @client.client_secret }))
|
62
|
+
.to have_been_made
|
67
63
|
end
|
68
64
|
end
|
69
65
|
|
70
66
|
describe ".validate_update" do
|
71
|
-
|
72
67
|
subject { @client.validate_update(body, headers) }
|
73
68
|
|
74
69
|
context "when calculated signature matches request signature" do
|
75
|
-
|
76
|
-
let(:
|
77
|
-
let(:
|
78
|
-
let(:headers) { {"X-Hub-Signature" => request_signature} }
|
70
|
+
let(:body) { { foo: "bar" }.to_json }
|
71
|
+
let(:request_signature) { OpenSSL::HMAC.hexdigest("sha1", @client.client_secret, body) }
|
72
|
+
let(:headers) { { "X-Hub-Signature" => request_signature } }
|
79
73
|
|
80
74
|
it { expect(subject).to be_truthy }
|
81
75
|
end
|
82
76
|
|
83
77
|
context "when calculated signature does not match request signature" do
|
84
|
-
|
85
|
-
let(:body) { {foo: "bar"}.to_json }
|
78
|
+
let(:body) { { foo: "bar" }.to_json }
|
86
79
|
let(:request_signature) { "going to fail" }
|
87
|
-
let(:headers) { {"X-Hub-Signature" => request_signature} }
|
80
|
+
let(:headers) { { "X-Hub-Signature" => request_signature } }
|
88
81
|
|
89
82
|
it { expect(subject).to be_falsey }
|
90
83
|
end
|
91
84
|
end
|
92
85
|
|
93
86
|
describe ".process_subscriptions" do
|
94
|
-
|
95
87
|
context "without a callbacks block" do
|
96
88
|
it "should raise an ArgumentError" do
|
97
89
|
expect do
|
@@ -101,14 +93,13 @@ describe Instagram::Client do
|
|
101
93
|
end
|
102
94
|
|
103
95
|
context "with a callbacks block and valid JSON" do
|
104
|
-
|
105
96
|
before do
|
106
97
|
@json = fixture("subscription_payload.json").read
|
107
98
|
end
|
108
99
|
|
109
100
|
it "should issue a callback to on_user_changed" do
|
110
101
|
@client.process_subscription(@json) do |handler|
|
111
|
-
handler.on_user_changed do |user_id,
|
102
|
+
handler.on_user_changed do |user_id, _payload|
|
112
103
|
expect(user_id).to eq("1234")
|
113
104
|
end
|
114
105
|
end
|
@@ -116,7 +107,7 @@ describe Instagram::Client do
|
|
116
107
|
|
117
108
|
it "should issue a callback to on_tag_changed" do
|
118
109
|
@client.process_subscription(@json) do |handler|
|
119
|
-
handler.on_tag_changed do |tag_name,
|
110
|
+
handler.on_tag_changed do |tag_name, _payload|
|
120
111
|
expect(tag_name).to eq("nofilter")
|
121
112
|
end
|
122
113
|
end
|
@@ -124,12 +115,11 @@ describe Instagram::Client do
|
|
124
115
|
|
125
116
|
it "should issue both callbacks in one block" do
|
126
117
|
@client.process_subscription(@json) do |handler|
|
127
|
-
|
128
|
-
handler.on_user_changed do |user_id, payload|
|
118
|
+
handler.on_user_changed do |user_id, _payload|
|
129
119
|
expect(user_id).to eq("1234")
|
130
120
|
end
|
131
121
|
|
132
|
-
handler.on_tag_changed do |tag_name,
|
122
|
+
handler.on_tag_changed do |tag_name, _payload|
|
133
123
|
expect(tag_name).to eq("nofilter")
|
134
124
|
end
|
135
125
|
end
|
@@ -138,14 +128,13 @@ describe Instagram::Client do
|
|
138
128
|
end
|
139
129
|
|
140
130
|
context "with a valid signature" do
|
141
|
-
|
142
131
|
before do
|
143
132
|
@json = fixture("subscription_payload.json").read
|
144
133
|
end
|
145
134
|
|
146
135
|
it "should not raise an Instagram::InvalidSignature error" do
|
147
136
|
expect do
|
148
|
-
@client.process_subscription(@json, :
|
137
|
+
@client.process_subscription(@json, signature: "f1dbe2b6184ac2131209c87bba8e0382d089a8a2") do |handler|
|
149
138
|
# hi
|
150
139
|
end
|
151
140
|
end.not_to raise_error
|
@@ -153,7 +142,6 @@ describe Instagram::Client do
|
|
153
142
|
end
|
154
143
|
|
155
144
|
context "with an invalid signature" do
|
156
|
-
|
157
145
|
before do
|
158
146
|
@json = fixture("subscription_payload.json").read
|
159
147
|
end
|
@@ -162,7 +150,7 @@ describe Instagram::Client do
|
|
162
150
|
invalid_signatures = ["31337H4X0R", nil]
|
163
151
|
invalid_signatures.each do |signature|
|
164
152
|
expect do
|
165
|
-
@client.process_subscription(@json, :
|
153
|
+
@client.process_subscription(@json, signature: signature) do |handler|
|
166
154
|
# hi
|
167
155
|
end
|
168
156
|
end.to raise_error(Instagram::InvalidSignature)
|
@@ -1,75 +1,71 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
2
2
|
|
3
3
|
describe Instagram::Client do
|
4
4
|
Instagram::Configuration::VALID_FORMATS.each do |format|
|
5
5
|
context ".new(:format => '#{format}')" do
|
6
6
|
before do
|
7
|
-
@client = Instagram::Client.new(:
|
7
|
+
@client = Instagram::Client.new(format: format, client_id: "CID", client_secret: "CS", access_token: "AT")
|
8
8
|
end
|
9
9
|
|
10
10
|
describe ".tag" do
|
11
|
-
|
12
11
|
before do
|
13
|
-
stub_get("tags/cat.#{format}")
|
14
|
-
with(:
|
15
|
-
to_return(:
|
12
|
+
stub_get("tags/cat.#{format}")
|
13
|
+
.with(query: { access_token: @client.access_token })
|
14
|
+
.to_return(body: fixture("tag.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
16
15
|
end
|
17
16
|
|
18
17
|
it "should get the correct resource" do
|
19
|
-
@client.tag(
|
20
|
-
expect(a_get("tags/cat.#{format}")
|
21
|
-
with(:
|
22
|
-
to have_been_made
|
18
|
+
@client.tag("cat")
|
19
|
+
expect(a_get("tags/cat.#{format}")
|
20
|
+
.with(query: { access_token: @client.access_token }))
|
21
|
+
.to have_been_made
|
23
22
|
end
|
24
23
|
|
25
24
|
it "should return extended information of a given media item" do
|
26
|
-
tag = @client.tag(
|
27
|
-
expect(tag.name).to eq(
|
25
|
+
tag = @client.tag("cat")
|
26
|
+
expect(tag.name).to eq("cat")
|
28
27
|
end
|
29
28
|
end
|
30
29
|
|
31
30
|
describe ".tag_recent_media" do
|
32
|
-
|
33
31
|
before do
|
34
|
-
stub_get("tags/cat/media/recent.#{format}")
|
35
|
-
with(:
|
36
|
-
to_return(:
|
32
|
+
stub_get("tags/cat/media/recent.#{format}")
|
33
|
+
.with(query: { access_token: @client.access_token })
|
34
|
+
.to_return(body: fixture("tag_recent_media.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
37
35
|
end
|
38
36
|
|
39
37
|
it "should get the correct resource" do
|
40
|
-
@client.tag_recent_media(
|
41
|
-
expect(a_get("tags/cat/media/recent.#{format}")
|
42
|
-
with(:
|
43
|
-
to have_been_made
|
38
|
+
@client.tag_recent_media("cat")
|
39
|
+
expect(a_get("tags/cat/media/recent.#{format}")
|
40
|
+
.with(query: { access_token: @client.access_token }))
|
41
|
+
.to have_been_made
|
44
42
|
end
|
45
43
|
|
46
44
|
it "should return a list of media taken at a given location" do
|
47
|
-
media = @client.tag_recent_media(
|
45
|
+
media = @client.tag_recent_media("cat")
|
48
46
|
expect(media).to be_a Array
|
49
47
|
expect(media.first.user.username).to eq("amandavan")
|
50
48
|
end
|
51
|
-
|
52
49
|
end
|
53
50
|
|
54
51
|
describe ".tag_search" do
|
55
|
-
|
56
52
|
before do
|
57
|
-
stub_get("tags/search.#{format}")
|
58
|
-
with(:
|
59
|
-
with(:
|
60
|
-
to_return(:
|
53
|
+
stub_get("tags/search.#{format}")
|
54
|
+
.with(query: { access_token: @client.access_token })
|
55
|
+
.with(query: { q: "cat" })
|
56
|
+
.to_return(body: fixture("tag_search.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
61
57
|
end
|
62
58
|
|
63
59
|
it "should get the correct resource" do
|
64
|
-
@client.tag_search(
|
65
|
-
expect(a_get("tags/search.#{format}")
|
66
|
-
with(:
|
67
|
-
with(:
|
68
|
-
to have_been_made
|
60
|
+
@client.tag_search("cat")
|
61
|
+
expect(a_get("tags/search.#{format}")
|
62
|
+
.with(query: { access_token: @client.access_token })
|
63
|
+
.with(query: { q: "cat" }))
|
64
|
+
.to have_been_made
|
69
65
|
end
|
70
66
|
|
71
67
|
it "should return an array of user search results" do
|
72
|
-
tags = @client.tag_search(
|
68
|
+
tags = @client.tag_search("cat")
|
73
69
|
expect(tags).to be_a Array
|
74
70
|
expect(tags.first.name).to eq("cats")
|
75
71
|
end
|
@@ -1,68 +1,63 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path("../../../spec_helper", __FILE__)
|
2
2
|
|
3
3
|
describe Instagram::Client do
|
4
4
|
Instagram::Configuration::VALID_FORMATS.each do |format|
|
5
5
|
context ".new(:format => '#{format}')" do
|
6
6
|
before do
|
7
|
-
@client = Instagram::Client.new(:
|
7
|
+
@client = Instagram::Client.new(format: format, client_id: "CID", client_secret: "CS", access_token: "AT")
|
8
8
|
end
|
9
9
|
|
10
10
|
describe ".user" do
|
11
|
-
|
12
11
|
context "with user ID passed" do
|
13
|
-
|
14
12
|
before do
|
15
|
-
stub_get("users/4.#{format}")
|
16
|
-
with(:
|
17
|
-
to_return(:
|
13
|
+
stub_get("users/4.#{format}")
|
14
|
+
.with(query: { access_token: @client.access_token })
|
15
|
+
.to_return(body: fixture("mikeyk.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
18
16
|
end
|
19
17
|
|
20
18
|
it "should get the correct resource" do
|
21
19
|
@client.user(4)
|
22
|
-
expect(a_get("users/4.#{format}")
|
23
|
-
with(:
|
24
|
-
to have_been_made
|
20
|
+
expect(a_get("users/4.#{format}")
|
21
|
+
.with(query: { access_token: @client.access_token }))
|
22
|
+
.to have_been_made
|
25
23
|
end
|
26
24
|
|
27
25
|
it "should return extended information of a given user" do
|
28
26
|
user = @client.user(4)
|
29
27
|
expect(user.full_name).to eq("Mike Krieger")
|
30
28
|
end
|
31
|
-
|
32
29
|
end
|
33
30
|
|
34
31
|
context "without user ID passed" do
|
35
|
-
|
36
32
|
before do
|
37
|
-
stub_get("users/self.#{format}")
|
38
|
-
with(:
|
39
|
-
to_return(:
|
33
|
+
stub_get("users/self.#{format}")
|
34
|
+
.with(query: { access_token: @client.access_token })
|
35
|
+
.to_return(body: fixture("shayne.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
40
36
|
end
|
41
37
|
|
42
38
|
it "should get the correct resource" do
|
43
|
-
@client.user
|
44
|
-
expect(a_get("users/self.#{format}")
|
45
|
-
with(:
|
46
|
-
to have_been_made
|
39
|
+
@client.user
|
40
|
+
expect(a_get("users/self.#{format}")
|
41
|
+
.with(query: { access_token: @client.access_token }))
|
42
|
+
.to have_been_made
|
47
43
|
end
|
48
44
|
end
|
49
45
|
end
|
50
46
|
|
51
47
|
describe ".user_search" do
|
52
|
-
|
53
48
|
before do
|
54
|
-
stub_get("users/search.#{format}")
|
55
|
-
with(:
|
56
|
-
with(:
|
57
|
-
to_return(:
|
49
|
+
stub_get("users/search.#{format}")
|
50
|
+
.with(query: { access_token: @client.access_token })
|
51
|
+
.with(query: { q: "Shayne Sweeney" })
|
52
|
+
.to_return(body: fixture("user_search.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
58
53
|
end
|
59
54
|
|
60
55
|
it "should get the correct resource" do
|
61
56
|
@client.user_search("Shayne Sweeney")
|
62
|
-
expect(a_get("users/search.#{format}")
|
63
|
-
with(:
|
64
|
-
with(:
|
65
|
-
to have_been_made
|
57
|
+
expect(a_get("users/search.#{format}")
|
58
|
+
.with(query: { access_token: @client.access_token })
|
59
|
+
.with(query: { q: "Shayne Sweeney" }))
|
60
|
+
.to have_been_made
|
66
61
|
end
|
67
62
|
|
68
63
|
it "should return an array of user search results" do
|
@@ -73,20 +68,18 @@ describe Instagram::Client do
|
|
73
68
|
end
|
74
69
|
|
75
70
|
describe ".user_follows" do
|
76
|
-
|
77
71
|
context "with user ID passed" do
|
78
|
-
|
79
72
|
before do
|
80
|
-
stub_get("users/4/follows.#{format}")
|
81
|
-
with(:
|
82
|
-
to_return(:
|
73
|
+
stub_get("users/4/follows.#{format}")
|
74
|
+
.with(query: { access_token: @client.access_token })
|
75
|
+
.to_return(body: fixture("follows.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
83
76
|
end
|
84
77
|
|
85
78
|
it "should get the correct resource" do
|
86
79
|
@client.user_follows(4)
|
87
|
-
expect(a_get("users/4/follows.#{format}")
|
88
|
-
with(:
|
89
|
-
to have_been_made
|
80
|
+
expect(a_get("users/4/follows.#{format}")
|
81
|
+
.with(query: { access_token: @client.access_token }))
|
82
|
+
.to have_been_made
|
90
83
|
end
|
91
84
|
|
92
85
|
it "should return a list of users whom a given user follows" do
|
@@ -97,37 +90,34 @@ describe Instagram::Client do
|
|
97
90
|
end
|
98
91
|
|
99
92
|
context "without user ID passed" do
|
100
|
-
|
101
93
|
before do
|
102
|
-
stub_get("users/self/follows.#{format}")
|
103
|
-
with(:
|
104
|
-
to_return(:
|
94
|
+
stub_get("users/self/follows.#{format}")
|
95
|
+
.with(query: { access_token: @client.access_token })
|
96
|
+
.to_return(body: fixture("follows.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
105
97
|
end
|
106
98
|
|
107
99
|
it "should get the correct resource" do
|
108
100
|
@client.user_follows
|
109
|
-
expect(a_get("users/self/follows.#{format}")
|
110
|
-
with(:
|
111
|
-
to have_been_made
|
101
|
+
expect(a_get("users/self/follows.#{format}")
|
102
|
+
.with(query: { access_token: @client.access_token }))
|
103
|
+
.to have_been_made
|
112
104
|
end
|
113
105
|
end
|
114
106
|
end
|
115
107
|
|
116
108
|
describe ".user_followed_by" do
|
117
|
-
|
118
109
|
context "with user ID passed" do
|
119
|
-
|
120
110
|
before do
|
121
|
-
stub_get("users/4/followed-by.#{format}")
|
122
|
-
with(:
|
123
|
-
to_return(:
|
111
|
+
stub_get("users/4/followed-by.#{format}")
|
112
|
+
.with(query: { access_token: @client.access_token })
|
113
|
+
.to_return(body: fixture("followed_by.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
124
114
|
end
|
125
115
|
|
126
116
|
it "should get the correct resource" do
|
127
117
|
@client.user_followed_by(4)
|
128
|
-
expect(a_get("users/4/followed-by.#{format}")
|
129
|
-
with(:
|
130
|
-
to have_been_made
|
118
|
+
expect(a_get("users/4/followed-by.#{format}")
|
119
|
+
.with(query: { access_token: @client.access_token }))
|
120
|
+
.to have_been_made
|
131
121
|
end
|
132
122
|
|
133
123
|
it "should return a list of users whom a given user is followed by" do
|
@@ -138,63 +128,60 @@ describe Instagram::Client do
|
|
138
128
|
end
|
139
129
|
|
140
130
|
context "without user ID passed" do
|
141
|
-
|
142
131
|
before do
|
143
|
-
stub_get("users/self/followed-by.#{format}")
|
144
|
-
with(:
|
145
|
-
to_return(:
|
132
|
+
stub_get("users/self/followed-by.#{format}")
|
133
|
+
.with(query: { access_token: @client.access_token })
|
134
|
+
.to_return(body: fixture("followed_by.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
146
135
|
end
|
147
136
|
|
148
137
|
it "should get the correct resource" do
|
149
138
|
@client.user_followed_by
|
150
|
-
expect(a_get("users/self/followed-by.#{format}")
|
151
|
-
with(:
|
152
|
-
to have_been_made
|
139
|
+
expect(a_get("users/self/followed-by.#{format}")
|
140
|
+
.with(query: { access_token: @client.access_token }))
|
141
|
+
.to have_been_made
|
153
142
|
end
|
154
143
|
end
|
155
144
|
end
|
156
145
|
|
157
146
|
describe ".user_media_feed" do
|
158
|
-
|
159
147
|
before do
|
160
|
-
stub_get("users/self/feed.#{format}")
|
161
|
-
with(:
|
162
|
-
to_return(:
|
148
|
+
stub_get("users/self/feed.#{format}")
|
149
|
+
.with(query: { access_token: @client.access_token })
|
150
|
+
.to_return(body: fixture("user_media_feed.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
163
151
|
end
|
164
152
|
|
165
153
|
it "should get the correct resource" do
|
166
154
|
@client.user_media_feed
|
167
|
-
expect(a_get("users/self/feed.#{format}")
|
168
|
-
with(:
|
169
|
-
to have_been_made
|
155
|
+
expect(a_get("users/self/feed.#{format}")
|
156
|
+
.with(query: { access_token: @client.access_token }))
|
157
|
+
.to have_been_made
|
170
158
|
end
|
171
159
|
|
172
160
|
context Instagram::Response do
|
173
|
-
let(:user_media_feed_response){ @client.user_media_feed }
|
174
|
-
subject{ user_media_feed_response }
|
161
|
+
let(:user_media_feed_response) { @client.user_media_feed }
|
162
|
+
subject { user_media_feed_response }
|
175
163
|
|
176
|
-
it{ is_expected.to
|
177
|
-
it{ is_expected.to
|
178
|
-
it{ is_expected.to respond_to(:
|
179
|
-
it{ is_expected.to respond_to(:meta) }
|
164
|
+
it { is_expected.to be_a_kind_of(Instagram::Response) }
|
165
|
+
it { is_expected.to respond_to(:pagination) }
|
166
|
+
it { is_expected.to respond_to(:meta) }
|
180
167
|
|
181
|
-
context
|
182
|
-
subject{ user_media_feed_response.pagination }
|
168
|
+
context ".pagination" do
|
169
|
+
subject { user_media_feed_response.pagination }
|
183
170
|
|
184
|
-
it{ is_expected.to be_an_instance_of(Hashie::Mash) }
|
171
|
+
it { is_expected.to be_an_instance_of(Hashie::Mash) }
|
185
172
|
|
186
|
-
describe
|
173
|
+
describe "#next_max_id" do
|
187
174
|
subject { super().next_max_id }
|
188
|
-
it { is_expected.to eq(
|
175
|
+
it { is_expected.to eq("22063131") }
|
189
176
|
end
|
190
177
|
end
|
191
178
|
|
192
|
-
context
|
193
|
-
subject{ user_media_feed_response.meta }
|
179
|
+
context ".meta" do
|
180
|
+
subject { user_media_feed_response.meta }
|
194
181
|
|
195
|
-
it{ is_expected.to be_an_instance_of(Hashie::Mash) }
|
182
|
+
it { is_expected.to be_an_instance_of(Hashie::Mash) }
|
196
183
|
|
197
|
-
describe
|
184
|
+
describe "#code" do
|
198
185
|
subject { super().code }
|
199
186
|
it { is_expected.to eq(200) }
|
200
187
|
end
|
@@ -203,36 +190,33 @@ describe Instagram::Client do
|
|
203
190
|
end
|
204
191
|
|
205
192
|
describe ".user_liked_media" do
|
206
|
-
|
207
193
|
before do
|
208
|
-
stub_get("users/self/media/liked.#{format}")
|
209
|
-
with(:
|
210
|
-
to_return(:
|
194
|
+
stub_get("users/self/media/liked.#{format}")
|
195
|
+
.with(query: { access_token: @client.access_token })
|
196
|
+
.to_return(body: fixture("liked_media.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
211
197
|
end
|
212
198
|
|
213
199
|
it "should get the correct resource" do
|
214
200
|
@client.user_liked_media
|
215
|
-
expect(a_get("users/self/media/liked.#{format}")
|
216
|
-
with(:
|
217
|
-
to have_been_made
|
201
|
+
expect(a_get("users/self/media/liked.#{format}")
|
202
|
+
.with(query: { access_token: @client.access_token }))
|
203
|
+
.to have_been_made
|
218
204
|
end
|
219
205
|
end
|
220
|
-
|
221
|
-
describe ".user_recent_media" do
|
222
206
|
|
207
|
+
describe ".user_recent_media" do
|
223
208
|
context "with user ID passed" do
|
224
|
-
|
225
209
|
before do
|
226
|
-
stub_get("users/4/media/recent.#{format}")
|
227
|
-
with(:
|
228
|
-
to_return(:
|
210
|
+
stub_get("users/4/media/recent.#{format}")
|
211
|
+
.with(query: { access_token: @client.access_token })
|
212
|
+
.to_return(body: fixture("recent_media.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
229
213
|
end
|
230
214
|
|
231
215
|
it "should get the correct resource" do
|
232
216
|
@client.user_recent_media(4)
|
233
|
-
expect(a_get("users/4/media/recent.#{format}")
|
234
|
-
with(:
|
235
|
-
to have_been_made
|
217
|
+
expect(a_get("users/4/media/recent.#{format}")
|
218
|
+
.with(query: { access_token: @client.access_token }))
|
219
|
+
.to have_been_made
|
236
220
|
end
|
237
221
|
|
238
222
|
it "should return a list of recent media items for the given user" do
|
@@ -243,35 +227,33 @@ describe Instagram::Client do
|
|
243
227
|
end
|
244
228
|
|
245
229
|
context "without user ID passed" do
|
246
|
-
|
247
230
|
before do
|
248
|
-
stub_get("users/self/media/recent.#{format}")
|
249
|
-
with(:
|
250
|
-
to_return(:
|
231
|
+
stub_get("users/self/media/recent.#{format}")
|
232
|
+
.with(query: { access_token: @client.access_token })
|
233
|
+
.to_return(body: fixture("recent_media.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
251
234
|
end
|
252
235
|
|
253
236
|
it "should get the correct resource" do
|
254
237
|
@client.user_recent_media
|
255
|
-
expect(a_get("users/self/media/recent.#{format}")
|
256
|
-
with(:
|
257
|
-
to have_been_made
|
238
|
+
expect(a_get("users/self/media/recent.#{format}")
|
239
|
+
.with(query: { access_token: @client.access_token }))
|
240
|
+
.to have_been_made
|
258
241
|
end
|
259
242
|
end
|
260
243
|
end
|
261
244
|
|
262
245
|
describe ".user_requested_by" do
|
263
|
-
|
264
246
|
before do
|
265
|
-
stub_get("users/self/requested-by.#{format}")
|
266
|
-
with(:
|
267
|
-
to_return(:
|
247
|
+
stub_get("users/self/requested-by.#{format}")
|
248
|
+
.with(query: { access_token: @client.access_token })
|
249
|
+
.to_return(body: fixture("requested_by.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
268
250
|
end
|
269
251
|
|
270
252
|
it "should get the correct resource" do
|
271
253
|
@client.user_requested_by
|
272
|
-
expect(a_get("users/self/requested-by.#{format}")
|
273
|
-
with(:
|
274
|
-
to have_been_made
|
254
|
+
expect(a_get("users/self/requested-by.#{format}")
|
255
|
+
.with(query: { access_token: @client.access_token }))
|
256
|
+
.to have_been_made
|
275
257
|
end
|
276
258
|
|
277
259
|
it "should return a list of users awaiting approval" do
|
@@ -280,148 +262,141 @@ describe Instagram::Client do
|
|
280
262
|
expect(users.first.username).to eq("shayne")
|
281
263
|
end
|
282
264
|
end
|
283
|
-
|
265
|
+
|
284
266
|
describe ".user_relationship" do
|
285
|
-
|
286
267
|
before do
|
287
|
-
stub_get("users/4/relationship.#{format}")
|
288
|
-
with(:
|
289
|
-
to_return(:
|
268
|
+
stub_get("users/4/relationship.#{format}")
|
269
|
+
.with(query: { access_token: @client.access_token })
|
270
|
+
.to_return(body: fixture("relationship.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
290
271
|
end
|
291
|
-
|
272
|
+
|
292
273
|
it "should get the correct resource" do
|
293
274
|
@client.user_relationship(4)
|
294
|
-
expect(a_get("users/4/relationship.#{format}")
|
295
|
-
with(:
|
296
|
-
to have_been_made
|
275
|
+
expect(a_get("users/4/relationship.#{format}")
|
276
|
+
.with(query: { access_token: @client.access_token }))
|
277
|
+
.to have_been_made
|
297
278
|
end
|
298
|
-
|
279
|
+
|
299
280
|
it "should return a relationship status response" do
|
300
281
|
status = @client.user_relationship(4)
|
301
282
|
expect(status.incoming_status).to eq("requested_by")
|
302
283
|
end
|
303
284
|
end
|
304
|
-
|
285
|
+
|
305
286
|
describe ".follow_user" do
|
306
|
-
|
307
287
|
before do
|
308
|
-
stub_post("users/4/relationship.#{format}")
|
309
|
-
with(:
|
310
|
-
to_return(:
|
288
|
+
stub_post("users/4/relationship.#{format}")
|
289
|
+
.with(body: { action: "follow", access_token: @client.access_token })
|
290
|
+
.to_return(body: fixture("follow_user.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
311
291
|
end
|
312
|
-
|
292
|
+
|
313
293
|
it "should get the correct resource" do
|
314
294
|
@client.follow_user(4)
|
315
|
-
expect(a_post("users/4/relationship.#{format}")
|
316
|
-
with(:
|
317
|
-
to have_been_made
|
295
|
+
expect(a_post("users/4/relationship.#{format}")
|
296
|
+
.with(body: { action: "follow", access_token: @client.access_token }))
|
297
|
+
.to have_been_made
|
318
298
|
end
|
319
|
-
|
299
|
+
|
320
300
|
it "should return a relationship status response" do
|
321
301
|
status = @client.follow_user(4)
|
322
302
|
expect(status.outgoing_status).to eq("requested")
|
323
303
|
end
|
324
304
|
end
|
325
|
-
|
305
|
+
|
326
306
|
describe ".unfollow_user" do
|
327
|
-
|
328
307
|
before do
|
329
|
-
stub_post("users/4/relationship.#{format}")
|
330
|
-
with(:
|
331
|
-
to_return(:
|
308
|
+
stub_post("users/4/relationship.#{format}")
|
309
|
+
.with(body: { action: "unfollow", access_token: @client.access_token })
|
310
|
+
.to_return(body: fixture("unfollow_user.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
332
311
|
end
|
333
|
-
|
312
|
+
|
334
313
|
it "should get the correct resource" do
|
335
314
|
@client.unfollow_user(4)
|
336
|
-
expect(a_post("users/4/relationship.#{format}")
|
337
|
-
with(:
|
338
|
-
to have_been_made
|
315
|
+
expect(a_post("users/4/relationship.#{format}")
|
316
|
+
.with(body: { action: "unfollow", access_token: @client.access_token }))
|
317
|
+
.to have_been_made
|
339
318
|
end
|
340
|
-
|
319
|
+
|
341
320
|
it "should return a relationship status response" do
|
342
321
|
status = @client.unfollow_user(4)
|
343
322
|
expect(status.outgoing_status).to eq("none")
|
344
323
|
end
|
345
324
|
end
|
346
|
-
|
325
|
+
|
347
326
|
describe ".block_user" do
|
348
|
-
|
349
327
|
before do
|
350
|
-
stub_post("users/4/relationship.#{format}")
|
351
|
-
with(:
|
352
|
-
to_return(:
|
328
|
+
stub_post("users/4/relationship.#{format}")
|
329
|
+
.with(body: { action: "block", access_token: @client.access_token })
|
330
|
+
.to_return(body: fixture("block_user.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
353
331
|
end
|
354
|
-
|
332
|
+
|
355
333
|
it "should get the correct resource" do
|
356
334
|
@client.block_user(4)
|
357
|
-
expect(a_post("users/4/relationship.#{format}")
|
358
|
-
with(:
|
359
|
-
to have_been_made
|
335
|
+
expect(a_post("users/4/relationship.#{format}")
|
336
|
+
.with(body: { action: "block", access_token: @client.access_token }))
|
337
|
+
.to have_been_made
|
360
338
|
end
|
361
|
-
|
339
|
+
|
362
340
|
it "should return a relationship status response" do
|
363
341
|
status = @client.block_user(4)
|
364
342
|
expect(status.outgoing_status).to eq("none")
|
365
343
|
end
|
366
344
|
end
|
367
|
-
|
345
|
+
|
368
346
|
describe ".unblock_user" do
|
369
|
-
|
370
347
|
before do
|
371
|
-
stub_post("users/4/relationship.#{format}")
|
372
|
-
with(:
|
373
|
-
to_return(:
|
348
|
+
stub_post("users/4/relationship.#{format}")
|
349
|
+
.with(body: { action: "unblock", access_token: @client.access_token })
|
350
|
+
.to_return(body: fixture("unblock_user.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
374
351
|
end
|
375
|
-
|
352
|
+
|
376
353
|
it "should get the correct resource" do
|
377
354
|
@client.unblock_user(4)
|
378
|
-
expect(a_post("users/4/relationship.#{format}")
|
379
|
-
with(:
|
380
|
-
to have_been_made
|
355
|
+
expect(a_post("users/4/relationship.#{format}")
|
356
|
+
.with(body: { action: "unblock", access_token: @client.access_token }))
|
357
|
+
.to have_been_made
|
381
358
|
end
|
382
|
-
|
359
|
+
|
383
360
|
it "should return a relationship status response" do
|
384
361
|
status = @client.unblock_user(4)
|
385
362
|
expect(status.outgoing_status).to eq("none")
|
386
363
|
end
|
387
364
|
end
|
388
|
-
|
365
|
+
|
389
366
|
describe ".approve_user" do
|
390
|
-
|
391
367
|
before do
|
392
|
-
stub_post("users/4/relationship.#{format}")
|
393
|
-
with(:
|
394
|
-
to_return(:
|
368
|
+
stub_post("users/4/relationship.#{format}")
|
369
|
+
.with(body: { action: "approve", access_token: @client.access_token })
|
370
|
+
.to_return(body: fixture("approve_user.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
395
371
|
end
|
396
|
-
|
372
|
+
|
397
373
|
it "should get the correct resource" do
|
398
374
|
@client.approve_user(4)
|
399
|
-
expect(a_post("users/4/relationship.#{format}")
|
400
|
-
with(:
|
401
|
-
to have_been_made
|
375
|
+
expect(a_post("users/4/relationship.#{format}")
|
376
|
+
.with(body: { action: "approve", access_token: @client.access_token }))
|
377
|
+
.to have_been_made
|
402
378
|
end
|
403
|
-
|
379
|
+
|
404
380
|
it "should return a relationship status response" do
|
405
381
|
status = @client.approve_user(4)
|
406
382
|
expect(status.outgoing_status).to eq("follows")
|
407
383
|
end
|
408
384
|
end
|
409
|
-
|
385
|
+
|
410
386
|
describe ".deny_user" do
|
411
|
-
|
412
387
|
before do
|
413
|
-
stub_post("users/4/relationship.#{format}")
|
414
|
-
with(:
|
415
|
-
to_return(:
|
388
|
+
stub_post("users/4/relationship.#{format}")
|
389
|
+
.with(body: { action: "deny", access_token: @client.access_token })
|
390
|
+
.to_return(body: fixture("deny_user.#{format}"), headers: { content_type: "application/#{format}; charset=utf-8" })
|
416
391
|
end
|
417
|
-
|
392
|
+
|
418
393
|
it "should get the correct resource" do
|
419
394
|
@client.deny_user(4)
|
420
|
-
expect(a_post("users/4/relationship.#{format}")
|
421
|
-
with(:
|
422
|
-
to have_been_made
|
395
|
+
expect(a_post("users/4/relationship.#{format}")
|
396
|
+
.with(body: { action: "deny", access_token: @client.access_token }))
|
397
|
+
.to have_been_made
|
423
398
|
end
|
424
|
-
|
399
|
+
|
425
400
|
it "should return a relationship status response" do
|
426
401
|
status = @client.deny_user(4)
|
427
402
|
expect(status.outgoing_status).to eq("none")
|