Commit 088c792e86414670f5dad67dad6def42add07acc
Exists in
master
and in
29 other branches
Merge branch 'case-insensitive-profile' into noosfero
Showing
7 changed files
with
88 additions
and
96 deletions
Show diff stats
app/controllers/my_profile/enterprise_validation_controller.rb
| 1 | 1 | class EnterpriseValidationController < MyProfileController |
| 2 | 2 | |
| 3 | 3 | protect 'validate_enterprise', :profile |
| 4 | - | |
| 4 | + | |
| 5 | 5 | def index |
| 6 | 6 | @pending_validations = profile.pending_validations |
| 7 | 7 | end |
| ... | ... | @@ -27,7 +27,7 @@ class EnterpriseValidationController < MyProfileController |
| 27 | 27 | post_only :reject |
| 28 | 28 | def reject |
| 29 | 29 | @pending = profile.find_pending_validation(params[:id]) |
| 30 | - if @pending | |
| 30 | + if @pending | |
| 31 | 31 | @pending.reject_explanation = params[:reject_explanation] |
| 32 | 32 | begin |
| 33 | 33 | @pending.reject | ... | ... |
app/models/validation_info.rb
| ... | ... | @@ -2,9 +2,10 @@ class ValidationInfo < ActiveRecord::Base |
| 2 | 2 | |
| 3 | 3 | attr_accessible :validation_methodology, :restrictions, :organization |
| 4 | 4 | |
| 5 | - validates_presence_of :validation_methodology | |
| 6 | - | |
| 7 | 5 | belongs_to :organization |
| 8 | 6 | |
| 7 | + validates_presence_of :organization | |
| 8 | + validates_presence_of :validation_methodology | |
| 9 | + | |
| 9 | 10 | xss_terminate :only => [ :validation_methodology, :restrictions ], :on => 'validation' |
| 10 | 11 | end | ... | ... |
config/routes.rb
| ... | ... | @@ -56,37 +56,37 @@ Noosfero::Application.routes.draw do |
| 56 | 56 | match 'search(/:action(/*category_path))', :controller => 'search' |
| 57 | 57 | |
| 58 | 58 | # events |
| 59 | - match 'profile/:profile/events_by_day', :controller => 'events', :action => 'events_by_day', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 60 | - match 'profile/:profile/events_by_month', :controller => 'events', :action => 'events_by_month', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 61 | - match 'profile/:profile/events/:year/:month/:day', :controller => 'events', :action => 'events', :year => /\d*/, :month => /\d*/, :day => /\d*/, :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 62 | - match 'profile/:profile/events/:year/:month', :controller => 'events', :action => 'events', :year => /\d*/, :month => /\d*/, :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 63 | - match 'profile/:profile/events', :controller => 'events', :action => 'events', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 59 | + match 'profile/:profile/events_by_day', :controller => 'events', :action => 'events_by_day', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 60 | + match 'profile/:profile/events_by_month', :controller => 'events', :action => 'events_by_month', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 61 | + match 'profile/:profile/events/:year/:month/:day', :controller => 'events', :action => 'events', :year => /\d*/, :month => /\d*/, :day => /\d*/, :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 62 | + match 'profile/:profile/events/:year/:month', :controller => 'events', :action => 'events', :year => /\d*/, :month => /\d*/, :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 63 | + match 'profile/:profile/events', :controller => 'events', :action => 'events', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 64 | 64 | |
| 65 | 65 | # catalog |
| 66 | - match 'catalog/:profile', :controller => 'catalog', :action => 'index', :profile => /#{Noosfero.identifier_format_in_url}/, :as => :catalog | |
| 66 | + match 'catalog/:profile', :controller => 'catalog', :action => 'index', :profile => /#{Noosfero.identifier_format_in_url}/i, :as => :catalog | |
| 67 | 67 | |
| 68 | 68 | # invite |
| 69 | - match 'profile/:profile/invite/friends', :controller => 'invite', :action => 'invite_friends', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 70 | - match 'profile/:profile/invite/:action', :controller => 'invite', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 69 | + match 'profile/:profile/invite/friends', :controller => 'invite', :action => 'invite_friends', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 70 | + match 'profile/:profile/invite/:action', :controller => 'invite', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 71 | 71 | |
| 72 | 72 | # feeds per tag |
| 73 | - match 'profile/:profile/tags/:id/feed', :controller => 'profile', :action =>'tag_feed', :id => /.+/, :profile => /#{Noosfero.identifier_format_in_url}/, :as => :tag_feed | |
| 73 | + match 'profile/:profile/tags/:id/feed', :controller => 'profile', :action =>'tag_feed', :id => /.+/, :profile => /#{Noosfero.identifier_format_in_url}/i, :as => :tag_feed | |
| 74 | 74 | |
| 75 | 75 | # profile tags |
| 76 | - match 'profile/:profile/tags/:id', :controller => 'profile', :action => 'content_tagged', :id => /.+/, :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 77 | - match 'profile/:profile/tags(/:id)', :controller => 'profile', :action => 'tags', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 76 | + match 'profile/:profile/tags/:id', :controller => 'profile', :action => 'content_tagged', :id => /.+/, :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 77 | + match 'profile/:profile/tags(/:id)', :controller => 'profile', :action => 'tags', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 78 | 78 | |
| 79 | 79 | # profile search |
| 80 | - match 'profile/:profile/search', :controller => 'profile_search', :action => 'index', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 80 | + match 'profile/:profile/search', :controller => 'profile_search', :action => 'index', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 81 | 81 | |
| 82 | 82 | # comments |
| 83 | - match 'profile/:profile/comment/:action/:id', :controller => 'comment', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 83 | + match 'profile/:profile/comment/:action/:id', :controller => 'comment', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 84 | 84 | |
| 85 | 85 | # public profile information |
| 86 | - match 'profile/:profile(/:action(/:id))', :controller => 'profile', :action => 'index', :id => /[^\/]*/, :profile => /#{Noosfero.identifier_format_in_url}/, :as => :profile | |
| 86 | + match 'profile/:profile(/:action(/:id))', :controller => 'profile', :action => 'index', :id => /[^\/]*/, :profile => /#{Noosfero.identifier_format_in_url}/i, :as => :profile | |
| 87 | 87 | |
| 88 | 88 | # contact |
| 89 | - match 'contact/:profile/:action(/:id)', :controller => 'contact', :action => 'index', :id => /.*/, :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 89 | + match 'contact/:profile/:action(/:id)', :controller => 'contact', :action => 'index', :id => /.*/, :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 90 | 90 | |
| 91 | 91 | # map balloon |
| 92 | 92 | match 'map_balloon/:action/:id', :controller => 'map_balloon', :id => /.*/ |
| ... | ... | @@ -98,8 +98,8 @@ Noosfero::Application.routes.draw do |
| 98 | 98 | ## Controllers that are profile-specific (for profile admins ) |
| 99 | 99 | ###################################################### |
| 100 | 100 | # profile customization - "My profile" |
| 101 | - match 'myprofile/:profile', :controller => 'profile_editor', :action => 'index', :profile => /#{Noosfero.identifier_format_in_url}/ | |
| 102 | - match 'myprofile/:profile/:controller(/:action(/:id))', :controller => Noosfero.pattern_for_controllers_in_directory('my_profile'), :profile => /#{Noosfero.identifier_format_in_url}/, :as => :myprofile | |
| 101 | + match 'myprofile/:profile', :controller => 'profile_editor', :action => 'index', :profile => /#{Noosfero.identifier_format_in_url}/i | |
| 102 | + match 'myprofile/:profile/:controller(/:action(/:id))', :controller => Noosfero.pattern_for_controllers_in_directory('my_profile'), :profile => /#{Noosfero.identifier_format_in_url}/i, :as => :myprofile | |
| 103 | 103 | |
| 104 | 104 | |
| 105 | 105 | ###################################################### |
| ... | ... | @@ -127,14 +127,14 @@ Noosfero::Application.routes.draw do |
| 127 | 127 | # cache stuff - hack |
| 128 | 128 | match 'public/:action/:id', :controller => 'public' |
| 129 | 129 | |
| 130 | - match ':profile/*page/versions', :controller => 'content_viewer', :action => 'article_versions', :profile => /#{Noosfero.identifier_format_in_url}/, :constraints => EnvironmentDomainConstraint.new | |
| 130 | + match ':profile/*page/versions', :controller => 'content_viewer', :action => 'article_versions', :profile => /#{Noosfero.identifier_format_in_url}/i, :constraints => EnvironmentDomainConstraint.new | |
| 131 | 131 | match '*page/versions', :controller => 'content_viewer', :action => 'article_versions' |
| 132 | 132 | |
| 133 | - match ':profile/*page/versions_diff', :controller => 'content_viewer', :action => 'versions_diff', :profile => /#{Noosfero.identifier_format_in_url}/, :constraints => EnvironmentDomainConstraint.new | |
| 133 | + match ':profile/*page/versions_diff', :controller => 'content_viewer', :action => 'versions_diff', :profile => /#{Noosfero.identifier_format_in_url}/i, :constraints => EnvironmentDomainConstraint.new | |
| 134 | 134 | match '*page/versions_diff', :controller => 'content_viewer', :action => 'versions_diff' |
| 135 | 135 | |
| 136 | 136 | # match requests for profiles that don't have a custom domain |
| 137 | - match ':profile(/*page)', :controller => 'content_viewer', :action => 'view_page', :profile => /#{Noosfero.identifier_format_in_url}/, :constraints => EnvironmentDomainConstraint.new | |
| 137 | + match ':profile(/*page)', :controller => 'content_viewer', :action => 'view_page', :profile => /#{Noosfero.identifier_format_in_url}/i, :constraints => EnvironmentDomainConstraint.new | |
| 138 | 138 | |
| 139 | 139 | # match requests for content in domains hosted for profiles |
| 140 | 140 | match '/(*page)', :controller => 'content_viewer', :action => 'view_page' | ... | ... |
lib/needs_profile.rb
| ... | ... | @@ -21,7 +21,11 @@ module NeedsProfile |
| 21 | 21 | protected |
| 22 | 22 | |
| 23 | 23 | def load_profile |
| 24 | - @profile ||= environment.profiles.find_by_identifier(params[:profile]) | |
| 24 | + if params[:profile] | |
| 25 | + params[:profile].downcase! | |
| 26 | + @profile ||= environment.profiles.where(identifier: params[:profile]).first | |
| 27 | + end | |
| 28 | + | |
| 25 | 29 | if @profile |
| 26 | 30 | profile_hostname = @profile.hostname |
| 27 | 31 | if profile_hostname && profile_hostname != request.host | ... | ... |
lib/noosfero/plugin/routes.rb
| ... | ... | @@ -19,15 +19,15 @@ Dir.glob(Rails.root.join(plugins_root, '*', 'controllers')) do |controllers_dir| |
| 19 | 19 | controllers.each do |controller| |
| 20 | 20 | controller_name = controller.gsub("#{plugin_name}_plugin_",'') |
| 21 | 21 | if %w[profile myprofile].include?(folder.to_s) |
| 22 | - match "#{prefixes_by_folder[folder]}/#{plugin_name}/#{controller_name}(/:action(/:id))", :controller => controller, :profile => /#{Noosfero.identifier_format}/ | |
| 22 | + match "#{prefixes_by_folder[folder]}/#{plugin_name}/#{controller_name}(/:action(/:id))", controller: controller, profile: /#{Noosfero.identifier_format_in_url}/i | |
| 23 | 23 | else |
| 24 | - match "#{prefixes_by_folder[folder]}/#{plugin_name}/#{controller_name}(/:action(/:id))", :controller => controller | |
| 24 | + match "#{prefixes_by_folder[folder]}/#{plugin_name}/#{controller_name}(/:action(/:id))", controller: controller | |
| 25 | 25 | end |
| 26 | 26 | end |
| 27 | 27 | end |
| 28 | 28 | |
| 29 | - match 'plugin/' + plugin_name + '(/:action(/:id))', :controller => plugin_name + '_plugin' | |
| 30 | - match 'profile/:profile/plugin/' + plugin_name + '(/:action(/:id))', :controller => plugin_name + '_plugin_profile', :profile => /#{Noosfero.identifier_format}/ | |
| 31 | - match 'myprofile/:profile/plugin/' + plugin_name + '(/:action(/:id))', :controller => plugin_name + '_plugin_myprofile', :profile => /#{Noosfero.identifier_format}/ | |
| 32 | - match 'admin/plugin/' + plugin_name + '(/:action(/:id))', :controller => plugin_name + '_plugin_admin' | |
| 29 | + match 'plugin/' + plugin_name + '(/:action(/:id))', controller: plugin_name + '_plugin' | |
| 30 | + match 'profile/:profile/plugin/' + plugin_name + '(/:action(/:id))', controller: plugin_name + '_plugin_profile', profile: /#{Noosfero.identifier_format_in_url}/i | |
| 31 | + match 'myprofile/:profile/plugin/' + plugin_name + '(/:action(/:id))', controller: plugin_name + '_plugin_myprofile', profile: /#{Noosfero.identifier_format_in_url}/i | |
| 32 | + match 'admin/plugin/' + plugin_name + '(/:action(/:id))', controller: plugin_name + '_plugin_admin' | |
| 33 | 33 | end | ... | ... |
test/functional/enterprise_validation_controller_test.rb
| ... | ... | @@ -12,126 +12,109 @@ class EnterpriseValidationControllerTest < ActionController::TestCase |
| 12 | 12 | @controller = EnterpriseValidationController.new |
| 13 | 13 | @request = ActionController::TestRequest.new |
| 14 | 14 | @response = ActionController::TestResponse.new |
| 15 | - | |
| 15 | + | |
| 16 | 16 | login_as 'ze' |
| 17 | - @org = Organization.create!(:identifier => 'myorg', :name => "My Org") | |
| 17 | + @user = Profile['ze'] | |
| 18 | + @org = Organization.create!(identifier: 'myorg', name: "My Org") | |
| 18 | 19 | give_permission('ze', 'validate_enterprise', @org) |
| 19 | - Profile.expects(:find_by_identifier).with('myorg').returns(@org).at_least_once | |
| 20 | 20 | end |
| 21 | 21 | |
| 22 | 22 | should 'list pending validations on index' do |
| 23 | - empty = [] | |
| 24 | - @org.expects(:pending_validations).returns(empty) | |
| 25 | - get :index, :profile => 'myorg' | |
| 26 | - assert_equal empty, assigns(:pending_validations) | |
| 23 | + get :index, profile: 'myorg' | |
| 24 | + assert_equal [], assigns(:pending_validations) | |
| 27 | 25 | assert_template 'index' |
| 28 | 26 | end |
| 29 | 27 | |
| 30 | 28 | should 'display details and prompt for needed data when approving or rejecting enterprise' do |
| 31 | - validating = CreateEnterprise.new | |
| 32 | - @org.expects(:find_pending_validation).with('kakakaka').returns(validating) | |
| 33 | - | |
| 34 | - get :details, :profile => 'myorg', :id => 'kakakaka' | |
| 35 | - assert_same validating, assigns(:pending) | |
| 29 | + code = 'kakakaka' | |
| 30 | + @org.validations.create! code: code, name: 'test', identifier: 'test', requestor: @user, target: @org | |
| 31 | + get :details, profile: 'myorg', id: code | |
| 32 | + assert_equal @org.find_pending_validation(code), assigns(:pending) | |
| 36 | 33 | end |
| 37 | 34 | |
| 38 | 35 | should 'refuse to validate unexisting request' do |
| 39 | - @org.expects(:find_pending_validation).with('kakakaka').returns(nil) | |
| 40 | - get :details , :profile => 'myorg', :id => 'kakakaka' | |
| 36 | + get :details, profile: 'myorg', id: 'kakakaka' | |
| 41 | 37 | assert_response 404 |
| 42 | 38 | end |
| 43 | 39 | |
| 44 | 40 | should 'be able to actually validate enterprise on request' do |
| 45 | - validation = CreateEnterprise.new | |
| 46 | - @org.expects(:find_pending_validation).with('kakakaka').returns(validation) | |
| 47 | - validation.expects(:approve) | |
| 48 | - validation.expects(:code).returns('kakakaka') | |
| 49 | - post :approve, :profile => 'myorg', :id => 'kakakaka' | |
| 50 | - assert_redirected_to :action => 'view_processed', :id => 'kakakaka' | |
| 41 | + code = 'kakakaka' | |
| 42 | + @org.validations.create! code: code, name: 'test2', identifier: 'test2', requestor: @user, target: @org | |
| 43 | + post :approve, profile: 'myorg', id: code | |
| 44 | + assert_redirected_to action: 'view_processed', id: code | |
| 51 | 45 | end |
| 52 | 46 | |
| 53 | 47 | should 'be able to reject an enterprise' do |
| 54 | - validation = CreateEnterprise.new | |
| 55 | - @org.expects(:find_pending_validation).with('kakakaka').returns(validation) | |
| 56 | - validation.expects(:reject) | |
| 57 | - validation.expects(:code).returns('kakakaka') | |
| 58 | - post :reject, :profile => 'myorg', :id => 'kakakaka', :reject_explanation => 'this is not a solidarity economy enterprise' | |
| 59 | - assert_redirected_to :action => 'view_processed', :id => 'kakakaka' | |
| 48 | + code = 'kakakaka' | |
| 49 | + @org.validations.create! code: code, name: 'test2', identifier: 'test2', requestor: @user, target: @org | |
| 50 | + post :reject, profile: 'myorg', id: code, reject_explanation: 'this is not a solidarity economy enterprise' | |
| 51 | + assert_redirected_to action: 'view_processed', id: code | |
| 60 | 52 | end |
| 61 | 53 | |
| 62 | 54 | should 'require the user to fill in the explanation for an rejection' do |
| 63 | - validation = CreateEnterprise.new | |
| 64 | - validation.stubs(:environment).returns(Environment.default) | |
| 65 | - @org.expects(:find_pending_validation).with('kakakaka').returns(validation) | |
| 66 | - | |
| 67 | - # FIXME: this is not working, but should. Anyway the assert_response and | |
| 68 | - # assert_template below in some test some things we need. But the | |
| 69 | - # expectation below must be put to work. | |
| 70 | - # | |
| 71 | - #validation.expects(:reject).raises(ActiveRecord::RecordInvalid) | |
| 55 | + code = 'kakakaka' | |
| 56 | + @org.validations.create! code: code, name: 'test2', identifier: 'test2', requestor: @user, target: @org | |
| 72 | 57 | |
| 73 | - post :reject, :profile => 'myorg', :id => 'kakakaka' | |
| 58 | + post :reject, profile: 'myorg', id: code | |
| 74 | 59 | assert_response :success |
| 75 | 60 | assert_template 'details' |
| 76 | 61 | end |
| 77 | 62 | |
| 78 | 63 | should 'list validations already processed' do |
| 79 | - processed_validations = [CreateEnterprise.new] | |
| 80 | - @org.expects(:processed_validations).returns(processed_validations) | |
| 81 | - | |
| 82 | - get :list_processed, :profile => 'myorg' | |
| 64 | + v = @org.validations.create! code: 'kakakaka', name: 'test2', identifier: 'test2', requestor: @user, target: @org | |
| 65 | + v.perform | |
| 83 | 66 | |
| 84 | - assert_equal processed_validations, assigns(:processed_validations) | |
| 67 | + get :list_processed, profile: 'myorg' | |
| 68 | + | |
| 69 | + assert_equal @org.processed_validations, assigns(:processed_validations) | |
| 85 | 70 | |
| 86 | 71 | assert_response :success |
| 87 | 72 | assert_template 'list_processed' |
| 88 | 73 | end |
| 89 | - | |
| 74 | + | |
| 90 | 75 | should 'be able to display a validation that was already processed' do |
| 91 | - validation = CreateEnterprise.new | |
| 92 | - @org.expects(:find_processed_validation).with('kakakaka').returns(validation) | |
| 93 | - get :view_processed, :profile => 'myorg', :id => 'kakakaka' | |
| 94 | - assert_same validation, assigns(:processed) | |
| 76 | + code = 'kakakaka' | |
| 77 | + v = @org.validations.create! code: code, name: 'test2', identifier: 'test2', requestor: @user, target: @org | |
| 78 | + v.perform | |
| 79 | + | |
| 80 | + get :view_processed, profile: 'myorg', id: code | |
| 81 | + assert_same @org.processed_validations.first, assigns(:processed) | |
| 95 | 82 | end |
| 96 | 83 | |
| 97 | 84 | should 'display a form for editing the validation info' do |
| 98 | - info = ValidationInfo.new(:validation_methodology => 'none') | |
| 99 | - @org.expects(:validation_info).returns(info) | |
| 100 | - get :edit_validation_info, :profile => 'myorg' | |
| 85 | + info = @org.validation_info = ValidationInfo.create! validation_methodology: 'none', organization: @org | |
| 86 | + get :edit_validation_info, profile: 'myorg' | |
| 101 | 87 | assert_response :success |
| 102 | 88 | assert_equal info, assigns(:info) |
| 103 | 89 | end |
| 104 | 90 | |
| 105 | 91 | should 'save an alteration of the validation info' do |
| 106 | - info = ValidationInfo.new(:validation_methodology => 'none') | |
| 107 | - @org.expects(:validation_info).returns(info) | |
| 108 | - post :edit_validation_info, :profile => 'myorg', :info => {:validation_methodology => 'new methodology'} | |
| 109 | - | |
| 92 | + info = @org.validation_info = ValidationInfo.create! validation_methodology: 'none', organization: @org | |
| 93 | + post :edit_validation_info, profile: 'myorg', info: {validation_methodology: 'new methodology'} | |
| 94 | + | |
| 110 | 95 | assert_response :redirect |
| 111 | - assert_redirected_to :action => 'index' | |
| 112 | - assert_equal info, assigns(:info) | |
| 96 | + assert_redirected_to action: 'index' | |
| 97 | + info.reload | |
| 98 | + assert_equal info.reload, assigns(:info) | |
| 113 | 99 | end |
| 114 | 100 | |
| 115 | 101 | should 'not save an empaty validation mthodology' do |
| 116 | - info = ValidationInfo.new(:validation_methodology => 'none') | |
| 117 | - @org.expects(:validation_info).returns(info) | |
| 118 | - post :edit_validation_info, :profile => 'myorg', :info => {:validation_methodology => ''} | |
| 119 | - | |
| 102 | + info = @org.validation_info = ValidationInfo.create! validation_methodology: 'none', organization: @org | |
| 103 | + post :edit_validation_info, profile: 'myorg', info: {validation_methodology: ''} | |
| 104 | + | |
| 120 | 105 | assert_response :success |
| 121 | 106 | assert_equal info, assigns(:info) |
| 122 | 107 | end |
| 123 | 108 | |
| 124 | 109 | should 'filter html from methodology of the validation info' do |
| 125 | - info = ValidationInfo.new(:validation_methodology => 'none') | |
| 126 | - @org.expects(:validation_info).returns(info) | |
| 127 | - post :edit_validation_info, :profile => 'myorg', :info => {:validation_methodology => 'new <b>methodology</b>'} | |
| 110 | + @org.validation_info = ValidationInfo.create! validation_methodology: 'none', organization: @org | |
| 111 | + post :edit_validation_info, profile: 'myorg', info: {validation_methodology: 'new <b>methodology</b>'} | |
| 128 | 112 | assert_sanitized assigns(:info).validation_methodology |
| 129 | 113 | end |
| 130 | 114 | |
| 131 | 115 | should 'filter html from restrictions of the validation info' do |
| 132 | - info = ValidationInfo.new(:validation_methodology => 'none') | |
| 133 | - @org.expects(:validation_info).returns(info) | |
| 134 | - post :edit_validation_info, :profile => 'myorg', :info => {:restrictions => 'new <b>methodology</b>'} | |
| 116 | + @org.validation_info = ValidationInfo.create! validation_methodology: 'none', organization: @org | |
| 117 | + post :edit_validation_info, profile: 'myorg', info: {restrictions: 'new <b>methodology</b>'} | |
| 135 | 118 | assert_sanitized assigns(:info).restrictions |
| 136 | 119 | end |
| 137 | 120 | ... | ... |
test/integration/routing_test.rb
| ... | ... | @@ -27,6 +27,10 @@ class RoutingTest < ActionController::IntegrationTest |
| 27 | 27 | assert_routing('/account/new_password/90dfhga7sadgd0as6saas', :controller => 'account', :action => 'new_password', :code => '90dfhga7sadgd0as6saas') |
| 28 | 28 | end |
| 29 | 29 | |
| 30 | + should 'ignore case for profiles' do | |
| 31 | + assert_routing '/myprofile/ZE/cms', profile: 'ZE', controller: 'cms', action: 'index' | |
| 32 | + end | |
| 33 | + | |
| 30 | 34 | def test_cms |
| 31 | 35 | assert_routing('/myprofile/ze/cms', :profile => 'ze', :controller => 'cms', :action => 'index') |
| 32 | 36 | end | ... | ... |