From 242318b0008c594d5fac0a97f20844c1aee8dffe Mon Sep 17 00:00:00 2001 From: Leandro Nunes dos Santos Date: Mon, 26 Jan 2015 12:04:18 -0300 Subject: [PATCH] Avoid template definition of another environment --- app/controllers/admin/templates_controller.rb | 33 ++++++++++++++++++++++++++++++--- test/functional/templates_controller_test.rb | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 116 insertions(+), 3 deletions(-) diff --git a/app/controllers/admin/templates_controller.rb b/app/controllers/admin/templates_controller.rb index 33866ce..4c28e9a 100644 --- a/app/controllers/admin/templates_controller.rb +++ b/app/controllers/admin/templates_controller.rb @@ -41,17 +41,44 @@ class TemplatesController < AdminController end def set_community_as_default - set_as_default(Community.find(params[:template_id])) + begin + community = environment.communities.find(params[:template_id]) + rescue ActiveRecord::RecordNotFound + message = _('Community not found. The template could no be changed.') + community = nil + end + + message = _('%s defined as default') % community.name if set_as_default(community) + session[:notice] = message + redirect_to :action => 'index' end def set_person_as_default - set_as_default(Person.find(params[:template_id])) + begin + person = environment.people.find(params[:template_id]) + rescue ActiveRecord::RecordNotFound + message = _('Person not found. The template could no be changed.') + person = nil + end + + message = _('%s defined as default') % person.name if set_as_default(person) + session[:notice] = message + redirect_to :action => 'index' end def set_enterprise_as_default - set_as_default(Enterprise.find(params[:template_id])) + begin + enterprise = environment.enterprises.find(params[:template_id]) + rescue ActiveRecord::RecordNotFound + message = _('Enterprise not found. The template could no be changed.') + enterprise = nil + end + + message = _('%s defined as default') % enterprise.name if set_as_default(enterprise) + session[:notice] = message + redirect_to :action => 'index' end diff --git a/test/functional/templates_controller_test.rb b/test/functional/templates_controller_test.rb index d032825..8c031ad 100644 --- a/test/functional/templates_controller_test.rb +++ b/test/functional/templates_controller_test.rb @@ -71,5 +71,91 @@ class TemplatesControllerTest < ActionController::TestCase assert_equal e3, environment.enterprise_default_template end + should 'not allow set_community_as_default define a community template of another environment as default' do + c1= fast_create(Community, :is_template => true, :environment_id => environment.id) + environment.community_default_template= c1 + environment.save + + env2 = fast_create(Environment) + + c3 = fast_create(Community, :is_template => true, :environment_id => env2.id) + + post :set_community_as_default, :template_id => c3.id + environment.reload + assert_not_equal c3, environment.community_default_template + end + + should 'not allow set_person_as_default define a person template of another environment as default' do + p1= fast_create(Person, :is_template => true, :environment_id => environment.id) + environment.person_default_template= p1 + environment.save + + env2 = fast_create(Environment) + p3 = fast_create(Person, :is_template => true, :environment_id => env2.id) + + post :set_person_as_default, :template_id => p3.id + environment.reload + assert_not_equal p3, environment.person_default_template + + end + + should 'not allow set_enterprise_as_default define a enterprise of another environment as default' do + e1= fast_create(Enterprise, :is_template => true, :environment_id => environment.id) + environment.enterprise_default_template= e1 + environment.save + + env2 = fast_create(Environment) + e3 = fast_create(Enterprise, :is_template => true, :environment_id => env2.id) + + post :set_enterprise_as_default, :template_id => e3.id + environment.reload + assert_not_equal e3, environment.enterprise_default_template + end + + should 'display successfully notice message after define a community template as default' do + c3 = fast_create(Community, :is_template => true, :environment_id => environment) + + post :set_community_as_default, :template_id => c3.id + assert_equal "#{c3.name} defined as default", session[:notice] + end + + should 'display successfully notice message after define a person template as default' do + p3 = fast_create(Person, :is_template => true, :environment_id => environment) + + post :set_person_as_default, :template_id => p3.id + assert_equal "#{p3.name} defined as default", session[:notice] + end + + should 'display successfully notice message after define a enterprise template as default' do + e3 = fast_create(Enterprise, :is_template => true, :environment_id => environment) + + post :set_enterprise_as_default, :template_id => e3.id + assert_equal "#{e3.name} defined as default", session[:notice] + end + + should 'display unsuccessfully notice message when a community template could not be defined as default' do + env2 = fast_create(Environment) + c3 = fast_create(Community, :is_template => true, :environment_id => env2.id) + + post :set_community_as_default, :template_id => c3.id + assert_equal "Community not found. The template could no be changed.", session[:notice] + end + + should 'display unsuccessfully notice message when a person template could not be defined as default' do + env2 = fast_create(Environment) + p3 = fast_create(Person, :is_template => true, :environment_id => env2.id) + + post :set_person_as_default, :template_id => p3.id + assert_equal "Person not found. The template could no be changed.", session[:notice] + end + + should 'display unsuccessfully notice message when a enterprise template could not be defined as default' do + env2 = fast_create(Environment) + e3 = fast_create(Community, :is_template => true, :environment_id => env2.id) + + post :set_enterprise_as_default, :template_id => e3.id + assert_equal "Enterprise not found. The template could no be changed.", session[:notice] + end + end -- libgit2 0.21.2