From: Tom Hughes Date: Wed, 13 Nov 2024 17:00:06 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/5315' X-Git-Tag: live~198 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/349f5e0655f5026db54e4795e48a688eb2b7a654?hp=c3b17aa506d6d7347f438de73de746d087cd0d19 Merge remote-tracking branch 'upstream/pull/5315' --- diff --git a/.github/workflows/danger.yml b/.github/workflows/danger.yml index 8999fca5b..67a676d87 100644 --- a/.github/workflows/danger.yml +++ b/.github/workflows/danger.yml @@ -22,6 +22,12 @@ jobs: ruby-version: 3.1 rubygems: 3.4.10 bundler-cache: true + - name: Create base branch + run: | + git fetch ${{ github.event.pull_request.base.repo.clone_url }} ${{ github.event.pull_request.base.ref }}:danger_base + - name: Create head branch + run: | + git fetch ${{ github.event.pull_request.head.repo.clone_url }} ${{ github.event.pull_request.head.ref }}:danger_head - name: Danger env: DANGER_GITHUB_BEARER_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/Gemfile b/Gemfile index b83011542..277346b83 100644 --- a/Gemfile +++ b/Gemfile @@ -148,7 +148,7 @@ gem "zeitwerk", "< 2.7" group :development do gem "better_errors" gem "binding_of_caller" - gem "danger", :github => "tomhughes/danger", :ref => "pull-request-target" + gem "danger" gem "danger-auto_label" gem "debug_inspector" gem "i18n-tasks" diff --git a/Gemfile.lock b/Gemfile.lock index 86a69b9f5..5d15e550c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,23 +1,3 @@ -GIT - remote: https://github.com/tomhughes/danger.git - revision: a265cf74d2f464a25796b48d95697f5eed553454 - ref: pull-request-target - specs: - danger (9.5.1) - base64 (~> 0.2) - claide (~> 1.0) - claide-plugins (>= 0.9.2) - colored2 (~> 3.1) - cork (~> 0.1) - faraday (>= 0.9.0, < 3.0) - faraday-http-cache (~> 2.0) - git (~> 1.13) - kramdown (~> 2.3) - kramdown-parser-gfm (~> 1.0) - octokit (>= 4.0) - pstore (~> 0.1) - terminal-table (>= 1, < 4) - GEM remote: https://rubygems.org/ specs: @@ -190,6 +170,20 @@ GEM rexml crass (1.0.6) dalli (3.2.8) + danger (9.5.1) + base64 (~> 0.2) + claide (~> 1.0) + claide-plugins (>= 0.9.2) + colored2 (~> 3.1) + cork (~> 0.1) + faraday (>= 0.9.0, < 3.0) + faraday-http-cache (~> 2.0) + git (~> 1.13) + kramdown (~> 2.3) + kramdown-parser-gfm (~> 1.0) + octokit (>= 4.0) + pstore (~> 0.1) + terminal-table (>= 1, < 4) danger-auto_label (1.3.1) danger-plugin-api (~> 1.0) danger-plugin-api (1.0.0) @@ -690,7 +684,7 @@ DEPENDENCIES config connection_pool dalli - danger! + danger danger-auto_label dartsass-sprockets debug diff --git a/app/controllers/sessions_controller.rb b/app/controllers/sessions_controller.rb index a3e6f42f0..abbaf5e92 100644 --- a/app/controllers/sessions_controller.rb +++ b/app/controllers/sessions_controller.rb @@ -20,7 +20,7 @@ class SessionsController < ApplicationController end def create - session[:remember_me] ||= params[:remember_me] + session[:remember_me] = params[:remember_me] == "yes" referer = safe_referer(params[:referer]) if params[:referer] diff --git a/app/controllers/user_blocks_controller.rb b/app/controllers/user_blocks_controller.rb index c42c2659d..d427e5fa5 100644 --- a/app/controllers/user_blocks_controller.rb +++ b/app/controllers/user_blocks_controller.rb @@ -29,7 +29,7 @@ class UserBlocksController < ApplicationController end def show - if current_user && current_user == @user_block.user + if current_user && current_user == @user_block.user && !@user_block.deactivates_at @user_block.needs_view = false @user_block.deactivates_at = [@user_block.ends_at, Time.now.utc].max @user_block.save! diff --git a/app/views/sessions/new.html.erb b/app/views/sessions/new.html.erb index 9d05d4af8..c2d96b63c 100644 --- a/app/views/sessions/new.html.erb +++ b/app/views/sessions/new.html.erb @@ -40,7 +40,7 @@ <%= f.password_field :password, :autocomplete => "on", :tabindex => 2, :value => "", :skip_label => true %> <%= f.form_group do %> - <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "yes") }, "yes" %> + <%= f.check_box :remember_me, { :label => t(".remember"), :tabindex => 3, :checked => (params[:remember_me] == "true") }, "yes" %> <% end %>
diff --git a/test/controllers/sessions_controller_test.rb b/test/controllers/sessions_controller_test.rb index 914a4ab56..f490b748c 100644 --- a/test/controllers/sessions_controller_test.rb +++ b/test/controllers/sessions_controller_test.rb @@ -54,6 +54,24 @@ class SessionsControllerTest < ActionDispatch::IntegrationTest assert_redirected_to root_path end + def test_login_remembered + user = create(:user) + + post login_path, :params => { :username => user.display_name, :password => "test", :remember_me => "yes" } + assert_redirected_to root_path + + assert_equal 28 * 86400, session[:_remember_for] + end + + def test_login_not_remembered + user = create(:user) + + post login_path, :params => { :username => user.display_name, :password => "test", :remember_me => "0" } + assert_redirected_to root_path + + assert_nil session[:_remember_for] + end + def test_logout_without_referer post logout_path assert_redirected_to root_path diff --git a/test/controllers/user_blocks_controller_test.rb b/test/controllers/user_blocks_controller_test.rb index 1d89476ec..2ab90364e 100644 --- a/test/controllers/user_blocks_controller_test.rb +++ b/test/controllers/user_blocks_controller_test.rb @@ -147,14 +147,72 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest assert_select "h1 a[href='#{user_path active_block.user}']", :text => active_block.user.display_name assert_select "h1 a[href='#{user_path active_block.creator}']", :text => active_block.creator.display_name assert UserBlock.find(active_block.id).needs_view + end - # Login as the blocked user - session_for(active_block.user) + ## + # test clearing needs_view by showing a zero-hour block to the blocked user + def test_show_sets_deactivates_at_for_zero_hour_block + user = create(:user) + session_for(user) - # Now viewing it should mark it as seen - get user_block_path(:id => active_block) - assert_response :success - assert_not UserBlock.find(active_block.id).needs_view + freeze_time do + block = create(:user_block, :needs_view, :zero_hour, :user => user) + assert block.needs_view + assert_nil block.deactivates_at + + travel 1.hour + + get user_block_path(block) + assert_response :success + block.reload + assert_not block.needs_view + assert_equal Time.now.utc, block.deactivates_at + + travel 1.hour + + get user_block_path(block) + assert_response :success + block.reload + assert_not block.needs_view + assert_equal Time.now.utc - 1.hour, block.deactivates_at + end + end + + ## + # test clearing needs_view by showing a timed block to the blocked user + def test_show_sets_deactivates_at_for_timed_block + user = create(:user) + session_for(user) + + freeze_time do + block = create(:user_block, :needs_view, :created_at => Time.now.utc, :ends_at => Time.now.utc + 24.hours, :user => user) + assert block.needs_view + assert_nil block.deactivates_at + + travel 1.hour + + get user_block_path(block) + assert_response :success + block.reload + assert_not block.needs_view + assert_equal Time.now.utc + 23.hours, block.deactivates_at + + travel 1.hour + + get user_block_path(block) + assert_response :success + block.reload + assert_not block.needs_view + assert_equal Time.now.utc + 22.hours, block.deactivates_at + + travel 24.hours + + get user_block_path(block) + assert_response :success + block.reload + assert_not block.needs_view + assert_equal Time.now.utc - 2.hours, block.deactivates_at + end end ##