ruby-oembed 0.14.1 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/CHANGELOG.rdoc +13 -1
- data/lib/oembed.rb +1 -0
- data/lib/oembed/provider.rb +54 -5
- data/lib/oembed/providers.rb +39 -300
- data/lib/oembed/providers/aggregators/embedly_urls.yml +167 -6
- data/lib/oembed/providers/builtin_providers.rb +292 -0
- data/lib/oembed/providers/facebook_post.rb +27 -17
- data/lib/oembed/providers/facebook_video.rb +22 -10
- data/lib/oembed/providers/instagram.rb +37 -20
- data/lib/oembed/providers/tik_tok.rb +11 -0
- data/lib/oembed/version.rb +2 -2
- data/spec/cassettes/OEmbed_Provider.yml +117 -16
- data/spec/cassettes/OEmbed_Providers_CodePen.yml +177 -0
- data/spec/cassettes/OEmbed_Providers_FacebookPost.yml +539 -0
- data/spec/cassettes/OEmbed_Providers_FacebookVideo.yml +267 -0
- data/spec/cassettes/OEmbed_Providers_Instagram.yml +1473 -0
- data/spec/cassettes/OEmbed_Providers_Slideshare.yml +420 -834
- data/spec/cassettes/OEmbed_Providers_TikTok.yml +293 -0
- data/spec/cassettes/OEmbed_Providers_Twitter.yml +84 -357
- data/spec/cassettes/OEmbed_Providers_Youtube.yml +188 -26
- data/spec/provider_spec.rb +315 -138
- data/spec/providers/code_pen_spec.rb +21 -0
- data/spec/providers/facebook_post_spec.rb +54 -0
- data/spec/providers/facebook_video_spec.rb +48 -0
- data/spec/providers/instagram_spec.rb +48 -0
- data/spec/providers/slideshare_spec.rb +2 -9
- data/spec/providers/tik_tok_spec.rb +26 -0
- data/spec/providers/twitter_spec.rb +3 -10
- data/spec/providers/youtube_spec.rb +3 -9
- data/spec/providers_spec.rb +151 -16
- data/spec/response_spec.rb +2 -2
- data/spec/spec_helper.rb +19 -1
- data/spec/support/shared_examples_for_providers.rb +32 -20
- metadata +25 -5
- data/spec/providers/facebook_spec.rb +0 -50
@@ -0,0 +1,21 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
+
|
3
|
+
describe 'OEmbed::Providers::CodePen' do
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_CodePen')
|
5
|
+
include OEmbedSpecHelper
|
6
|
+
|
7
|
+
let(:provider) { OEmbed::Providers::CodePen }
|
8
|
+
|
9
|
+
expected_valid_urls = %w(
|
10
|
+
https://codepen.io/maximakymenko/pen/mdbpeXm
|
11
|
+
)
|
12
|
+
expected_invalid_urls = %w(
|
13
|
+
https://codepen.com/maximakymenko/pen/mdbpeXm
|
14
|
+
)
|
15
|
+
|
16
|
+
it_should_behave_like(
|
17
|
+
"an OEmbed::Providers instance",
|
18
|
+
expected_valid_urls,
|
19
|
+
expected_invalid_urls
|
20
|
+
)
|
21
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
+
|
3
|
+
describe 'OEmbed::Providers::FacebookPost' do
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_FacebookPost')
|
5
|
+
include OEmbedSpecHelper
|
6
|
+
|
7
|
+
let(:provider) { OEmbed::Providers::FacebookPost }
|
8
|
+
|
9
|
+
expected_valid_urls = [
|
10
|
+
# A public "post" by a "page"
|
11
|
+
'https://www.facebook.com/rubyonrailstogo/posts/3610333842332884',
|
12
|
+
# A public "note"
|
13
|
+
'https://www.facebook.com/notes/facebook-app/welcome-to-the-facebook-blog/2207517130/',
|
14
|
+
# A specific photo
|
15
|
+
'https://www.facebook.com/tumocenter/photos/bc.AbpR7-R7Lu6GodUph_UNg1Ttn-k7Ni-M8X89Io4cWsYkK0OPde6MTVKHSiTNDEanWYkwQGyu-YwpNnS4MXUqeYen_ovuiBPQixaA-tjNBcVUFAMWPaxX-NU1mm2ovExEORQOdohcH339Xmxch3kbSPcJ/1084373708267461/',
|
16
|
+
# A photo in slideshow view
|
17
|
+
'https://www.facebook.com/photo/?fbid=3348617585198325&set=gm.1675022489341591',
|
18
|
+
]
|
19
|
+
expected_invalid_urls = %w(
|
20
|
+
https://www.instagram.com/p/B9bOM-6Ax_d/?igshid=1mn51zsvrhoiq
|
21
|
+
https://www.facebook.com/381763475170840/videos/474308113397163/
|
22
|
+
https://www.facebook.com/groups/rordevelopers/permalink/1675022489341591/
|
23
|
+
https://www.facebook.com/business/news/tips-small-business-digital-tools-in-crisis-and-recovery-report-deloitte/
|
24
|
+
)
|
25
|
+
|
26
|
+
describe 'behaving like an OEmbed::Provider instance' do
|
27
|
+
it_should_behave_like(
|
28
|
+
"an OEmbed::Providers instance",
|
29
|
+
expected_valid_urls,
|
30
|
+
expected_invalid_urls
|
31
|
+
)
|
32
|
+
end
|
33
|
+
|
34
|
+
describe 'DEPRECATED: behaves like a custom OEmbed::Provider class for v0.14.0 backwards compatibility' do
|
35
|
+
around(:each) { |example|
|
36
|
+
# Always restore the provider's access_token to its previous value
|
37
|
+
# so that if the OEMBED_FACEBOOK_TOKEN env var is set, it's used correctly.
|
38
|
+
orig_access_token = provider.access_token
|
39
|
+
example.run
|
40
|
+
provider.access_token = orig_access_token
|
41
|
+
}
|
42
|
+
let(:access_token) { 'A_FAKE_TOKEN_FOR_TESTS' }
|
43
|
+
let(:provider_instance) { provider.new(access_token: access_token) }
|
44
|
+
let(:embed_url) { expected_valid_urls.first }
|
45
|
+
|
46
|
+
it 'sets the access_token' do
|
47
|
+
expect(provider_instance.access_token).to eq(access_token)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'recognizes embed URLs' do
|
51
|
+
expect(provider_instance).to include(embed_url)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
+
|
3
|
+
describe 'OEmbed::Providers::FacebookVideo' do
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_FacebookVideo')
|
5
|
+
include OEmbedSpecHelper
|
6
|
+
|
7
|
+
let(:provider) { OEmbed::Providers::FacebookVideo }
|
8
|
+
|
9
|
+
expected_valid_urls = %w(
|
10
|
+
https://www.facebook.com/381763475170840/videos/474308113397163/
|
11
|
+
https://www.facebook.com/osherove/videos/10157895173751223/
|
12
|
+
)
|
13
|
+
expected_invalid_urls = %w(
|
14
|
+
https://www.instagram.com/p/B9bOM-6Ax_d/?igshid=1mn51zsvrhoiq
|
15
|
+
https://www.facebook.com/rubyonrailstogo/posts/3610333842332884
|
16
|
+
https://www.facebook.com/groups/rordevelopers/permalink/1675022489341591/
|
17
|
+
https://www.facebook.com/business/news/tips-small-business-digital-tools-in-crisis-and-recovery-report-deloitte/
|
18
|
+
)
|
19
|
+
|
20
|
+
describe 'behaving like an OEmbed::Provider instance' do
|
21
|
+
it_should_behave_like(
|
22
|
+
"an OEmbed::Providers instance",
|
23
|
+
expected_valid_urls,
|
24
|
+
expected_invalid_urls
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'DEPRECATED: behaves like a custom OEmbed::Provider class for v0.14.0 backwards compatibility' do
|
29
|
+
around(:each) { |example|
|
30
|
+
# Always restore the provider's access_token to its previous value
|
31
|
+
# so that if the OEMBED_FACEBOOK_TOKEN env var is set, it's used correctly.
|
32
|
+
orig_access_token = provider.access_token
|
33
|
+
example.run
|
34
|
+
provider.access_token = orig_access_token
|
35
|
+
}
|
36
|
+
let(:access_token) { 'A_FAKE_TOKEN_FOR_TESTS' }
|
37
|
+
let(:provider_instance) { provider.new(access_token: access_token) }
|
38
|
+
let(:embed_url) { expected_valid_urls.first }
|
39
|
+
|
40
|
+
it 'sets the access_token' do
|
41
|
+
expect(provider_instance.access_token).to eq(access_token)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'recognizes embed URLs' do
|
45
|
+
expect(provider_instance).to include(embed_url)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
+
|
3
|
+
describe 'OEmbed::Providers::Instagram' do
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_Instagram')
|
5
|
+
include OEmbedSpecHelper
|
6
|
+
|
7
|
+
let(:provider) { OEmbed::Providers::Instagram }
|
8
|
+
|
9
|
+
expected_valid_urls = %w(
|
10
|
+
https://www.instagram.com/p/B9bOM-6Ax_d/?igshid=1mn51zsvrhoiq
|
11
|
+
https://instagram.com/p/B9bOM-6Ax_d/?igshid=1mn51zsvrhoiq
|
12
|
+
http://instagr.am/p/B9bOM-6Ax_d/?igshid=1mn51zsvrhoiq
|
13
|
+
https://www.instagram.com/tv/CCX-gcHArcJ/?igshid=1i0rst4jaz0j
|
14
|
+
https://www.instagram.com/reel/CIyNZQhH4DQ/?igshid=40rns9jda1ow
|
15
|
+
)
|
16
|
+
expected_invalid_urls = %w(
|
17
|
+
https://www.instagram.com/u/CCX-gcHArcJ/?igshid=1i0rst4jaz0j
|
18
|
+
)
|
19
|
+
|
20
|
+
describe 'behaving like an OEmbed::Provider instance' do
|
21
|
+
it_should_behave_like(
|
22
|
+
"an OEmbed::Providers instance",
|
23
|
+
expected_valid_urls,
|
24
|
+
expected_invalid_urls
|
25
|
+
)
|
26
|
+
end
|
27
|
+
|
28
|
+
describe 'DEPRECATED: behaves like a custom OEmbed::Provider class for v0.14.0 backwards compatibility' do
|
29
|
+
around(:each) { |example|
|
30
|
+
# Always restore the provider's access_token to its previous value
|
31
|
+
# so that if the OEMBED_FACEBOOK_TOKEN env var is set, it's used correctly.
|
32
|
+
orig_access_token = provider.access_token
|
33
|
+
example.run
|
34
|
+
provider.access_token = orig_access_token
|
35
|
+
}
|
36
|
+
let(:access_token) { 'A_FAKE_TOKEN_FOR_TESTS' }
|
37
|
+
let(:provider_instance) { provider.new(access_token: access_token) }
|
38
|
+
let(:embed_url) { expected_valid_urls.first }
|
39
|
+
|
40
|
+
it 'sets the access_token' do
|
41
|
+
expect(provider_instance.access_token).to eq(access_token)
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'recognizes embed URLs' do
|
45
|
+
expect(provider_instance).to include(embed_url)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -1,17 +1,10 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
-
require 'support/shared_examples_for_providers'
|
3
2
|
|
4
3
|
describe 'OEmbed::Providers::Slideshare' do
|
5
|
-
|
6
|
-
VCR.insert_cassette('OEmbed_Providers_Slideshare')
|
7
|
-
end
|
8
|
-
after(:all) do
|
9
|
-
VCR.eject_cassette
|
10
|
-
end
|
11
|
-
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_Slideshare')
|
12
5
|
include OEmbedSpecHelper
|
13
6
|
|
14
|
-
let(:
|
7
|
+
let(:provider) { OEmbed::Providers::Slideshare }
|
15
8
|
|
16
9
|
expected_valid_urls = (
|
17
10
|
%w(https:// http://).map do |protocol|
|
@@ -0,0 +1,26 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
+
|
3
|
+
describe 'OEmbed::Providers::TikTok' do
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_TikTok')
|
5
|
+
include OEmbedSpecHelper
|
6
|
+
|
7
|
+
let(:provider) { OEmbed::Providers::TikTok }
|
8
|
+
|
9
|
+
expected_valid_urls = [
|
10
|
+
# Specific videos
|
11
|
+
'https://www.tiktok.com/@sowylie/video/6903556111169899781',
|
12
|
+
'https://www.tiktok.com/@cassidoo/video/6841722789502749957',
|
13
|
+
]
|
14
|
+
expected_invalid_urls = [
|
15
|
+
# An author's page
|
16
|
+
'https://www.tiktok.com/@sowylie',
|
17
|
+
# The safety page/docs
|
18
|
+
'https://www.tiktok.com/safety?lang=en',
|
19
|
+
]
|
20
|
+
|
21
|
+
it_should_behave_like(
|
22
|
+
"an OEmbed::Providers instance",
|
23
|
+
expected_valid_urls,
|
24
|
+
expected_invalid_urls
|
25
|
+
)
|
26
|
+
end
|
@@ -1,17 +1,10 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
|
-
require 'support/shared_examples_for_providers'
|
3
2
|
|
4
3
|
describe 'OEmbed::Providers::Twitter' do
|
5
|
-
|
6
|
-
VCR.insert_cassette('OEmbed_Providers_Twitter')
|
7
|
-
end
|
8
|
-
after(:all) do
|
9
|
-
VCR.eject_cassette
|
10
|
-
end
|
11
|
-
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_Twitter')
|
12
5
|
include OEmbedSpecHelper
|
13
6
|
|
14
|
-
let(:
|
7
|
+
let(:provider) { OEmbed::Providers::Twitter }
|
15
8
|
|
16
9
|
expected_valid_urls = %w(
|
17
10
|
https://twitter.com/RailsGirlsSoC/status/702136612822634496
|
@@ -34,7 +27,7 @@ describe 'OEmbed::Providers::Twitter' do
|
|
34
27
|
describe ".get" do
|
35
28
|
it "should encounter a 400 error" do
|
36
29
|
expect {
|
37
|
-
|
30
|
+
provider.get(valid_url, format: :xml)
|
38
31
|
}.to raise_error(OEmbed::UnknownResponse, /\b400\b/)
|
39
32
|
end
|
40
33
|
end
|
@@ -1,16 +1,10 @@
|
|
1
1
|
require File.join(File.dirname(__FILE__), '../spec_helper')
|
2
2
|
|
3
3
|
describe 'OEmbed::Providers::Youtube' do
|
4
|
-
|
5
|
-
VCR.insert_cassette('OEmbed_Providers_Youtube')
|
6
|
-
end
|
7
|
-
after(:all) do
|
8
|
-
VCR.eject_cassette
|
9
|
-
end
|
10
|
-
|
4
|
+
use_custom_vcr_casette('OEmbed_Providers_Youtube')
|
11
5
|
include OEmbedSpecHelper
|
12
6
|
|
13
|
-
let(:
|
7
|
+
let(:provider) { OEmbed::Providers::Youtube }
|
14
8
|
|
15
9
|
expected_valid_urls = %w(
|
16
10
|
https://www.youtube.com/watch?v=pO5L6vXtxsI
|
@@ -34,7 +28,7 @@ describe 'OEmbed::Providers::Youtube' do
|
|
34
28
|
|
35
29
|
it "should throw an UnknownResponse error" do
|
36
30
|
expect {
|
37
|
-
|
31
|
+
provider.get(invalid_url)
|
38
32
|
}.to raise_error(OEmbed::UnknownResponse, /403/)
|
39
33
|
end
|
40
34
|
end
|
data/spec/providers_spec.rb
CHANGED
@@ -17,7 +17,7 @@ describe OEmbed::Providers do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
describe ".register" do
|
20
|
-
it "should register providers" do
|
20
|
+
it "should register multiple providers at once" do
|
21
21
|
expect(OEmbed::Providers.urls).to be_empty
|
22
22
|
|
23
23
|
OEmbed::Providers.register(@flickr, @qik)
|
@@ -35,11 +35,20 @@ describe OEmbed::Providers do
|
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
it "should
|
39
|
-
OEmbed::Providers.
|
38
|
+
it "should register providers with missing required_query_params" do
|
39
|
+
expect(OEmbed::Providers.urls).to be_empty
|
40
40
|
|
41
|
-
|
42
|
-
|
41
|
+
provider = OEmbed::Provider.new("http://foo.com/oembed", required_query_params: { send_with_query: nil })
|
42
|
+
provider << 'http://media.foo.com/*'
|
43
|
+
|
44
|
+
OEmbed::Providers.register(provider)
|
45
|
+
|
46
|
+
expect(OEmbed::Providers.urls.keys).to eq(provider.urls)
|
47
|
+
|
48
|
+
provider.urls.each do |regexp|
|
49
|
+
expect(OEmbed::Providers.urls).to have_key(regexp)
|
50
|
+
expect(OEmbed::Providers.urls[regexp]).to include(provider)
|
51
|
+
end
|
43
52
|
end
|
44
53
|
end
|
45
54
|
|
@@ -122,6 +131,134 @@ describe OEmbed::Providers do
|
|
122
131
|
# and_return(valid_response(:object))
|
123
132
|
#end
|
124
133
|
|
134
|
+
describe "#find" do
|
135
|
+
let(:url_scheme) { 'http://media.foo.com/*' }
|
136
|
+
let(:providerA) {
|
137
|
+
p = OEmbed::Provider.new("http://a.foo.com/oembed")
|
138
|
+
p << url_scheme
|
139
|
+
p
|
140
|
+
}
|
141
|
+
let(:providerB) {
|
142
|
+
p = OEmbed::Provider.new("http://b.foo.com/oembed")
|
143
|
+
p << url_scheme
|
144
|
+
p
|
145
|
+
}
|
146
|
+
|
147
|
+
let(:url_to_find) { 'http://media.foo.com/which-one?' }
|
148
|
+
subject { OEmbed::Providers.find(url_to_find) }
|
149
|
+
|
150
|
+
context "when there registered providers are distinct" do
|
151
|
+
before { OEmbed::Providers.register(@flickr, @qik, providerA) }
|
152
|
+
|
153
|
+
it "should find providerA" do
|
154
|
+
should eq(providerA)
|
155
|
+
end
|
156
|
+
|
157
|
+
it "should find by any of the registered providers by URL" do
|
158
|
+
expect(OEmbed::Providers.find(example_url(:flickr))).to eq(@flickr)
|
159
|
+
expect(OEmbed::Providers.find(example_url(:qik))).to eq(@qik)
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context "when the registered provider has missing required_query_params" do
|
164
|
+
let(:providerA) {
|
165
|
+
p = OEmbed::Provider.new("http://a.foo.com/oembed", required_query_params: { send_with_query: false })
|
166
|
+
p << url_scheme
|
167
|
+
p
|
168
|
+
}
|
169
|
+
before { OEmbed::Providers.register(providerA) }
|
170
|
+
|
171
|
+
it "should NOT find the provider" do
|
172
|
+
should be_nil
|
173
|
+
end
|
174
|
+
|
175
|
+
context "but then later has the required_query_param set" do
|
176
|
+
it "should find providerA" do
|
177
|
+
providerA.send_with_query = 'a non-blank val'
|
178
|
+
|
179
|
+
should eq(providerA)
|
180
|
+
end
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context "when multiple providers match the same URL" do
|
185
|
+
it "should find one match" do
|
186
|
+
OEmbed::Providers.register(providerA, providerB)
|
187
|
+
|
188
|
+
should eq(providerA).or eq(providerB)
|
189
|
+
end
|
190
|
+
|
191
|
+
context "when providerA has missing required_query_params" do
|
192
|
+
let(:providerA) {
|
193
|
+
p = OEmbed::Provider.new("http://a.foo.com/oembed", required_query_params: { send_with_query: false })
|
194
|
+
p << url_scheme
|
195
|
+
p
|
196
|
+
}
|
197
|
+
|
198
|
+
it "should find the provider with satisfied required_query_params" do
|
199
|
+
OEmbed::Providers.register(providerA, providerB)
|
200
|
+
|
201
|
+
should eq(providerB)
|
202
|
+
end
|
203
|
+
|
204
|
+
it "should find the provider with satisfied required_query_params, regardless of register order" do
|
205
|
+
OEmbed::Providers.register(providerB, providerA)
|
206
|
+
|
207
|
+
should eq(providerB)
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
context "when providerA has satisfied required_query_params" do
|
212
|
+
let(:providerA) {
|
213
|
+
p = OEmbed::Provider.new("http://a.foo.com/oembed", required_query_params: { send_with_query: false })
|
214
|
+
p.send_with_query = 'a non-blank value'
|
215
|
+
p << url_scheme
|
216
|
+
p
|
217
|
+
}
|
218
|
+
|
219
|
+
it "should find one match" do
|
220
|
+
OEmbed::Providers.register(providerA, providerB)
|
221
|
+
|
222
|
+
should eq(providerA).or eq(providerB)
|
223
|
+
end
|
224
|
+
|
225
|
+
it "should find one match, regardless of register order" do
|
226
|
+
OEmbed::Providers.register(providerB, providerA)
|
227
|
+
|
228
|
+
should eq(providerA).or eq(providerB)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
|
232
|
+
context "but with slightly different URL schemes" do
|
233
|
+
let(:url_to_find) { 'http://media.foo.com/video/which-one?' }
|
234
|
+
let(:broad_url_scheme) { 'http://media.foo.com/*' }
|
235
|
+
let(:specific_url_scheme) { 'http://media.foo.com/video/*' }
|
236
|
+
let(:providerA) {
|
237
|
+
p = OEmbed::Provider.new("http://a.foo.com/oembed")
|
238
|
+
p << broad_url_scheme
|
239
|
+
p
|
240
|
+
}
|
241
|
+
let(:providerB) {
|
242
|
+
p = OEmbed::Provider.new("http://a.foo.com/oembed")
|
243
|
+
p << specific_url_scheme
|
244
|
+
p
|
245
|
+
}
|
246
|
+
|
247
|
+
it "should find one match" do
|
248
|
+
OEmbed::Providers.register(providerA, providerB)
|
249
|
+
|
250
|
+
should eq(providerA).or eq(providerB)
|
251
|
+
end
|
252
|
+
|
253
|
+
it "should find one match, regardless of register order" do
|
254
|
+
OEmbed::Providers.register(providerB, providerA)
|
255
|
+
|
256
|
+
should eq(providerA).or eq(providerB)
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
125
262
|
describe "#raw and #get" do
|
126
263
|
it "should bridge #get and #raw to the right provider" do
|
127
264
|
OEmbed::Providers.register_all
|
@@ -213,13 +350,16 @@ describe OEmbed::Providers do
|
|
213
350
|
describe 'register_access_token_providers' do
|
214
351
|
describe 'tokens[:facebook]' do
|
215
352
|
let(:access_token) { 'my-fake-access-token' }
|
353
|
+
let(:provider) { OEmbed::Providers::FacebookPost }
|
216
354
|
let(:embed_url) { 'https://www.facebook.com/exampleuser/posts/1234567890' }
|
217
355
|
|
218
356
|
around(:each) do |each|
|
219
357
|
previous_value = ENV['OEMBED_FACEBOOK_TOKEN']
|
220
358
|
ENV['OEMBED_FACEBOOK_TOKEN'] = nil
|
359
|
+
provider.access_token = nil
|
221
360
|
each.run
|
222
361
|
ENV['OEMBED_FACEBOOK_TOKEN'] = previous_value
|
362
|
+
provider.access_token = previous_value
|
223
363
|
OEmbed::Providers.unregister_all
|
224
364
|
end
|
225
365
|
|
@@ -230,7 +370,8 @@ describe OEmbed::Providers do
|
|
230
370
|
OEmbed::Providers.register_all
|
231
371
|
end
|
232
372
|
|
233
|
-
it { is_expected.to_not
|
373
|
+
it { is_expected.to_not eql(provider) }
|
374
|
+
it { is_expected.to eq(nil) }
|
234
375
|
end
|
235
376
|
|
236
377
|
context 'when access token is provided to register_all' do
|
@@ -238,22 +379,16 @@ describe OEmbed::Providers do
|
|
238
379
|
OEmbed::Providers.register_all(access_tokens: { facebook: access_token })
|
239
380
|
end
|
240
381
|
|
241
|
-
it { is_expected.to
|
382
|
+
it { is_expected.to eql(provider) }
|
242
383
|
end
|
243
384
|
|
244
|
-
context 'when access token is set
|
385
|
+
context 'when access token is set ahead of time' do
|
245
386
|
before do
|
246
|
-
|
387
|
+
provider.access_token = access_token
|
247
388
|
OEmbed::Providers.register_all
|
248
389
|
end
|
249
390
|
|
250
|
-
it { is_expected.to
|
251
|
-
end
|
252
|
-
|
253
|
-
context 'without access token' do
|
254
|
-
before { OEmbed::Providers.register_all }
|
255
|
-
|
256
|
-
it { is_expected.to eq(nil) }
|
391
|
+
it { is_expected.to eql(provider) }
|
257
392
|
end
|
258
393
|
end
|
259
394
|
end
|