From 147d8bd8fc7aa8b55cd5a9103941c52441ed4365 Mon Sep 17 00:00:00 2001 From: Hampton Lintorn-Catlin Date: Sun, 13 Nov 2022 23:52:13 -0500 Subject: [PATCH] Support UTF-8 Characters in Domains During CSV Import (#20592) * Support UTF-8 Characters in Domains During Import * Update Changelong --- CHANGELOG.md | 1 + app/services/import_service.rb | 2 +- spec/fixtures/files/utf8-followers.txt | 1 + spec/services/import_service_spec.rb | 23 +++++++++++++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 spec/fixtures/files/utf8-followers.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 72f62a1dc..93f05a650 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -185,6 +185,7 @@ Some of the features in this release have been funded through the [NGI0 Discover - Fix `CDN_HOST` not being used in some asset URLs ([tribela](https://github.com/mastodon/mastodon/pull/18662)) - Fix `CAS_DISPLAY_NAME`, `SAML_DISPLAY_NAME` and `OIDC_DISPLAY_NAME` being ignored ([ClearlyClaire](https://github.com/mastodon/mastodon/pull/18568)) - Fix various typos in comments throughout the codebase ([luzpaz](https://github.com/mastodon/mastodon/pull/18604)) +- Fix CSV upload no longer breaks if an server domain includes UTF-8 characters ([HamptonMakes]()) ### Security diff --git a/app/services/import_service.rb b/app/services/import_service.rb index ece5b9ef0..2f48abc36 100644 --- a/app/services/import_service.rb +++ b/app/services/import_service.rb @@ -136,7 +136,7 @@ class ImportService < BaseService end def import_data - Paperclip.io_adapters.for(@import.data).read + Paperclip.io_adapters.for(@import.data).read.force_encoding(Encoding::UTF_8) end def relations_map_for_account(account, account_ids) diff --git a/spec/fixtures/files/utf8-followers.txt b/spec/fixtures/files/utf8-followers.txt new file mode 100644 index 000000000..9d4fe3485 --- /dev/null +++ b/spec/fixtures/files/utf8-followers.txt @@ -0,0 +1 @@ +@nare@թութ.հայ diff --git a/spec/services/import_service_spec.rb b/spec/services/import_service_spec.rb index 764225aa7..e2d182920 100644 --- a/spec/services/import_service_spec.rb +++ b/spec/services/import_service_spec.rb @@ -172,6 +172,29 @@ RSpec.describe ImportService, type: :service do end end + # Based on the bug report 20571 where UTF-8 encoded domains were rejecting import of their users + # + # https://github.com/mastodon/mastodon/issues/20571 + context 'utf-8 encoded domains' do + subject { ImportService.new } + + let!(:nare) { Fabricate(:account, username: 'nare', domain: 'թութ.հայ', locked: false, protocol: :activitypub, inbox_url: 'https://թութ.հայ/inbox') } + + # Make sure to not actually go to the remote server + before do + stub_request(:post, "https://թութ.հայ/inbox").to_return(status: 200) + end + + let(:csv) { attachment_fixture('utf8-followers.txt') } + let(:import) { Import.create(account: account, type: 'following', data: csv) } + + it 'follows the listed account' do + expect(account.follow_requests.count).to eq 0 + subject.call(import) + expect(account.follow_requests.count).to eq 1 + end + end + context 'import bookmarks' do subject { ImportService.new }