fugafugaにrestful_authenticationをセットアップ。(2) ~ spec/models/user_spec.rbの修正
とりあえず、RSpecのセットアップ。
$ script/generate rspec
んじゃあ、とりあえず、テスト。
$ rake spec:models (略) #=> 75 examples, 75 failures #=> rake aborted! (略)
...そりゃそうだ。
認証をloginからemailに変更しているからねぇ。
修正、マンドクセ。
とりあえず、フィクスチャ。
# spec/fixtures/users.yml quentin: id: 1 - login: quentin +# login: quentin (略) aaron: id: 2 - login: aaron +# login: aaron (略) old_password_holder: id: 3 - login: old_password_holder +# login: old_password_holder (略)
んで、user_spec.rb。
loginの検証をしているところを全部削って、認証プロセスでloginに値を放り込んでるところをemailに変更して、protectedの下のcreate_userメソッドから、loginを省く。
# spec/models/user_spec.rb (略) - it 'requires login' do - lambda do - u = create_user(:login => nil) - u.errors.on(:login).should_not be_nil - end.should_not change(User, :count) - end - - describe 'allows legitimate logins:' do - ['123', '1234567890_234567890_234567890_234567890', - 'hello.-_there@funnychar.com'].each do |login_str| - it "'#{login_str}'" do - lambda do - u = create_user(:login => login_str) - u.errors.on(:login).should be_nil - end.should change(User, :count).by(1) - end - end - end - describe 'disallows illegitimate logins:' do - ['12', '1234567890_234567890_234567890_234567890_', "tab\t", "newline\n", - "Iñtërnâtiônàlizætiøn hasn't happened to ruby 1.8 yet", - 'semicolon;', 'quote"', 'tick\'', 'backtick`', 'percent%', 'plus+', 'space '].each do |login_str| - it "'#{login_str}'" do - lambda do - u = create_user(:login => login_str) - u.errors.on(:login).should_not be_nil - end.should_not change(User, :count) - end - end - end - it 'requires password' do lambda do u = create_user(:password => nil) (略) it 'resets password' do users(:quentin).update_attributes(:password => 'new password', :password_confirmation => 'new password') - User.authenticate('quentin', 'new password').should == users(:quentin) + User.authenticate('quentin@example.com', 'new password').should == users(:quentin) end (略) it 'does not rehash password' do - users(:quentin).update_attributes(:login => 'quentin2') - User.authenticate('quentin2', 'monkey').should == users(:quentin) + users(:quentin).update_attributes(:email => 'quentin2@example.com') + User.authenticate('quentin2@example.com', 'monkey').should == users(:quentin) end (略) it 'authenticates user' do - User.authenticate('quentin', 'monkey').should == users(:quentin) + User.authenticate('quentin@example.com', 'monkey').should == users(:quentin) end (略) protected - def create_user(options = {}) - record = User.new({ :login => 'quire', :email => 'quire@example.com', :password => 'quire69', :password_confirmation => 'quire69' }.merge(options)) - record.register! if record.valid? - record - end +def create_user(options = {}) + record = User.new({ + :email => 'quire@example.com', + :password => 'quire69', + :password_confirmation => 'quire69', + }.merge(options)) + record.register! if record.valid? + record + end
んで、テスト。
$ rake spec:models (略) 59 examples, 0 failures
おk。
ステキっ:-)