onebox 1.5.21 → 1.5.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (34) hide show
  1. checksums.yaml +4 -4
  2. data/lib/onebox/engine.rb +18 -2
  3. data/lib/onebox/engine/amazon_onebox.rb +12 -6
  4. data/lib/onebox/engine/audio_onebox.rb +4 -0
  5. data/lib/onebox/engine/github_blob_onebox.rb +1 -1
  6. data/lib/onebox/engine/github_commit_onebox.rb +4 -2
  7. data/lib/onebox/engine/github_gist_onebox.rb +1 -0
  8. data/lib/onebox/engine/github_issue_onebox.rb +5 -3
  9. data/lib/onebox/engine/github_pullrequest_onebox.rb +4 -2
  10. data/lib/onebox/engine/google_calendar_onebox.rb +1 -0
  11. data/lib/onebox/engine/google_docs_onebox.rb +1 -0
  12. data/lib/onebox/engine/google_maps_onebox.rb +5 -3
  13. data/lib/onebox/engine/google_play_app_onebox.rb +2 -1
  14. data/lib/onebox/engine/image_onebox.rb +4 -0
  15. data/lib/onebox/engine/pubmed_onebox.rb +1 -1
  16. data/lib/onebox/engine/soundcloud_onebox.rb +2 -1
  17. data/lib/onebox/engine/stack_exchange_onebox.rb +6 -2
  18. data/lib/onebox/engine/standard_embed.rb +6 -1
  19. data/lib/onebox/engine/twitter_status_onebox.rb +2 -1
  20. data/lib/onebox/engine/video_onebox.rb +4 -0
  21. data/lib/onebox/engine/whitelisted_generic_onebox.rb +6 -7
  22. data/lib/onebox/engine/wikipedia_onebox.rb +1 -0
  23. data/lib/onebox/engine/youtube_onebox.rb +2 -6
  24. data/lib/onebox/version.rb +1 -1
  25. data/spec/fixtures/amazon.response +2845 -1268
  26. data/spec/lib/onebox/engine/amazon_onebox_spec.rb +10 -2
  27. data/spec/lib/onebox/engine/stack_exchange_onebox_spec.rb +1 -1
  28. data/spec/lib/onebox/engine/whitelisted_generic_onebox_spec.rb +3 -3
  29. data/spec/lib/onebox/engine/wikipedia_onebox_spec.rb +1 -0
  30. data/spec/lib/onebox/engine/youtube_onebox_spec.rb +4 -2
  31. data/spec/lib/onebox/engine_spec.rb +22 -2
  32. data/spec/lib/onebox/preview_spec.rb +1 -1
  33. data/templates/amazon.mustache +1 -1
  34. metadata +3 -3
@@ -62,11 +62,19 @@ describe Onebox::Engine::AmazonOnebox do
62
62
 
63
63
  describe "#to_html" do
64
64
  it "includes image" do
65
- expect(html).to include("img")
65
+ expect(html).to include("http://ecx.images-amazon.com/images/I/51opYcR6kVL._SY400_.jpg")
66
66
  end
67
67
 
68
68
  it "includes description" do
69
- expect(html).to include("Using only the finest natural materials and ecologically sound")
69
+ expect(html).to include("I have been programming for 25 years in a variety of hardware and software languages.")
70
+ end
71
+
72
+ it "includes price" do
73
+ expect(html).to include("$25.34")
74
+ end
75
+
76
+ it "includes title" do
77
+ expect(html).to include("Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)")
70
78
  end
71
79
 
72
80
  end
@@ -3,7 +3,7 @@ require "spec_helper"
3
3
  describe Onebox::Engine::StackExchangeOnebox do
4
4
  before(:all) do
5
5
  @link = "http://stackoverflow.com/questions/17992553/concept-behind-these-four-lines-of-tricky-c-code"
6
- fake("http://api.stackexchange.com/2.1/questions/17992553?site=stackoverflow.com", response(described_class.onebox_name))
6
+ fake("https://api.stackexchange.com/2.1/questions/17992553?site=stackoverflow.com", response(described_class.onebox_name))
7
7
  end
8
8
 
9
9
  include_context "engines"
@@ -50,18 +50,18 @@ describe Onebox::Engine::WhitelistedGenericOnebox do
50
50
  describe 'rewrites' do
51
51
  class DummyOnebox < Onebox::Engine::WhitelistedGenericOnebox
52
52
  def generic_html
53
- "<iframe src='https://youtube.com/asdf'></iframe>"
53
+ "<iframe src='http://youtube.com/asdf'></iframe>"
54
54
  end
55
55
  end
56
56
 
57
57
  it "doesn't rewrite URLs that arent in the list" do
58
58
  Onebox::Engine::WhitelistedGenericOnebox.rewrites = []
59
- expect(DummyOnebox.new("http://youtube.com").to_html).to eq "<iframe src='https://youtube.com/asdf'></iframe>"
59
+ expect(DummyOnebox.new("http://youtube.com").to_html).to eq "<iframe src='http://youtube.com/asdf'></iframe>"
60
60
  end
61
61
 
62
62
  it "rewrites URLs when whitelisted" do
63
63
  Onebox::Engine::WhitelistedGenericOnebox.rewrites = %w(youtube.com)
64
- expect(DummyOnebox.new("http://youtube.com").to_html).to eq "<iframe src='//youtube.com/asdf'></iframe>"
64
+ expect(DummyOnebox.new("http://youtube.com").to_html).to eq "<iframe src='https://youtube.com/asdf'></iframe>"
65
65
  end
66
66
  end
67
67
 
@@ -3,6 +3,7 @@ require "spec_helper"
3
3
  describe Onebox::Engine::WikipediaOnebox do
4
4
  before(:all) do
5
5
  @link = "http://en.wikipedia.org/wiki/Billy_Jack"
6
+ fake("https://en.wikipedia.org/wiki/Billy_Jack", response(described_class.onebox_name))
6
7
  end
7
8
 
8
9
  include_context "engines"
@@ -2,8 +2,9 @@ require 'spec_helper'
2
2
 
3
3
  describe Onebox::Engine::YoutubeOnebox do
4
4
  before do
5
- fake("http://www.youtube.com/watch?feature=player_embedded&v=21Lk4YiASMo", response("youtube"))
5
+ fake("https://www.youtube.com/watch?feature=player_embedded&v=21Lk4YiASMo", response("youtube"))
6
6
  fake("https://www.youtube.com/channel/UCL8ZULXASCc1I_oaOT0NaOQ", response("youtube-channel"))
7
+ fake("https://www.youtube.com/playlist?list=PL5308B2E5749D1696", response("youtube-playlist"))
7
8
  end
8
9
 
9
10
  it "adds wmode=opaque" do
@@ -31,7 +32,8 @@ describe Onebox::Engine::YoutubeOnebox do
31
32
  it "can onebox a playlist" do
32
33
  pending('no opengraph on playlists, needs special handling')
33
34
 
34
- Onebox.preview('https://www.youtube.com/playlist?list=PL5308B2E5749D1696').to_s
35
+ expect(Onebox.preview('https://www.youtube.com/playlist?list=PL5308B2E5749D1696')
36
+ .to_s).to match(/Dear Sophie/)
35
37
  end
36
38
 
37
39
  it "does not make HTTP requests unless necessary" do
@@ -21,8 +21,14 @@ describe Onebox::Engine do
21
21
  before { allow(Onebox::View).to receive(:template) { %|this shold be a template| } }
22
22
 
23
23
  it "escapes `link`" do
24
- html = OneboxEngineExample.new(%|http://foo.com" onscript="alert('foo')|).to_html
25
- expect(html).not_to include(%|onscript="alert('foo')|)
24
+ html = OneboxEngineExample.new(%|http://foo.com/'?a=1&b=2|).to_html
25
+ expect(html).not_to match(/&(?!amp;)(?!#39;)/)
26
+ end
27
+
28
+ it "escapes xss" do
29
+ skip 'this is checking the wrong thing'
30
+ html = OneboxEngineExample.new(%|http://foo.com/'?%20onmouseover=alert(/foo/)|).to_html
31
+ expect(html).not_to include(%|onmouseover=alert(/foo/)|)
26
32
  end
27
33
  end
28
34
 
@@ -66,6 +72,20 @@ describe Onebox::Engine do
66
72
  end
67
73
  end
68
74
 
75
+ class AlwaysHttpsEngineExample < OneboxEngineExample
76
+ always_https
77
+ end
78
+
79
+ describe "always_https" do
80
+ it "never returns a plain http url" do
81
+ url = 'http://play.google.com/store/apps/details?id=com.google.android.inputmethod.latin'
82
+ onebox = AlwaysHttpsEngineExample.new(url)
83
+ result = onebox.to_html
84
+ expect(result).to_not match(/http(?!s)/)
85
+ expect(result).to_not match(/['"]\/\//)
86
+ expect(result).to match(/https/)
87
+ end
88
+ end
69
89
  end
70
90
 
71
91
  describe ".onebox_name" do
@@ -17,7 +17,7 @@ describe Onebox::Preview do
17
17
 
18
18
  describe "#to_s" do
19
19
  it "returns some html if given a valid url" do
20
- title = "Knit Noro: Accessories"
20
+ title = "Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)"
21
21
  expect(preview.to_s).to include(title)
22
22
  end
23
23
 
@@ -3,4 +3,4 @@
3
3
  <h3><a href='{{link}}'>{{title}}</a></h3>
4
4
  {{#by_info}}<b>{{by_info}}</b>{{/by_info}}
5
5
  <p>{{description}}</p>
6
- <p>{{price}}</p>
6
+ <p><strong>{{price}}<strong></p>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onebox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.21
4
+ version: 1.5.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joanna Zeta
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-06-26 00:00:00.000000000 Z
13
+ date: 2015-07-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: multi_json
@@ -413,7 +413,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
413
413
  version: '0'
414
414
  requirements: []
415
415
  rubyforge_project:
416
- rubygems_version: 2.4.6
416
+ rubygems_version: 2.4.5
417
417
  signing_key:
418
418
  specification_version: 4
419
419
  summary: A gem for turning URLs into previews.