title: Ruby on Rails Michael Hartl chapter 9 Test fails
body: <p>I was finishing up Chapter 9 from the RoR Tutorial and I was running the last test and a Failure showed up from the code which ran green in the previous tests. I searched the whole web and cross check code everywhere but I wasnt able to resolve it.</p>
  
  <p><strong>FAILURE MESSAGE:</strong> </p>
  
  <p>Failure:
  UserTest#test_email_validation_should_reject_invalid_address [/home/ubuntu/workspace/sample_app/test/models/user_test.rb:44]:
  "foo@bar..com"should be invalid</p>
  
  <p><strong>user_test.eb</strong></p>
  
  <pre><code>require 'test_helper'
  
  class UserTest &lt; ActiveSupport::TestCase
  
    def setup
      @user = User.new(name: "Example User", email: "user@example.com", password: "foobar", password_confirmation: "foobar")
    end
  
    test "should be valid" do 
      assert @user.valid?
    end
    test "name should be present" do
      @user.name = "   "
      assert_not @user.valid?
    end
  
    test "email should be present" do
      @user.email = " "
      assert_not @user.valid?
    end
  
    test "name should not be too long" do
     @user.name = "a" * 51
     assert_not @user.valid?
    end
  
    test "email shouldnt be too long" do
      @user.email = "a" * 244 + "@example.com"
      assert_not @user.valid?
    end
  
    test "email validation should accept valid addresses" do
      valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org first.last@foo.jp alice+bob@baz.cn]
      valid_addresses.each do |valid_address|
        @user.email = valid_address
        assert @user.valid?, "#{valid_address.inspect} should be valid"
      end
    end
  
    test "email validation should reject invalid address" do
      invalid_addresses = %w[user@example,com user_at_org.foo user.name@example. foo@bar_baz.com foo@bar+baz.com foo@bar..com]
      invalid_addresses.each do |invalid_address|
        @user.email = invalid_address
        assert_not @user.valid?, "#{invalid_address.inspect}should be invalid"
      end
    end
  
    test "emails should be unique" do
      duplicate_user = @user.dup
      duplicate_user.email = @user.email.upcase
      @user.save
      assert_not duplicate_user.valid?
    end
  
    test "passwors should be present" do
      @user.password = @user.password_confirmation = " " * 6
      assert_not @user.valid?
    end
  
    test "password should have minimum length" do 
      @user.password = @user.password_confirmation = "a" * 5
      assert_not @user.valid?
    end
  
    test "authenticated? should return false for a user with nil digest" do
      assert_not @user.authenticated?('')
    end
  
  end
  </code></pre>
  
  <p><strong>User.eb</strong></p>
  
  <pre><code>class User &lt; ActiveRecord::Base
    attr_accessor :remember_token
    before_save { self.email = email.downcase }
    validates :name,  presence: true, length: { maximum: 50 }
    VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
    validates :email, presence: true, length: { maximum: 255 },
                      format: { with: VALID_EMAIL_REGEX },
                      uniqueness: { case_sensitive: false }
    has_secure_password
    validates :password, presence: true, length: { minimum: 6 }
  
    # Returns the hash digest of the given string.
    def User.digest(string)
      cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
                                                    BCrypt::Engine.cost
      BCrypt::Password.create(string, cost: cost)
    end
  
    # Returns a random token.
    def User.new_token
      SecureRandom.urlsafe_base64
    end
  
    # Remembers a user in the database for use in persistent sessions.
    def remember
      self.remember_token = User.new_token
      update_attribute(:remember_digest, User.digest(remember_token))
    end
  
    # Returns true if the given token matches the digest.
    def authenticated?(remember_token)
      return false if remember_digest.nil? #Add this line
      BCrypt::Password.new(remember_digest).is_password?(remember_token)
    end
  
    # Forgets a user.
    def forget
      update_attribute(:remember_digest, nil)
    end
  end
  </code></pre>
  
  <p>Help me out im stuck. Thanks in advance</p>