the Devise email regex was not catching pods that were anything other than a standard url
This commit is contained in:
parent
aeef0b5f6e
commit
ad11bd2a31
2 changed files with 50 additions and 5 deletions
|
|
@ -32,7 +32,7 @@ class PeopleController < ApplicationController
|
|||
|
||||
format.html do
|
||||
#only do it if it is an email address
|
||||
if params[:q].try(:match, Devise.email_regexp)
|
||||
if diaspora_id?(params[:q])
|
||||
people = Person.where(:diaspora_handle => params[:q].downcase)
|
||||
webfinger(params[:q]) if people.empty?
|
||||
else
|
||||
|
|
@ -43,7 +43,7 @@ class PeopleController < ApplicationController
|
|||
end
|
||||
format.mobile do
|
||||
#only do it if it is an email address
|
||||
if params[:q].try(:match, Devise.email_regexp)
|
||||
if diaspora_id?(params[:q])
|
||||
people = Person.where(:diaspora_handle => params[:q])
|
||||
webfinger(params[:q]) if people.empty?
|
||||
else
|
||||
|
|
@ -165,13 +165,18 @@ class PeopleController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
def diaspora_id?(query)
|
||||
!query.try(:match, /^(\w)*@([a-zA-Z0-9]|[-]|[.]|[:])*$/).nil?
|
||||
end
|
||||
|
||||
private
|
||||
def webfinger(account, opts = {})
|
||||
Resque.enqueue(Job::SocketWebfinger, current_user.id, account, opts)
|
||||
end
|
||||
|
||||
|
||||
def remote_profile_with_no_user_session?
|
||||
@person && @person.remote? && !user_signed_in?
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
|
|
|||
|
|
@ -57,8 +57,14 @@ describe PeopleController do
|
|||
get :index, :q => "eugene@example.org"
|
||||
assigns[:people][0].id.should == eugene2.id
|
||||
end
|
||||
|
||||
it "downcases the handle before trying to find someone by it" do
|
||||
|
||||
it "allows unsearchable people to be found by handle" do
|
||||
d_id = "eugene@example.org"
|
||||
@controller.should_receive(:diaspora_id?).with(d_id)
|
||||
get :index, :q => d_id
|
||||
end
|
||||
|
||||
it "downcases the handle before trying to find someone by it" do
|
||||
eugene2 = Factory.create(:person, :diaspora_handle => "eugene@example.org",
|
||||
:profile => Factory.build(:profile, :first_name => "Eugene",
|
||||
:last_name => "w", :searchable => false))
|
||||
|
|
@ -345,6 +351,40 @@ describe PeopleController do
|
|||
end
|
||||
end
|
||||
|
||||
describe '#diaspora_id?' do
|
||||
it 'returns true for pods on urls' do
|
||||
@controller.diaspora_id?("ilya_123@pod.geraspora.de").should be_true
|
||||
end
|
||||
|
||||
it 'returns true for pods on urls with port' do
|
||||
@controller.diaspora_id?("ilya_123@pod.geraspora.de:12314").should be_true
|
||||
end
|
||||
|
||||
it 'returns true for pods on localhost' do
|
||||
@controller.diaspora_id?("ilya_123@localhost").should be_true
|
||||
end
|
||||
|
||||
it 'returns true for pods on localhost and port' do
|
||||
@controller.diaspora_id?("ilya_123@localhost:1234").should be_true
|
||||
end
|
||||
|
||||
it 'returns true for pods on ip' do
|
||||
@controller.diaspora_id?("ilya_123@1.1.1.1").should be_true
|
||||
end
|
||||
|
||||
it 'returns true for pods on ip and port' do
|
||||
@controller.diaspora_id?("ilya_123@1.2.3.4:1234").should be_true
|
||||
end
|
||||
|
||||
it 'returns false for pods on with invalid url characters' do
|
||||
@controller.diaspora_id?("ilya_123@join_diaspora.com").should be_false
|
||||
end
|
||||
|
||||
it 'returns false for invalid usernames' do
|
||||
@controller.diaspora_id?("ilya_2%3@joindiaspora.com").should be_false
|
||||
end
|
||||
end
|
||||
|
||||
describe '#webfinger' do
|
||||
it 'enqueues a webfinger job' do
|
||||
Resque.should_receive(:enqueue).with(Job::SocketWebfinger, @user.id, @user.diaspora_handle, anything).once
|
||||
|
|
|
|||
Loading…
Reference in a new issue