Commit d2982743 authored by Robert Speicher's avatar Robert Speicher

Update User#identifier to conform to Gitolite 2.x's user pattern

Also modifies the specs a bit because I can't help myself.

Closes #480
parent b44e9a08
module Account
# Returns a string for use as a Gitolite user identifier
#
# Note that Gitolite 2.x requires the following pattern for users:
#
# ^@?[0-9a-zA-Z][0-9a-zA-Z._\@+-]*$
def identifier
email.gsub /[^[:alnum:]]/, "_"
# Replace non-word chars with underscores, then make sure it starts with
# valid chars
email.gsub(/\W/, '_').gsub(/\A([\W\_])+/, '')
end
def is_admin?
......
......@@ -28,7 +28,7 @@ FactoryGirl.define do
email { Faker::Internet.email }
name
password "123456"
password_confirmation "123456"
password_confirmation { password }
trait :admin do
admin true
......
......@@ -31,36 +31,46 @@ describe User do
it { should respond_to(:private_token) }
end
describe '#identifier' do
it "should return valid identifier" do
user = User.new(email: "test@mail.com")
user = build(:user, email: "test@mail.com")
user.identifier.should == "test_mail_com"
end
it "should return identifier without + sign" do
user = User.new(email: "test+foo@mail.com")
user = build(:user, email: "test+foo@mail.com")
user.identifier.should == "test_foo_mail_com"
end
it "should conform to Gitolite's required identifier pattern" do
user = build(:user, email: "_test@example.com")
user.identifier.should == 'test_example_com'
end
end
describe '#generate_password' do
it "should execute callback when force_random_password specified" do
user = User.new(email: "test@mail.com", force_random_password: true)
user = build(:user, force_random_password: true)
user.should_receive(:generate_password)
user.save
end
it "should not generate password by default" do
user = Factory(:user, password: 'abcdefg', password_confirmation: 'abcdefg')
user = create(:user, password: 'abcdefg')
user.password.should == 'abcdefg'
end
it "should generate password when forcing random password" do
Devise.stub(:friendly_token).and_return('123456789')
user = User.create(email: "test1@mail.com", force_random_password: true)
user.password.should == user.password_confirmation
user = create(:user, password: 'abcdefg', force_random_password: true)
user.password.should == '12345678'
end
end
describe 'authentication token' do
it "should have authentication token" do
user = Factory(:user)
user.authentication_token.should_not == ""
user.authentication_token.should_not be_blank
end
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment