require File.dirname(__FILE__) + '/../test_helper' require 'contexts_controller' # Re-raise errors caught by the controller. class ContextsController; def rescue_action(e) raise e end; end class ContextXmlApiTest < ActionController::IntegrationTest fixtures :users, :contexts, :preferences @@context_name = "@newcontext" @@valid_postdata = "#{@@context_name}" def setup assert_test_environment_ok end def test_fails_with_401_if_not_authorized_user authenticated_post_xml_to_context_create @@valid_postdata, 'nobody', 'nohow' assert_401_unauthorized end def test_fails_with_invalid_xml_format authenticated_post_xml_to_context_create "" assert_equal 500, @integration_session.status end def test_fails_with_invalid_xml_format2 authenticated_post_xml_to_context_create "" assert_404_invalid_xml end def test_xml_simple_param_parsing authenticated_post_xml_to_context_create assert @controller.params.has_key?(:request) assert @controller.params[:request].has_key?(:context) assert @controller.params[:request][:context].has_key?(:name) assert_equal @@context_name, @controller.params[:request][:context][:name] end def test_fails_with_too_long_name invalid_with_long_name_postdata = "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo barfoobarfoobarfoobarfoobarfoobarfoobar" authenticated_post_xml_to_context_create invalid_with_long_name_postdata assert_response 409 assert_xml_select 'errors' do assert_select 'error', 1, 'Name context name must be less than 256 characters' end end def test_fails_with_comma_in_name authenticated_post_xml_to_context_create "foo,bar" assert_response 409 assert_xml_select 'errors' do assert_select 'error', 1, 'Name cannot contain the comma (\',\') character' end end def test_creates_new_context assert_difference Context, :count do authenticated_post_xml_to_context_create assert_response 201 end context1 = Context.find_by_name(@@context_name) assert_not_nil context1, "expected context '#{@@context_name}' to be created" end private def authenticated_post_xml_to_context_create(postdata = @@valid_postdata, user = users(:other_user).login, password = 'sesame') authenticated_post_xml "/contexts", user, password, postdata end def assert_404_invalid_xml assert_response_and_body 400, "Expected post format is valid xml like so: context name." end end