Sha256: e53f9cac6e88ba37faa6150a24ffacf93ca5d0cd78f93b396cb946c05d05aebc

Contents?: true

Size: 1.33 KB

Versions: 7

Compression:

Stored size: 1.33 KB

Contents

require File.join(File.dirname(__FILE__), '..', 'spec_helper.rb')

describe "Password Validation" do
  STRENGTHS = {
    :weak   => { :valid => 'sixchr',   :invalid => 'foo' },
    :medium => { :valid => 'chrs123',  :invalid => 'sixchr' },
    :strong => { :valid => 'HQSij2323#$%', :invalid => 'chrs123' }
  }

  subject { TestRecord.new }

  STRENGTHS.each_pair do |strength, passwords|
    describe "#{strength} mode" do
      before(:each) do
        TestRecord.reset_callbacks(:validate)
        TestRecord.validates :password, :password => { :strength => strength }
      end

      describe "valid passwords" do
        it "accepts a #{strength} password like #{passwords[:valid]}" do
          subject.password = passwords[:valid]
          subject.should be_valid
          subject.should have(0).errors
        end
      end

      describe "invalid passwords" do
        before :each do
          subject.password = passwords[:invalid]
        end

        it "rejects invalid passwords like #{passwords[:invalid]}" do
          subject.should_not be_valid
          subject.should have(1).error
        end

        it "generates an error message of type invalid" do
          subject.should_not be_valid
          subject.errors[:password].should include subject.errors.generate_message(:password, :invalid)
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
activevalidators-1.5.1 spec/validations/password_spec.rb
activevalidators-1.5.0 spec/validations/password_spec.rb
activevalidators-1.4.0 spec/validations/password_spec.rb
activevalidators-1.3.0 spec/validations/password_spec.rb
activevalidators-1.2.4 spec/validations/password_spec.rb
activevalidators-1.2.3 spec/validations/password_spec.rb
activevalidators-1.2.2 spec/validations/password_spec.rb