Commit 35df1e23fe4c45bc1f34999005e8266b2cac20a1
Exists in
staging
and in
1 other branch
Merge branch 'master' into staging
Showing
12 changed files
with
41 additions
and
73 deletions
Show diff stats
app/controllers/my_profile/profile_roles_controller.rb
| 1 | class ProfileRolesController < MyProfileController | 1 | class ProfileRolesController < MyProfileController |
| 2 | 2 | ||
| 3 | protect 'manage_custom_roles', :profile | 3 | protect 'manage_custom_roles', :profile |
| 4 | + before_filter :ensure_organization | ||
| 4 | 5 | ||
| 5 | def index | 6 | def index |
| 6 | @roles = profile.custom_roles | 7 | @roles = profile.custom_roles |
| @@ -113,4 +114,8 @@ class ProfileRolesController < MyProfileController | @@ -113,4 +114,8 @@ class ProfileRolesController < MyProfileController | ||
| 113 | end | 114 | end |
| 114 | end | 115 | end |
| 115 | 116 | ||
| 117 | + def ensure_organization | ||
| 118 | + render_not_found unless profile.organization? | ||
| 119 | + end | ||
| 120 | + | ||
| 116 | end | 121 | end |
features/step_definitions/web_steps.rb
| @@ -315,3 +315,8 @@ When /^(?:|I )follow exact "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector| | @@ -315,3 +315,8 @@ When /^(?:|I )follow exact "([^"]*)"(?: within "([^"]*)")?$/ do |link, selector| | ||
| 315 | find("a", :text => /\A#{link}\z/).click | 315 | find("a", :text => /\A#{link}\z/).click |
| 316 | end | 316 | end |
| 317 | end | 317 | end |
| 318 | + | ||
| 319 | +When /^(?:|I )wait ([^ ]+) seconds?(?:| .+)$/ do |seconds| | ||
| 320 | + sleep seconds.to_f | ||
| 321 | +end | ||
| 322 | + |
features/template_block_management.feature
| @@ -1,64 +0,0 @@ | @@ -1,64 +0,0 @@ | ||
| 1 | -Feature: user template | ||
| 2 | - As an user | ||
| 3 | - I want to create templates with mirror blocks | ||
| 4 | - In order to keep these blocks always updated | ||
| 5 | - | ||
| 6 | - Background: | ||
| 7 | - Given the following users | ||
| 8 | - | login | name | is_template | | ||
| 9 | - | person | person | true | | ||
| 10 | - And the following blocks | ||
| 11 | - | owner | type | mirror | | ||
| 12 | - | person | ArticleBlock | true | | ||
| 13 | - | person | RawHTMLBlock | false | | ||
| 14 | - And I go to /account/signup | ||
| 15 | - And I fill in "Username" with "mario" | ||
| 16 | - And I fill in "Password" with "123456" | ||
| 17 | - And I fill in "Password confirmation" with "123456" | ||
| 18 | - And I fill in "e-Mail" with "mario@mario.com" | ||
| 19 | - And I fill in "Full name" with "Mario" | ||
| 20 | - And wait for the captcha signup time | ||
| 21 | - And I press "Create my account" | ||
| 22 | - And I am logged in as admin | ||
| 23 | - | ||
| 24 | - @selenium | ||
| 25 | - Scenario: The block Article name is changed | ||
| 26 | - Given I am on person's control panel | ||
| 27 | - And I follow "Edit sideboxes" | ||
| 28 | - And display ".button-bar" | ||
| 29 | - And I follow "Edit" within ".block-outer .article-block" | ||
| 30 | - And I fill in "Custom title for this block:" with "Mirror" | ||
| 31 | - And I press "Save" | ||
| 32 | - And I go to /profile/mario | ||
| 33 | - Then I should see "Mirror" | ||
| 34 | - | ||
| 35 | - @selenium | ||
| 36 | - Scenario: The block LinkList is changed but the user's block doesnt change | ||
| 37 | - Given I am on person's control panel | ||
| 38 | - And I follow "Edit sideboxes" | ||
| 39 | - And display ".button-bar" | ||
| 40 | - And I follow "Edit" within ".block-outer .raw-html-block" | ||
| 41 | - And I fill in "Custom title for this block:" with "Raw HTML Block" | ||
| 42 | - And I press "Save" | ||
| 43 | - And I go to /profile/mario | ||
| 44 | - Then I should not see "Raw HTML Block" | ||
| 45 | - | ||
| 46 | - @selenium | ||
| 47 | - Scenario: The block Article cannot move or modify | ||
| 48 | - Given I am on person's control panel | ||
| 49 | - And I follow "Edit sideboxes" | ||
| 50 | - And display ".button-bar" | ||
| 51 | - And I follow "Edit" within ".block-outer .article-block" | ||
| 52 | - And I select "Cannot be moved" from "Move options:" | ||
| 53 | - And I select "Cannot be modified" from "Edit options:" | ||
| 54 | - And I press "Save" | ||
| 55 | - And I follow "Logout" | ||
| 56 | - And Mario's account is activated | ||
| 57 | - And I follow "Login" | ||
| 58 | - And I fill in "Username / Email" with "mario" | ||
| 59 | - And I fill in "Password" with "123456" | ||
| 60 | - And I press "Log in" | ||
| 61 | - And I go to /myprofile/mario | ||
| 62 | - And I follow "Edit sideboxes" | ||
| 63 | - And display ".button-bar" | ||
| 64 | - Then I should not see "Edit" within ".block-outer .article-block" |
lib/tasks/gettext.rake
| @@ -107,7 +107,7 @@ file 'tmp/makemo.stamp' do |t| | @@ -107,7 +107,7 @@ file 'tmp/makemo.stamp' do |t| | ||
| 107 | end | 107 | end |
| 108 | 108 | ||
| 109 | task :updatepo => 'gettext:po:update' do | 109 | task :updatepo => 'gettext:po:update' do |
| 110 | - Dir.glob('**/*.po').each do |po| | 110 | + Dir.glob('{po,plugins}/**/*.po').each do |po| |
| 111 | sh "cp #{po} #{po}.tmp && msguniq -o #{po} #{po}.tmp && rm -f #{po}.tmp" | 111 | sh "cp #{po} #{po}.tmp && msguniq -o #{po} #{po}.tmp && rm -f #{po}.tmp" |
| 112 | end | 112 | end |
| 113 | end | 113 | end |
lib/tasks/selenium.rake
| 1 | desc 'Runs Seleniun acceptance tests' | 1 | desc 'Runs Seleniun acceptance tests' |
| 2 | task :selenium do | 2 | task :selenium do |
| 3 | + puts "Firefox version = #{`firefox --version`}" | ||
| 3 | sh "xvfb-run -a cucumber -p selenium --format #{ENV['CUCUMBER_FORMAT'] || 'progress'}" | 4 | sh "xvfb-run -a cucumber -p selenium --format #{ENV['CUCUMBER_FORMAT'] || 'progress'}" |
| 4 | end | 5 | end |
plugins/people_block/lib/ext/person.rb
| @@ -3,7 +3,7 @@ require_dependency 'person' | @@ -3,7 +3,7 @@ require_dependency 'person' | ||
| 3 | class Person | 3 | class Person |
| 4 | 4 | ||
| 5 | scope :with_role, -> role_id { | 5 | scope :with_role, -> role_id { |
| 6 | - select('DISTINCT profiles.*').joins(:role_assignments). | 6 | + joins(:role_assignments). |
| 7 | where("role_assignments.role_id = #{role_id}") | 7 | where("role_assignments.role_id = #{role_id}") |
| 8 | } | 8 | } |
| 9 | 9 |
plugins/people_block/test/unit/members_block_test.rb
| @@ -240,6 +240,10 @@ class MembersBlockTest < ActionView::TestCase | @@ -240,6 +240,10 @@ class MembersBlockTest < ActionView::TestCase | ||
| 240 | 240 | ||
| 241 | assert_includes profiles, profile1 | 241 | assert_includes profiles, profile1 |
| 242 | assert_not_includes profiles, profile2 | 242 | assert_not_includes profiles, profile2 |
| 243 | + | ||
| 244 | + profile_list = block.profile_list | ||
| 245 | + assert_includes profile_list, profile1 | ||
| 246 | + assert_not_includes profile_list, profile2 | ||
| 243 | end | 247 | end |
| 244 | 248 | ||
| 245 | should 'list only profiles with member role' do | 249 | should 'list only profiles with member role' do |
| @@ -261,6 +265,10 @@ class MembersBlockTest < ActionView::TestCase | @@ -261,6 +265,10 @@ class MembersBlockTest < ActionView::TestCase | ||
| 261 | 265 | ||
| 262 | assert_not_includes profiles, profile1 | 266 | assert_not_includes profiles, profile1 |
| 263 | assert_includes profiles, profile2 | 267 | assert_includes profiles, profile2 |
| 268 | + | ||
| 269 | + profile_list = block.profile_list | ||
| 270 | + assert_not_includes profile_list, profile1 | ||
| 271 | + assert_includes profile_list, profile2 | ||
| 264 | end | 272 | end |
| 265 | 273 | ||
| 266 | should 'list available roles' do | 274 | should 'list available roles' do |
plugins/shopping_cart/features/delivery_admin.feature
| @@ -62,7 +62,7 @@ Feature: delivery administration | @@ -62,7 +62,7 @@ Feature: delivery administration | ||
| 62 | Then I should see "Bike" | 62 | Then I should see "Bike" |
| 63 | And I follow "Remove" within ".delivery-method" | 63 | And I follow "Remove" within ".delivery-method" |
| 64 | When I confirm the browser dialog | 64 | When I confirm the browser dialog |
| 65 | - Then I should see "Bike" | 65 | + Then I should not see "Bike" |
| 66 | 66 | ||
| 67 | @selenium | 67 | @selenium |
| 68 | Scenario: edit delivery | 68 | Scenario: edit delivery |
plugins/shopping_cart/features/delivery_client.feature
| @@ -35,9 +35,10 @@ Feature: delivery client | @@ -35,9 +35,10 @@ Feature: delivery client | ||
| 35 | Given I follow "Add to basket" | 35 | Given I follow "Add to basket" |
| 36 | And I follow "Add to basket" | 36 | And I follow "Add to basket" |
| 37 | And I should see "Show basket" | 37 | And I should see "Show basket" |
| 38 | - And I follow "Show basket" | 38 | + And I follow "Show " |
| 39 | + And I wait 1 second for animations | ||
| 39 | And I follow "Shopping checkout" | 40 | And I follow "Shopping checkout" |
| 40 | - And I fill in "order_consumer_data_contact_phone" with "123456789" | 41 | + And I fill in "Contact phone" with "123456789" |
| 41 | When I select "Bike ($8.00)" from "Option" | 42 | When I select "Bike ($8.00)" from "Option" |
| 42 | Then I should see "My good old bike." within ".instructions" | 43 | Then I should see "My good old bike." within ".instructions" |
| 43 | And I should see "Address" | 44 | And I should see "Address" |
| @@ -50,8 +51,9 @@ Feature: delivery client | @@ -50,8 +51,9 @@ Feature: delivery client | ||
| 50 | And I follow "Add to basket" | 51 | And I follow "Add to basket" |
| 51 | And I should see "Show basket" | 52 | And I should see "Show basket" |
| 52 | And I follow "Show basket" | 53 | And I follow "Show basket" |
| 54 | + And I wait 1 second for animations | ||
| 53 | And I follow "Shopping checkout" | 55 | And I follow "Shopping checkout" |
| 54 | - And I fill in "order_consumer_data_contact_phone" with "123456789" | 56 | + And I fill in "Contact phone" with "123456789" |
| 55 | When I select "Bar" from "Option" | 57 | When I select "Bar" from "Option" |
| 56 | Then I should see "Come to my bar and drink it!" within ".instructions" | 58 | Then I should see "Come to my bar and drink it!" within ".instructions" |
| 57 | And I should not see "Address" | 59 | And I should not see "Address" |
| @@ -68,8 +70,9 @@ Feature: delivery client | @@ -68,8 +70,9 @@ Feature: delivery client | ||
| 68 | And I follow "Add to basket" | 70 | And I follow "Add to basket" |
| 69 | And I should see "Show basket" | 71 | And I should see "Show basket" |
| 70 | And I follow "Show basket" | 72 | And I follow "Show basket" |
| 73 | + And I wait 1 second for animations | ||
| 71 | And I follow "Shopping checkout" | 74 | And I follow "Shopping checkout" |
| 72 | - And I fill in "order_consumer_data_contact_phone" with "123456789" | 75 | + And I fill in "Contact phone" with "123456789" |
| 73 | When I select "Bike ($8.00)" from "Option" | 76 | When I select "Bike ($8.00)" from "Option" |
| 74 | Then I should see "My good old bike." within ".instructions" | 77 | Then I should see "My good old bike." within ".instructions" |
| 75 | And I should see "Address" | 78 | And I should see "Address" |
plugins/shopping_cart/features/purchases.feature
| @@ -121,11 +121,14 @@ Feature: purchases | @@ -121,11 +121,14 @@ Feature: purchases | ||
| 121 | | pickup | Bar | Come to my bar and drink it! | 0.00 | 0.00 | | 121 | | pickup | Bar | Come to my bar and drink it! | 0.00 | 0.00 | |
| 122 | And I am on moes-tavern's products page | 122 | And I am on moes-tavern's products page |
| 123 | And I follow "Add to basket" | 123 | And I follow "Add to basket" |
| 124 | + And I wait 0.2 seconds to finish the request | ||
| 124 | And I follow "Add to basket" | 125 | And I follow "Add to basket" |
| 126 | + And I wait 0.2 seconds to finish the request | ||
| 125 | And I follow "Add to basket" | 127 | And I follow "Add to basket" |
| 126 | And I follow "Show basket" | 128 | And I follow "Show basket" |
| 129 | + And I wait 1 second for animations | ||
| 127 | And I follow "Shopping checkout" | 130 | And I follow "Shopping checkout" |
| 128 | - And I fill in "order_consumer_data_contact_phone" with "123456789" | 131 | + And I fill in "Contact phone" with "123456789" |
| 129 | And I select "Bike ($8.00)" from "Option" | 132 | And I select "Bike ($8.00)" from "Option" |
| 130 | And I press "Send buy request" | 133 | And I press "Send buy request" |
| 131 | And I go to homer's control panel | 134 | And I go to homer's control panel |
plugins/spaminator/test/unit/spaminator_plugin/report_test.rb
| @@ -21,7 +21,6 @@ class SpaminatorPlugin::ReportTest < ActiveSupport::TestCase | @@ -21,7 +21,6 @@ class SpaminatorPlugin::ReportTest < ActiveSupport::TestCase | ||
| 21 | 21 | ||
| 22 | reports = SpaminatorPlugin::Report.from_environment(environment) | 22 | reports = SpaminatorPlugin::Report.from_environment(environment) |
| 23 | 23 | ||
| 24 | - assert_equal ActiveRecord::Relation, reports.class | ||
| 25 | assert_includes reports, r1 | 24 | assert_includes reports, r1 |
| 26 | assert_includes reports, r2 | 25 | assert_includes reports, r2 |
| 27 | assert_includes reports, r3 | 26 | assert_includes reports, r3 |
test/functional/profile_roles_controller_test.rb
| @@ -103,4 +103,12 @@ class ProfileRolesControllerTest < ActionController::TestCase | @@ -103,4 +103,12 @@ class ProfileRolesControllerTest < ActionController::TestCase | ||
| 103 | assert_not_includes community.members_by_role(role), moderator | 103 | assert_not_includes community.members_by_role(role), moderator |
| 104 | assert_not_includes community.members_by_role(moderator_role), moderator | 104 | assert_not_includes community.members_by_role(moderator_role), moderator |
| 105 | end | 105 | end |
| 106 | + | ||
| 107 | + should 'avoid access with person profile' do | ||
| 108 | + person = create_user('sample_user').person | ||
| 109 | + login_as person.identifier | ||
| 110 | + get :index , :profile => person.identifier | ||
| 111 | + | ||
| 112 | + assert_response 404 | ||
| 113 | + end | ||
| 106 | end | 114 | end |