require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
describe CloudApp::ResponseError, "when not logged in" do
before(:each) do
fake_it_all_with_errors
@error = lambda { CloudApp::Drop.all }
end
it "should raise a 401" do
@error.should raise_error(CloudApp::ResponseError, "401 Unauthorized")
end
it "should return a code and error messages" do
@error.should raise_error{|e|
e.code.should == 401
e.errors[0].should == "HTTP Digest: Access denied."
}
end
end
describe CloudApp::ResponseError, "when item doesn't exist" do
before(:each) do
fake_it_all_with_errors
@error = lambda { CloudApp::Drop.find "12345" }
end
it "should raise a 404" do
@error.should raise_error(CloudApp::ResponseError, "404 Not Found")
end
it "should return a code and error messages" do
@error.should raise_error{|e|
e.code.should == 404
e.errors[0].should == "
Not Found
"
}
end
end
describe CloudApp::ResponseError, "when updating someone elses item" do
before(:each) do
fake_it_all_with_errors
@error = lambda { CloudApp::Drop.update "http://my.cl.ly/items/12345" }
end
it "should raise a 404" do
pending "CloudApp shouldn't return a HTML response (or a 404 for that matter)" do
@error.should raise_error(CloudApp::ResponseError, "404 Not Found")
end
end
it "should return a code and error messages" do
pending "CloudApp shouldn't return a HTML response (or a 404 for that matter)" do
@error.should raise_error{|e|
e.code.should == 404
}
end
end
end
describe "when recovering an unrecoverable item" do
before(:each) do
fake_it_all_with_errors
@error = lambda { CloudApp::Drop.recover "http://my.cl.ly/items/12345" }
end
it "should raise a 404" do
pending "CloudApp shouldn't return a HTML response" do
@error.should raise_error(CloudApp::ResponseError, "404 Not Found")
end
end
it "should return a code and error messages" do
pending "CloudApp shouldn't return a HTML response" do
@error.should raise_error{|e|
e.code.should == 404
}
end
end
end
describe CloudApp::ResponseError, "badly formatted bookmark" do
before(:each) do
fake_it_all_with_errors
FakeWeb.register_uri :post, 'http://my.cl.ly/items', :response => stub_file(File.join('error', '422-bookmark'))
CloudApp.authenticate "testuser@test.com", "password"
@error = lambda { CloudApp::Drop.create :bookmark }
end
it "should raise a 422" do
@error.should raise_error(CloudApp::ResponseError, "422")
end
it "should return an array of error messages" do
@error.should raise_error{|e|
e.errors.should be_a_kind_of(Array)
e.errors[0].should == "URL can't be blank"
}
end
end
describe CloudApp::ResponseError, "badly formatted bookmarks" do
before(:each) do
fake_it_all_with_errors
FakeWeb.register_uri :post, 'http://my.cl.ly/items', :response => stub_file(File.join('error', '422-bookmarks'))
CloudApp.authenticate "testuser@test.com", "password"
@error = lambda { CloudApp::Drop.create :bookmarks, [{}] }
end
it "should raise a 422" do
@error.should raise_error(CloudApp::ResponseError, "422")
end
it "should return a nested array of error messages" do
@error.should raise_error{|e|
e.errors.should be_a_kind_of(Array)
e.errors[0].should be_a_kind_of(Array)
e.errors[0][0].should == "URL can't be blank"
}
end
end