Commit 42a2543f98d6cb1a859c126337630df0c3b2f40e
1 parent
4e67af18
Exists in
master
and in
1 other branch
ApplicationHelper.get_host does not break on invalid url
Showing
2 changed files
with
33 additions
and
2 deletions
Show diff stats
app/helpers/application_helper.rb
@@ -23,8 +23,12 @@ module ApplicationHelper | @@ -23,8 +23,12 @@ module ApplicationHelper | ||
23 | end | 23 | end |
24 | 24 | ||
25 | def get_host(url) | 25 | def get_host(url) |
26 | - uri = url && URI.parse(url) | ||
27 | - uri.blank? ? "N/A" : uri.host | 26 | + begin |
27 | + uri = url && URI.parse(url) | ||
28 | + uri.blank? ? "N/A" : uri.host | ||
29 | + rescue URI::InvalidURIError | ||
30 | + "N/A" | ||
31 | + end | ||
28 | end | 32 | end |
29 | 33 | ||
30 | 34 |
@@ -0,0 +1,27 @@ | @@ -0,0 +1,27 @@ | ||
1 | +require 'spec_helper' | ||
2 | + | ||
3 | +# Specs in this file have access to a helper object that includes | ||
4 | +# the AbcHelper. For example: | ||
5 | +# | ||
6 | +# describe AbcHelper do | ||
7 | +# describe "string concat" do | ||
8 | +# it "concats two strings with spaces" do | ||
9 | +# helper.concat_strings("this","that").should == "this that" | ||
10 | +# end | ||
11 | +# end | ||
12 | +# end | ||
13 | +describe ApplicationHelper do | ||
14 | + describe "get_host" do | ||
15 | + it "returns host if url is valid" do | ||
16 | + helper.get_host("http://example.com/resource/12").should == 'example.com' | ||
17 | + end | ||
18 | + | ||
19 | + it "returns 'N/A' when url is not valid" do | ||
20 | + helper.get_host("some string").should == 'N/A' | ||
21 | + end | ||
22 | + | ||
23 | + it "returns 'N/A' when url is empty" do | ||
24 | + helper.get_host({}).should == 'N/A' | ||
25 | + end | ||
26 | + end | ||
27 | +end |