Skip to content
Snippets Groups Projects
Commit 4fb95c91 authored by Eugen Rochko's avatar Eugen Rochko
Browse files

Fix wrongful matching of last period in extended usernames

Fix anchor tags in some wikipedia URLs being matches as a hashtag
parent 5f4e4022
No related branches found
No related tags found
No related merge requests found
......@@ -4,7 +4,7 @@ class Account < ApplicationRecord
include Targetable
include PgSearch
MENTION_RE = /(?:^|[^\/\w])@([a-z0-9_]+(?:@[a-z0-9\.\-]+)?)/i
MENTION_RE = /(?:^|[^\/\w])@([a-z0-9_]+(?:@[a-z0-9\.\-]+[a-z0-9]+)?)/i
IMAGE_MIME_TYPES = ['image/jpeg', 'image/png', 'image/gif'].freeze
# Local users
......
......@@ -3,7 +3,7 @@
class Tag < ApplicationRecord
has_and_belongs_to_many :statuses
HASHTAG_RE = /(?:^|[^\/\w])#([[:word:]_]*[[:alpha:]_][[:word:]_]*)/i
HASHTAG_RE = /(?:^|[^\/\)\w])#([[:word:]_]*[[:alpha:]_][[:word:]_]*)/i
validates :name, presence: true, uniqueness: true
......
......@@ -178,7 +178,6 @@ RSpec.describe Account, type: :model do
end
end
describe 'MENTION_RE' do
subject { Account::MENTION_RE }
......@@ -190,6 +189,14 @@ RSpec.describe Account, type: :model do
expect(subject.match('@alice Hey how are you?')[1]).to eq 'alice'
end
it 'matches full usernames' do
expect(subject.match('@alice@example.com')[1]).to eq 'alice@example.com'
end
it 'matches full usernames with a dot at the end' do
expect(subject.match('Hello @alice@example.com.')[1]).to eq 'alice@example.com'
end
it 'matches dot-prepended usernames' do
expect(subject.match('.@alice I want everybody to see this')[1]).to eq 'alice'
end
......
require 'rails_helper'
RSpec.describe Tag, type: :model do
describe 'HASHTAG_RE' do
subject { Tag::HASHTAG_RE }
it 'does not match URLs with anchors with non-hashtag characters' do
expect(subject.match('Check this out https://medium.com/@alice/some-article#.abcdef123')).to be_nil
end
it 'does not match URLs with hashtag-like anchors' do
expect(subject.match('https://en.wikipedia.org/wiki/Ghostbusters_(song)#Lawsuit')).to be_nil
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment