diaspora/spec/models/bookmark_spec.rb

80 lines
2.3 KiB
Ruby

require File.dirname(__FILE__) + '/../spec_helper'
describe Bookmark do
it "should have a link" do
bookmark = Factory.build(:bookmark, :link => nil)
bookmark.valid?.should be false
bookmark.link = "http://angjoo.com/"
bookmark.valid?.should be true
end
it 'should validate its link' do
bookmark = Factory.build(:bookmark)
#invalid links
bookmark.link = "zsdvzxdg"
bookmark.valid?.should == false
bookmark.link = "sdfasfa.c"
bookmark.valid?.should == false
bookmark.link = "http://.com/"
bookmark.valid?.should == false
bookmark.link = "http://www..com/"
bookmark.valid?.should == false
bookmark.link = "http:/www.asodij.com/"
bookmark.valid?.should == false
bookmark.link = "https:/www.asodij.com/"
bookmark.valid?.should == false
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
u = Factory.create(:user)
message = Factory.create(:bookmark, :title => "Reddit", :link => "http://reddit.com/", :person => u.person)
message.to_xml.to_s.should include "<title>Reddit</title>"
message.to_xml.to_s.should include "<link>http://reddit.com/</link>"
end
it 'should marshal serialized XML to object' do
xml = "<bookmark><title>Reddit</message><link>http://reddit.com/</link></bookmark>"
parsed = Bookmark.from_xml(xml)
parsed.title.should == "Reddit"
parsed.link.should == "http://reddit.com/"
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