require 'test_helper' class Salesforce.connection::AsyncTest < ActiveSupport::TestCase def async_post(path, body, options = {}) as_logged_in_user do convert_body RestClient.post(async_api_url(path), body, async_headers(options)), options end rescue => e raise e end def test_async_post__json Salesforce::Authentication.stubs(:session_id).returns('session_id') http_body = stub(:body => { :result => 'foo' }.to_json) RestClient.expects(:post).with('https://.salesforce.com/services/async/22.0/path', :body, {'X-SFDC-Session' => 'session_id', :content_type => 'application/json'}).returns(http_body) assert_equal({'result' => 'foo'}, Salesforce.connection.async_post('path', :body, :format => :json)) end def test_async_post__404_error_json Salesforce::Authentication.stubs(:session_id).returns('session_id') error = RestClient::BadRequest.new error.stubs(:http_body).returns("[{\"message\":\"someproblem\",\"errorCode\":\"MALFORMED_QUERY\"}]") RestClient.stubs(:post).raises(error) begin Salesforce.connection.async_post('path', :body, :format => :json) assert false, "Shouldn't have gotten here" rescue => e assert_equal "Salesforce::InvalidRequest", e.class.name assert_equal "MALFORMED_QUERY: someproblem while accessing https://.salesforce.com/services/async/22.0/path", e.message end end def test_async_post__404_error_xml Salesforce::Authentication.stubs(:session_id).returns('session_id') error = RestClient::BadRequest.new error.stubs(:http_body).returns("MALFORMED_QUERYsomeproblem" ) RestClient.expects(:post).with('https://.salesforce.com/services/async/22.0/path', :body, {'X-SFDC-Session' => 'session_id', :content_type => 'application/xml'}).raises(error) begin Salesforce.connection.async_post('path', :body, :format => :xml) assert false, "Shouldn't have gotten here" rescue => e assert_equal "Salesforce::InvalidRequest", e.class.name assert_equal "MALFORMED_QUERY: someproblem while accessing https://.salesforce.com/services/async/22.0/path", e.message end end def test_async_post__400_error_json Salesforce::Authentication.stubs(:session_id).returns('session_id') error = RestClient::ResourceNotFound.new error.stubs(:http_body).returns("[{\"message\":\"someproblem\",\"errorCode\":\"MALFORMED_QUERY\"}]") RestClient.expects(:post).with('https://.salesforce.com/services/async/22.0/path', :body, {'X-SFDC-Session' => 'session_id', :content_type => 'application/json'}).raises(error) begin Salesforce.connection.async_post('path', :body, :format => :json) assert false, "Shouldn't have gotten here" rescue => e assert_equal "Salesforce::InvalidRequest", e.class.name assert_equal "MALFORMED_QUERY: someproblem while accessing https://.salesforce.com/services/async/22.0/path", e.message end end def test_async_post__400_error_xml Salesforce::Authentication.stubs(:session_id).returns('session_id') error = RestClient::ResourceNotFound.new error.stubs(:http_body).returns("MALFORMED_QUERYsomeproblem" ) RestClient.expects(:post).with('https://.salesforce.com/services/async/22.0/path', :body, {'X-SFDC-Session' => 'session_id', :content_type => 'application/xml'}).raises(error) begin Salesforce.connection.async_post('path', :body, :format => :xml) assert false, "Shouldn't have gotten here" rescue => e assert_equal "Salesforce::InvalidRequest", e.class.name assert_equal "MALFORMED_QUERY: someproblem while accessing https://.salesforce.com/services/async/22.0/path", e.message end end def test_async_post__xml Salesforce::Authentication.stubs(:session_id).returns('session_id') http_body = stub(:body => { :result => 'foo' }.to_xml) RestClient.expects(:post).with('https://.salesforce.com/services/async/22.0/path', :body, {'X-SFDC-Session' => 'session_id', :content_type => 'application/xml'}).returns(http_body) assert_equal({'result' => 'foo'}, Salesforce.connection.async_post('path', :body, :format => :xml)) end def test_async_get__json Salesforce::Authentication.stubs(:session_id).returns('session_id') http_body = stub(:body => { :result => 'foo' }.to_json) RestClient.expects(:get).with('https://.salesforce.com/services/async/22.0/path', {'X-SFDC-Session' => 'session_id', :content_type => 'application/json'}).returns(http_body) assert_equal({'result' => 'foo'}, Salesforce.connection.async_get('path', :format => :json)) end def test_async_get__error_json Salesforce::Authentication.stubs(:session_id).returns('session_id') error = RestClient::BadRequest.new error.stubs(:http_body).returns("[{\"message\":\"someproblem\",\"errorCode\":\"MALFORMED_QUERY\"}]") RestClient.expects(:get).with('https://.salesforce.com/services/async/22.0/path', {'X-SFDC-Session' => 'session_id', :content_type => 'application/json'}).raises(error) begin Salesforce.connection.async_get('path', :format => :json) assert false, "Shouldn't have gotten here" rescue => e assert_equal "Salesforce::InvalidRequest", e.class.name assert_equal "MALFORMED_QUERY: someproblem while accessing https://.salesforce.com/services/async/22.0/path", e.message end end def test_async_get__error_xml Salesforce::Authentication.stubs(:session_id).returns('session_id') error = RestClient::BadRequest.new error.stubs(:http_body).returns("MALFORMED_QUERYsomeproblem" ) RestClient.expects(:get).with('https://.salesforce.com/services/async/22.0/path', {'X-SFDC-Session' => 'session_id', :content_type => 'application/xml'}).raises(error) begin Salesforce.connection.async_get('path', :format => :xml) assert false, "Shouldn't have gotten here" rescue => e assert_equal "Salesforce::InvalidRequest", e.class.name assert_equal "MALFORMED_QUERY: someproblem while accessing https://.salesforce.com/services/async/22.0/path", e.message end end def test_async_get__xml Salesforce::Authentication.stubs(:session_id).returns('session_id') http_body = stub(:body => { :result => 'foo' }.to_xml) RestClient.expects(:get).with('https://.salesforce.com/services/async/22.0/path', {'X-SFDC-Session' => 'session_id', :content_type => 'application/xml'}).returns(http_body) assert_equal({'result' => 'foo'}, Salesforce.connection.async_get('path', :format => :xml)) end def test_async_api_url assert_equal 'https://.salesforce.com/services/async/22.0/path', Salesforce.connection.async_api_url('path') end end