Files
danbooru/test/functional/user_name_change_requests_controller_test.rb
evazion a160a3acce users: add stricter username rules.
Add stricter username rules:

* Only allow usernames to contain basic letters, numbers, CJK characters, underscores, dashes and periods.
* Don't allow names to start or end with punctuation.
* Don't allow names to have multiple underscores in a row.
* Don't allow active users to have names that look like deleted users (e.g. "user_1234").
* Don't allow emoji or any other Unicode characters except for Chinese, Japanese, and Korean
  characters. CJK characters are currently grandfathered in but will be disallowed in the future.

Users with an invalid name will be shown a permanent sitewide banner until they change their name.
2022-03-05 01:08:53 -06:00

71 lines
2.0 KiB
Ruby

require 'test_helper'
class UserNameChangeRequestsControllerTest < ActionDispatch::IntegrationTest
context "The user name change requests controller" do
setup do
@user = create(:member_user)
@admin = create(:admin_user)
end
context "new action" do
should "render" do
get_auth new_user_name_change_request_path, @user
assert_response :success
end
should "render when the current user's name is invalid" do
@user.update_columns(name: "foo__bar")
get_auth new_user_name_change_request_path, @user
assert_response :success
end
end
context "create action" do
should "work" do
post_auth user_name_change_requests_path, @user, params: { user_name_change_request: { desired_name: "zun", desired_name_confirmation: "zun" }}
assert_redirected_to profile_path
assert_equal("zun", @user.reload.name)
end
end
context "show action" do
setup do
@change_request = as(@user) { create(:user_name_change_request, user_id: @user.id) }
@user.update!(name: "user_#{@user.id}")
end
should "render" do
get_auth user_name_change_request_path(@change_request), @admin
assert_response :success
end
context "when the current user is not an admin, doesn't own the request, and the other user is deleted" do
should "fail" do
@another_user = create(:user)
get_auth user_name_change_request_path(@change_request), @another_user
assert_response :forbidden
end
end
end
context "index action" do
should "allows members to see name changes" do
create(:user_name_change_request)
get_auth user_name_change_requests_path, @user
assert_response :success
assert_select "table tbody tr", 1
end
should "not allow anonymous users to see name changes" do
create(:user_name_change_request)
get user_name_change_requests_path
assert_response 403
end
end
end
end