diff --git a/app/controllers/bookmarks_controller.rb b/app/controllers/bookmarks_controller.rb index 760a3255c..5d9959732 100644 --- a/app/controllers/bookmarks_controller.rb +++ b/app/controllers/bookmarks_controller.rb @@ -4,11 +4,6 @@ class BookmarksController < ApplicationController def index @bookmark = Bookmark.new @bookmarks = Bookmark.paginate :page => params[:page], :order => 'created_at DESC' - - - respond_to do |format| - format.html - end end def edit diff --git a/app/models/bookmark.rb b/app/models/bookmark.rb index 8f793fd47..de1eb9258 100644 --- a/app/models/bookmark.rb +++ b/app/models/bookmark.rb @@ -12,8 +12,6 @@ class Bookmark < Post validates_format_of :link, :with => /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix - before_validation :clean_link - def to_activity <<-XML @@ -27,12 +25,18 @@ class Bookmark < Post XML end + + def self.instantiate params + params[:link] = clean_link(params[:link]) + create params + end protected - def clean_link - if self.link - self.link = 'http://' + self.link unless self.link.match('https?://') - self.link = self.link + '/' if self.link[-1,1] != '/' + def self.clean_link link + if link + link = 'http://' + link unless link.match('https?://') + link = link + '/' if link[-1,1] != '/' + link end end end diff --git a/spec/models/bookmark_spec.rb b/spec/models/bookmark_spec.rb index f583e0844..ae4567bc1 100644 --- a/spec/models/bookmark_spec.rb +++ b/spec/models/bookmark_spec.rb @@ -10,34 +10,6 @@ describe Bookmark do it 'should validate its link' do bookmark = Factory.build(:bookmark) - - #links changed valid - bookmark.link = "google.com" - bookmark.valid?.should == true - bookmark.link.should == "http://google.com/" - - bookmark.link = "www.google.com" - bookmark.valid?.should == true - bookmark.link.should == "http://www.google.com/" - - bookmark.link = "google.com/" - bookmark.valid?.should == true - bookmark.link.should == "http://google.com/" - - bookmark.link = "www.google.com/" - bookmark.valid?.should == true - bookmark.link.should == "http://www.google.com/" - - bookmark.link = "http://google.com" - bookmark.valid?.should == true - bookmark.link.should == "http://google.com/" - - bookmark.link = "http://www.google.com" - bookmark.valid?.should == true - - #bookmark.link = "http://babycakes.sofaer.net:3000" - #bookmark.valid?.should == true - #invalid links bookmark.link = "zsdvzxdg" bookmark.valid?.should == false @@ -54,6 +26,24 @@ describe Bookmark do bookmark.link = "http:///www.asodij.com/" bookmark.valid?.should == false end + + it 'should clean links' do + bad_links = [ + "google.com", + "www.google.com", + "google.com/", + "www.google.com/", + "http://google.com", + "http://www.google.com" + ] + + bad_links.each{ |link| + Bookmark.clean_link(link).should satisfy{ |link| + /^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?$/ix.match(link) + } + } + + end describe "XML" do it 'should serialize to XML' do @@ -71,4 +61,20 @@ describe Bookmark do parsed.valid?.should be_true end end + + describe 'with encryption' do + before do + unstub_mocha_stubs + @user = Factory.create(:user) + end + + after do + stub_signature_verification + end + + it 'should save a signed bookmark' do + bookmark = @user.post(:bookmark, :title => "I love cryptography", :link => "http://pgp.mit.edu/") + bookmark.created_at.should_not be nil + end + end end