git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9975 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/2.1.0
@@ -520,6 +520,12 @@ class ApplicationController < ActionController::Base | |||
render_error "An error occurred while executing the query and has been logged. Please report this error to your Redmine administrator." | |||
end | |||
# Renders a 200 response for successfull updates or deletions via the API | |||
def render_api_ok | |||
# head :ok would return a response body with one space | |||
render :text => '', :status => :ok, :layout => nil | |||
end | |||
# Renders API response on validation failure | |||
def render_validation_errors(objects) | |||
if objects.is_a?(Array) |
@@ -72,7 +72,7 @@ class GroupsController < ApplicationController | |||
if @group.save | |||
flash[:notice] = l(:notice_successful_update) | |||
format.html { redirect_to(groups_path) } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
else | |||
format.html { render :action => "edit" } | |||
format.api { render_validation_errors(@group) } | |||
@@ -85,7 +85,7 @@ class GroupsController < ApplicationController | |||
respond_to do |format| | |||
format.html { redirect_to(groups_url) } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
end | |||
@@ -100,7 +100,7 @@ class GroupsController < ApplicationController | |||
users.each {|user| page.visual_effect(:highlight, "user-#{user.id}") } | |||
} | |||
} | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
end | |||
@@ -109,7 +109,7 @@ class GroupsController < ApplicationController | |||
respond_to do |format| | |||
format.html { redirect_to :controller => 'groups', :action => 'edit', :id => @group, :tab => 'users' } | |||
format.js { render(:update) {|page| page.replace_html "tab-content-users", :partial => 'groups/users'} } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
end | |||
@@ -98,7 +98,7 @@ class IssueCategoriesController < ApplicationController | |||
flash[:notice] = l(:notice_successful_update) | |||
redirect_to :controller => 'projects', :action => 'settings', :tab => 'categories', :id => @project | |||
} | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
else | |||
respond_to do |format| | |||
@@ -118,7 +118,7 @@ class IssueCategoriesController < ApplicationController | |||
@category.destroy(reassign_to) | |||
respond_to do |format| | |||
format.html { redirect_to :controller => 'projects', :action => 'settings', :id => @project, :tab => 'categories' } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
return | |||
end |
@@ -76,7 +76,7 @@ class IssueRelationsController < ApplicationController | |||
respond_to do |format| | |||
format.html { redirect_to issue_path } # TODO : does this really work since @issue is always nil? What is it useful to? | |||
format.js { render(:update) {|page| page.remove "relation-#{@relation.id}"} } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
end | |||
@@ -197,7 +197,7 @@ class IssuesController < ApplicationController | |||
respond_to do |format| | |||
format.html { redirect_back_or_default({:action => 'show', :id => @issue}) } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
else | |||
respond_to do |format| | |||
@@ -307,7 +307,7 @@ class IssuesController < ApplicationController | |||
end | |||
respond_to do |format| | |||
format.html { redirect_back_or_default(:action => 'index', :project_id => @project) } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
end | |||
@@ -107,7 +107,7 @@ class MembersController < ApplicationController | |||
} | |||
format.api { | |||
if saved | |||
head :ok | |||
render_api_ok | |||
else | |||
render_validation_errors(@member) | |||
end | |||
@@ -128,7 +128,7 @@ class MembersController < ApplicationController | |||
} | |||
format.api { | |||
if @member.destroyed? | |||
head :ok | |||
render_api_ok | |||
else | |||
head :unprocessable_entity | |||
end |
@@ -191,7 +191,7 @@ class ProjectsController < ApplicationController | |||
flash[:notice] = l(:notice_successful_update) | |||
redirect_to :action => 'settings', :id => @project | |||
} | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
else | |||
respond_to do |format| | |||
@@ -241,7 +241,7 @@ class ProjectsController < ApplicationController | |||
@project_to_destroy.destroy | |||
respond_to do |format| | |||
format.html { redirect_to :controller => 'admin', :action => 'projects' } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
end | |||
# hide project in layout |
@@ -171,7 +171,7 @@ class TimelogController < ApplicationController | |||
flash[:notice] = l(:notice_successful_update) | |||
redirect_back_or_default :action => 'index', :project_id => @time_entry.project | |||
} | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
else | |||
respond_to do |format| | |||
@@ -223,7 +223,7 @@ class TimelogController < ApplicationController | |||
} | |||
format.api { | |||
if destroyed | |||
head :ok | |||
render_api_ok | |||
else | |||
render_validation_errors(@time_entries) | |||
end |
@@ -156,7 +156,7 @@ class UsersController < ApplicationController | |||
flash[:notice] = l(:notice_successful_update) | |||
redirect_to_referer_or edit_user_path(@user) | |||
} | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
else | |||
@auth_sources = AuthSource.find(:all) | |||
@@ -175,7 +175,7 @@ class UsersController < ApplicationController | |||
@user.destroy | |||
respond_to do |format| | |||
format.html { redirect_to_referer_or(users_url) } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
end | |||
@@ -144,7 +144,7 @@ class VersionsController < ApplicationController | |||
flash[:notice] = l(:notice_successful_update) | |||
redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project | |||
} | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
else | |||
respond_to do |format| | |||
@@ -167,7 +167,7 @@ class VersionsController < ApplicationController | |||
@version.destroy | |||
respond_to do |format| | |||
format.html { redirect_back_or_default :controller => 'projects', :action => 'settings', :tab => 'versions', :id => @project } | |||
format.api { head :ok } | |||
format.api { render_api_ok } | |||
end | |||
else | |||
respond_to do |format| |
@@ -148,6 +148,7 @@ class ApiTest::GroupsTest < ActionController::IntegrationTest | |||
should "update the group" do | |||
put '/groups/10.xml', {:group => {:name => 'New name', :user_ids => [2, 3]}}, credentials('admin') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
group = Group.find(10) | |||
assert_equal 'New name', group.name | |||
@@ -177,6 +178,7 @@ class ApiTest::GroupsTest < ActionController::IntegrationTest | |||
assert_difference 'Group.count', -1 do | |||
delete '/groups/10.xml', {}, credentials('admin') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
end | |||
end | |||
@@ -188,6 +190,7 @@ class ApiTest::GroupsTest < ActionController::IntegrationTest | |||
assert_difference 'Group.find(10).users.count' do | |||
post '/groups/10/users.xml', {:user_id => 5}, credentials('admin') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
assert_include User.find(5), Group.find(10).users | |||
end | |||
@@ -200,6 +203,7 @@ class ApiTest::GroupsTest < ActionController::IntegrationTest | |||
assert_difference 'Group.find(10).users.count', -1 do | |||
delete '/groups/10/users/8.xml', {}, credentials('admin') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
assert_not_include User.find(8), Group.find(10).users | |||
end |
@@ -81,6 +81,7 @@ class ApiTest::IssueCategoriesTest < ActionController::IntegrationTest | |||
put '/issue_categories/2.xml', {:issue_category => {:name => 'API Update'}}, credentials('jsmith') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_equal 'API Update', IssueCategory.find(2).name | |||
end | |||
end | |||
@@ -104,6 +105,7 @@ class ApiTest::IssueCategoriesTest < ActionController::IntegrationTest | |||
delete '/issue_categories/1.xml', {}, credentials('jsmith') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_nil IssueCategory.find_by_id(1) | |||
end | |||
@@ -117,6 +119,7 @@ class ApiTest::IssueCategoriesTest < ActionController::IntegrationTest | |||
end | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_nil IssueCategory.find_by_id(1) | |||
end | |||
end |
@@ -99,6 +99,7 @@ class ApiTest::IssueRelationsTest < ActionController::IntegrationTest | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_nil IssueRelation.find_by_id(2) | |||
end | |||
end |
@@ -770,6 +770,7 @@ class ApiTest::IssuesTest < ActionController::IntegrationTest | |||
{:issue => {:notes => 'Attachment added', :uploads => [{:token => token, :filename => 'test.txt', :content_type => 'text/plain'}]}}, | |||
credentials('jsmith') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
issue = Issue.find(1) |
@@ -157,6 +157,7 @@ class ApiTest::MembershipsTest < ActionController::IntegrationTest | |||
put '/memberships/2.xml', {:membership => {:user_id => 3, :role_ids => [1,2]}}, credentials('jsmith') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
member = Member.find(2) | |||
assert_equal [1,2], member.role_ids.sort | |||
@@ -179,6 +180,7 @@ class ApiTest::MembershipsTest < ActionController::IntegrationTest | |||
delete '/memberships/2.xml', {}, credentials('jsmith') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
assert_nil Member.find_by_id(2) | |||
end |
@@ -226,6 +226,7 @@ class ApiTest::ProjectsTest < ActionController::IntegrationTest | |||
put '/projects/2.xml', @parameters, credentials('jsmith') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_equal 'application/xml', @response.content_type | |||
project = Project.find(2) | |||
assert_equal 'API update', project.name | |||
@@ -238,6 +239,7 @@ class ApiTest::ProjectsTest < ActionController::IntegrationTest | |||
put '/projects/2.xml', @parameters, credentials('admin') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
project = Project.find(2) | |||
assert_equal ['issue_tracking', 'news', 'time_tracking'], project.enabled_module_names.sort | |||
end | |||
@@ -249,6 +251,7 @@ class ApiTest::ProjectsTest < ActionController::IntegrationTest | |||
put '/projects/2.xml', @parameters, credentials('admin') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
project = Project.find(2) | |||
assert_equal [1, 3], project.trackers.map(&:id).sort | |||
end | |||
@@ -286,6 +289,7 @@ class ApiTest::ProjectsTest < ActionController::IntegrationTest | |||
delete '/projects/2.xml', {}, credentials('admin') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_nil Project.find_by_id(2) | |||
end | |||
end |
@@ -134,6 +134,7 @@ class ApiTest::TimeEntriesTest < ActionController::IntegrationTest | |||
put '/time_entries/2.xml', {:time_entry => {:comments => 'API Update'}}, credentials('jsmith') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_equal 'API Update', TimeEntry.find(2).comments | |||
end | |||
end | |||
@@ -157,6 +158,7 @@ class ApiTest::TimeEntriesTest < ActionController::IntegrationTest | |||
delete '/time_entries/2.xml', {}, credentials('jsmith') | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_nil TimeEntry.find_by_id(2) | |||
end | |||
end |
@@ -238,6 +238,7 @@ class ApiTest::UsersTest < ActionController::IntegrationTest | |||
assert !user.admin? | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
end | |||
@@ -263,6 +264,7 @@ class ApiTest::UsersTest < ActionController::IntegrationTest | |||
assert !user.admin? | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
end | |||
end | |||
@@ -322,6 +324,7 @@ class ApiTest::UsersTest < ActionController::IntegrationTest | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
end | |||
@@ -337,6 +340,7 @@ class ApiTest::UsersTest < ActionController::IntegrationTest | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
end | |||
end | |||
end |
@@ -120,6 +120,7 @@ class ApiTest::VersionsTest < ActionController::IntegrationTest | |||
put '/versions/2.xml', {:version => {:name => 'API update'}}, credentials('jsmith') | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_equal 'API update', Version.find(2).name | |||
end | |||
end | |||
@@ -131,6 +132,7 @@ class ApiTest::VersionsTest < ActionController::IntegrationTest | |||
end | |||
assert_response :ok | |||
assert_equal '', @response.body | |||
assert_nil Version.find_by_id(3) | |||
end | |||
end |