Minitest/MultipleAssertions:
Max: 81
-# Offense count: 26
-# Cop supports --auto-correct.
-Minitest/TestMethodName:
- Exclude:
- - 'test/abilities/api_capability_test.rb'
- - 'test/controllers/api/nodes_controller_test.rb'
- - 'test/controllers/api/old_nodes_controller_test.rb'
- - 'test/controllers/api/relations_controller_test.rb'
- - 'test/controllers/api/ways_controller_test.rb'
- - 'test/helpers/browse_helper_test.rb'
- - 'test/integration/client_applications_test.rb'
- - 'test/integration/short_links_test.rb'
- - 'test/integration/user_blocks_test.rb'
- - 'test/integration/user_creation_test.rb'
-
# Offense count: 6
Naming/AccessorMethodName:
Exclude:
Exclude:
- 'app/controllers/users_controller.rb'
- 'app/helpers/application_helper.rb'
- - 'app/helpers/changesets_helper.rb'
- - 'app/helpers/geocoder_helper.rb'
- - 'app/helpers/user_blocks_helper.rb'
- 'lib/rich_text.rb'
- 'test/helpers/application_helper_test.rb'
else
action = :closed
time = time_ago_in_words(changeset.closed_at, :scope => :'datetime.distance_in_words_ago')
- title = "#{t('browse.created')}: #{l(changeset.created_at)} #{t('browse.closed')}: #{l(changeset.closed_at)}".html_safe
+ title = safe_join([t("browse.created"), ": ", l(changeset.created_at), " ".html_safe, t("browse.closed"), ": ", l(changeset.closed_at)])
end
if params.key?(:display_name)
html_options[:data][key.to_s.tr("_", "-")] = value
end
- html = ""
+ html = []
html << result[:prefix] if result[:prefix]
html << " " if result[:prefix] && result[:name]
html << link_to(result[:name], url, html_options) if result[:name]
html << " " if result[:suffix] && result[:name]
html << result[:suffix] if result[:suffix]
- html.html_safe
+ safe_join(html)
end
def describe_location(lat, lon, zoom = nil, language = nil)
module UserBlocksHelper
+ include ActionView::Helpers::TranslationHelper
+
##
# returns a translated string representing the status of the
# user block (i.e: whether it's active, what the expiry time is)
# if the block hasn't expired yet show the date, if the user just needs to login show that
if block.needs_view?
if block.ends_at > Time.now.getutc
- I18n.t("user_blocks.helper.time_future_and_until_login", :time => friendly_date(block.ends_at)).html_safe
+ t("user_blocks.helper.time_future_and_until_login_html", :time => friendly_date(block.ends_at))
else
- I18n.t("user_blocks.helper.until_login")
+ t("user_blocks.helper.until_login")
end
else
- I18n.t("user_blocks.helper.time_future", :time => friendly_date(block.ends_at)).html_safe
+ t("user_blocks.helper.time_future_html", :time => friendly_date(block.ends_at))
end
else
# the max of the last update time or the ends_at time is when this block finished
# either because the user viewed the block (updated_at) or it expired or was
# revoked (ends_at)
last_time = [block.ends_at, block.updated_at].max
- I18n.t("user_blocks.helper.time_past", :time => friendly_date_ago(last_time)).html_safe
+ t("user_blocks.helper.time_past_html", :time => friendly_date_ago(last_time))
end
end
def block_duration_in_words(duration)
parts = ActiveSupport::Duration.build(duration).parts
if duration < 1.day
- I18n.t("user_blocks.helper.block_duration.hours", :count => parts[:hours])
+ t("user_blocks.helper.block_duration.hours", :count => parts[:hours])
elsif duration < 1.week
- I18n.t("user_blocks.helper.block_duration.days", :count => parts[:days])
+ t("user_blocks.helper.block_duration.days", :count => parts[:days])
elsif duration < 1.month
- I18n.t("user_blocks.helper.block_duration.weeks", :count => parts[:weeks])
+ t("user_blocks.helper.block_duration.weeks", :count => parts[:weeks])
elsif duration < 1.year
- I18n.t("user_blocks.helper.block_duration.months", :count => parts[:months])
+ t("user_blocks.helper.block_duration.months", :count => parts[:months])
else
- I18n.t("user_blocks.helper.block_duration.years", :count => parts[:years])
+ t("user_blocks.helper.block_duration.years", :count => parts[:years])
end
end
end
revoke: "Revoke!"
flash: "This block has been revoked."
helper:
- time_future: "Ends in %{time}."
+ time_future_html: "Ends in %{time}."
until_login: "Active until the user logs in."
- time_future_and_until_login: "Ends in %{time} and after the user has logged in."
- time_past: "Ended %{time}."
+ time_future_and_until_login_html: "Ends in %{time} and after the user has logged in."
+ time_past_html: "Ended %{time}."
block_duration:
hours:
one: "1 hour"
require "test_helper"
class ApiCapabilityTest < ActiveSupport::TestCase
+ private
+
def tokens(*toks)
AccessToken.new do |token|
toks.each do |t|
assert_includes apinode.tags, "\#{@user.inspect}"
end
+ private
+
##
# update the changeset_id of a node element
def update_changeset(xml, changeset_id)
check_not_found_id_version(24356, create(:node).version)
end
- def check_not_found_id_version(id, version)
- get node_version_path(:id => id, :version => version)
- assert_response :not_found
- rescue ActionController::UrlGenerationError => e
- assert_match(/No route matches/, e.to_s)
- end
-
##
# Test that getting the current version is identical to picking
# that version with the version URI call.
assert_nodes_are_equal current_node, old_node
end
+ def check_not_found_id_version(id, version)
+ get node_version_path(:id => id, :version => version)
+ assert_response :not_found
+ rescue ActionController::UrlGenerationError => e
+ assert_match(/No route matches/, e.to_s)
+ end
+
##
# returns a 16 character long string with some nasty characters in it.
# this ought to stress-test the tag handling as well as the versioning.
[relation_with_relation, second_relation])
end
- def check_relations_for_element(path, type, id, expected_relations)
- # check the "relations for relation" mode
- get path
- assert_response :success
-
- # count one osm element
- assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
-
- # we should have only the expected number of relations
- assert_select "osm>relation", expected_relations.size
-
- # and each of them should contain the element we originally searched for
- expected_relations.each do |relation|
- # The relation should appear once, but the element could appear multiple times
- assert_select "osm>relation[id='#{relation.id}']", 1
- assert_select "osm>relation[id='#{relation.id}']>member[type='#{type}'][ref='#{id}']"
- end
- end
-
def test_full
# check the "full" mode
get relation_full_path(:id => 999999)
end
end
- # ============================================================
- # utility functions
- # ============================================================
+ private
+
+ def check_relations_for_element(path, type, id, expected_relations)
+ # check the "relations for relation" mode
+ get path
+ assert_response :success
+
+ # count one osm element
+ assert_select "osm[version='#{Settings.api_version}'][generator='OpenStreetMap server']", 1
+
+ # we should have only the expected number of relations
+ assert_select "osm>relation", expected_relations.size
+
+ # and each of them should contain the element we originally searched for
+ expected_relations.each do |relation|
+ # The relation should appear once, but the element could appear multiple times
+ assert_select "osm>relation[id='#{relation.id}']", 1
+ assert_select "osm>relation[id='#{relation.id}']>member[type='#{type}'][ref='#{id}']"
+ end
+ end
##
# checks that the XML document and the string arguments have
end
end
+ private
+
##
# update the changeset_id of a way element
def update_changeset(xml, changeset_id)
assert_includes tags, %w[shop gift]
end
+ private
+
def add_old_tags_selection(old_node)
{ "building" => "yes",
"shop" => "gift",
end
end
- private
-
def preferred_languages
Locale.list(I18n.locale)
end
# tests, as its too tied into the HTTP headers and stuff that it signs.
end
+ private
+
##
# utility method to make the HTML screening easier to read.
def assert_in_heading(&block)
assert_short_link_redirect(ShortLink.encode(-0.107846, 51.50771, 18))
end
+ private
+
##
# utility method to test short links
def assert_short_link_redirect(short_link)
require "test_helper"
class UserBlocksTest < ActionDispatch::IntegrationTest
- def auth_header(user, pass)
- { "HTTP_AUTHORIZATION" => format("Basic %<auth>s", :auth => Base64.encode64("#{user}:#{pass}")) }
- end
-
def test_api_blocked
blocked_user = create(:user)
get "/api/#{Settings.api_version}/user/details"
assert_response :unauthorized
- get "/api/#{Settings.api_version}/user/details", :headers => auth_header(blocked_user.display_name, "test")
+ get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
assert_response :success
# now block the user
:reason => "testing",
:ends_at => Time.now.getutc + 5.minutes
)
- get "/api/#{Settings.api_version}/user/details", :headers => auth_header(blocked_user.display_name, "test")
+ get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
assert_response :forbidden
end
:reason => "testing",
:ends_at => Time.now.getutc + 5.minutes
)
- get "/api/#{Settings.api_version}/user/details", :headers => auth_header(blocked_user.display_name, "test")
+ get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
assert_response :forbidden
# revoke the ban
reset!
# access the API again. this time it should work
- get "/api/#{Settings.api_version}/user/details", :headers => auth_header(blocked_user.display_name, "test")
+ get "/api/#{Settings.api_version}/user/details", :headers => basic_authorization_header(blocked_user.display_name, "test")
assert_response :success
end
end
end
# Check that the user can successfully recover their password
- def lost_password_recovery_success
+ def test_lost_password_recovery_success
# Open the lost password form
# Submit the lost password form
# Check the e-mail