require 'test_helper' class ProjectXmlApiTest < ActionDispatch::IntegrationTest @@project_name = "My New Project" @@valid_postdata = "#{@@project_name}" def test_retrieve_project authenticated_get_xml "/projects/1.xml", users(:admin_user).login, 'abracadabra', {} assert_select 'project' do assert_select 'not_done' assert_select 'deferred' assert_select 'pending' assert_select 'done' end assert_response 200 end def test_fails_with_invalid_xml_format #Fails too hard for test to catch # authenticated_post_xml_to_project_create "" # assert_equal 500, @integration_session.status end def test_fails_with_invalid_xml_format2 authenticated_post_xml_to_project_create "" assert_responses_with_error 'Name project must have a name' end def test_xml_simple_param_parsing authenticated_post_xml_to_project_create assert @controller.params.has_key?(:project) assert @controller.params[:project].has_key?(:name) assert_equal @@project_name, @controller.params[:project][:name] end def test_fails_with_401_if_not_authorized_user authenticated_post_xml_to_project_create @@valid_postdata, 'nobody', 'nohow' assert_response 401 end def test_fails_with_too_long_name invalid_with_long_name_postdata = "foobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoo arfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfoobarfo barfoobarfoobarfoobarfoobarfoobarfoobar" authenticated_post_xml_to_project_create invalid_with_long_name_postdata assert_responses_with_error 'Name context name must be less than 256 characters' end def test_fails_with_comma_in_name authenticated_post_xml_to_project_create "foo,bar" assert_response :created project1 = Project.where(:name => "foo,bar").first assert_not_nil project1, "expected project 'foo,bar' to be created" end def test_creates_new_project assert_difference 'Project.count' do authenticated_post_xml_to_project_create assert_response :created end project1 = Project.where(:name => @@project_name).first assert_not_nil project1, "expected project '#{@@project_name}' to be created" end private def authenticated_post_xml_to_project_create(postdata = @@valid_postdata, user = users(:other_user).login, password = 'sesame') authenticated_post_xml "/projects.xml", user, password, postdata end def assert_404_invalid_xml assert_response_and_body 404, "Expected post format is valid xml like so: project name." end end