Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # encoding: utf-8
- require 'spec_helper'
- describe User do
- before(:each) do
- @attr = { :login => 'Foobar',
- :email => 'SUPER@example.com',
- :first_name => 'Foo',
- :last_name => 'Bar',
- :password => 'foobar',
- :password_confirmation => 'foobar'
- }
- User.destroy_all
- end
- describe "registration" do
- it "should create a new user given valid attributes" do
- user = User.new(@attr)
- user.save
- user.login.should eq(@attr[:login].downcase)
- user.display_name.should eq(@attr[:login])
- user.email.should eq(@attr[:email].downcase)
- user.first_name.should eq(@attr[:first_name])
- user.last_name.should eq(@attr[:last_name])
- end
- it "should require valid login" do
- user = User.new(@attr.merge(:login => ""))
- user.should_not be_valid
- user = User.new(@attr.merge(:login => "Fo"))
- user.should_not be_valid
- user = User.new(@attr.merge(:login => "Super@ser"))
- user.should_not be_valid
- user = User.new(@attr.merge(:login => "Super User"))
- user.should_not be_valid
- end
- it "should require password confirmation" do
- user = User.new(@attr.merge(:password_confirmation => ""))
- user.should_not be_valid
- user = User.new(@attr.merge(:password_confirmation => 'FooBar'))
- user.should_not be_valid
- end
- it "should require valid password" do
- user = User.new(@attr.merge(:password => "Fooba", :password_confirmation => 'Fooba'))
- user.should_not be_valid
- user = User.new(@attr.merge(:password => 'x' * 255))
- user.should_not be_valid
- end
- it "should require valid first name" do
- user = User.new(@attr.merge(:first_name => ''))
- user.should_not be_valid
- user = User.new(@attr.merge(:first_name => 'x' * 255))
- user.should_not be_valid
- user = User.new(@attr.merge(:first_name => ' '))
- user.should_not be_valid
- user = User.new(@attr.merge(:first_name => 'a'))
- user.should_not be_valid
- end
- it "should require valid last name" do
- user = User.new(@attr.merge(:last_name => ''))
- user.should_not be_valid
- user = User.new(@attr.merge(:last_name => 'x' * 255))
- user.should_not be_valid
- user = User.new(@attr.merge(:last_name => ' '))
- user.should_not be_valid
- user = User.new(@attr.merge(:last_name => 'a'))
- user.should_not be_valid
- end
- it "should reject users with duplicate email" do
- user = User.new(@attr)
- user.should be_valid
- user.save
- duplicate_user = User.new(@attr.merge(:login => 'RailsUser'))
- duplicate_user.should_not be_valid
- end
- it "should reject users with duplicate login" do
- user = User.new(@attr)
- user.should be_valid
- user.save
- duplicate_user = User.new(@attr.merge(:email => 'super@foo.bar'))
- duplicate_user.should_not be_valid
- end
- it "should have an encrypted password attribute" do
- user = User.new(@attr)
- user.password_digest.should_not be_blank
- end
- it "should accept valid email addresses" do
- addresses = %w[user@foo.com THE_USER@foo.bar.org first.last@foo.jp]
- addresses.each do |address|
- valid_email_user = User.new(@attr.merge(:email => address))
- valid_email_user.should be_valid
- end
- end
- it "should reject invalid email addresses" do
- addresses = %w[user@foo,com user_at_foo.org example.user@foo.]
- addresses.each do |address|
- invalid_email_user = User.new(@attr.merge(:email => address))
- invalid_email_user.should_not be_valid
- end
- end
- end
- describe "authentication" do
- before(:each) do
- @user = User.create(@attr)
- end
- it "should reject wrong password" do
- @user.authenticate('wrong').should_not be_true
- end
- it "should accept correct password" do
- @user.authenticate(@attr[:password]).should be_true
- end
- end
- end
Add Comment
Please, Sign In to add comment