+++ /dev/null
-<% @title = t(".title",
- :block_on => @user_block.user.display_name,
- :block_by => @user_block.creator.display_name) %>
-
-<% content_for :heading do %>
- <h1><%= t(".heading_html",
- :block_on => link_to(@user_block.user.display_name, @user_block.user),
- :block_by => link_to(@user_block.creator.display_name, @user_block.creator)) %></h1>
-<% end %>
-
-<% if @user_block.ends_at > Time.now %>
- <p>
- <%= t(".time_future_html", :time => friendly_date(@user_block.ends_at)) %>
- </p>
-
- <%= bootstrap_form_for :revoke, :url => { :action => "revoke" } do |f| %>
- <div class="mb-3">
- <div class="form-check">
- <%= check_box_tag "confirm", "yes", false, { :class => "form-check-input" } %>
- <%= label_tag "confirm", t(".confirm"), { :class => "form-check-label" } %>
- </div>
- </div>
-
- <%= f.submit t(".revoke"), :class => "btn btn-danger" %>
- <% end %>
-
-<% else %>
- <p>
- <%= t(".past_html", :time => friendly_date_ago(@user_block.ends_at)) %>
- </p>
-<% end %>
heading: "List of user blocks"
empty: "No blocks have been made yet."
revoke:
- title: "Revoking block on %{block_on}"
- heading_html: "Revoking block on %{block_on} by %{block_by}"
- time_future_html: "This block will end in %{time}."
- past_html: "This block ended %{time} and cannot be revoked now."
- confirm: "Are you sure you wish to revoke this block?"
- revoke: "Revoke!"
flash: "This block has been revoked."
revoke_all:
title: "Revoking all blocks on %{block_on}"
get "/user/:display_name/blocks_by" => "user_blocks#blocks_by", :as => "user_blocks_by"
get "/blocks/new/:display_name" => "user_blocks#new", :as => "new_user_block"
resources :user_blocks, :except => :new
- match "/blocks/:id/revoke" => "user_blocks#revoke", :via => [:get, :post], :as => "revoke_user_block"
+ post "/blocks/:id/revoke" => "user_blocks#revoke", :as => "revoke_user_block"
match "/user/:display_name/blocks/revoke_all" => "user_blocks#revoke_all", :via => [:get, :post], :as => "revoke_all_user_blocks"
# issues and reports
{ :path => "/user_blocks/1", :method => :delete },
{ :controller => "user_blocks", :action => "destroy", :id => "1" }
)
- assert_routing(
- { :path => "/blocks/1/revoke", :method => :get },
- { :controller => "user_blocks", :action => "revoke", :id => "1" }
- )
assert_routing(
{ :path => "/blocks/1/revoke", :method => :post },
{ :controller => "user_blocks", :action => "revoke", :id => "1" }
def test_revoke
active_block = create(:user_block)
- # Check that the block revoke page requires us to login
- get revoke_user_block_path(:id => active_block)
- assert_redirected_to login_path(:referer => revoke_user_block_path(:id => active_block))
-
- # Login as a normal user
- session_for(create(:user))
-
- # Check that normal users can't load the block revoke page
- get revoke_user_block_path(:id => active_block)
- assert_redirected_to :controller => "errors", :action => "forbidden"
-
# Login as a moderator
session_for(create(:moderator_user))
- # Check that the block revoke page loads for moderators
- get revoke_user_block_path(:id => active_block)
- assert_response :success
- assert_template "revoke"
- assert_select "h1 a[href='#{user_path active_block.user}']", :text => active_block.user.display_name
- assert_select "form", :count => 1 do
- assert_select "input#confirm[type='checkbox']", :count => 1
- assert_select "input[type='submit'][value='Revoke!']", :count => 1
- end
-
- # Check that revoking a block using GET should fail
- get revoke_user_block_path(:id => active_block, :confirm => true)
- assert_response :success
- assert_template "revoke"
- b = UserBlock.find(active_block.id)
- assert_operator b.ends_at - Time.now.utc, :>, 100
-
# Check that revoking a block works using POST
post revoke_user_block_path(:id => active_block, :confirm => true)
assert_redirected_to user_block_path(active_block)
b = UserBlock.find(active_block.id)
assert_in_delta Time.now.utc, b.ends_at, 1
-
- # We should get an error if the block doesn't exist
- get revoke_user_block_path(:id => 99999)
- assert_response :not_found
- assert_template "not_found"
- assert_select "p", "Sorry, the user block with ID 99999 could not be found."
end
##