Sha256: 988f4a9ef4d6d86ae9ae16d7bb74e4a9844848bfefb07ea6ddfe0b9f6372b1da

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require 'pwm'

describe Pwm do
  context 'The default set of characters' do
    it 'includes all upper-case letters except I and O' do
      (('A'..'Z').to_a - ['I', 'O']).each do |letter|
        Pwm.characters.should include(letter)
      end
    end
    it 'includes all lower-case letters except l' do
      (('a'..'z').to_a - ['l']).each do |letter|
        Pwm.characters.should include(letter)
      end
    end
    it 'includes all digits 2 through 9' do
      ('2'..'9').each do |letter|
        Pwm.characters.should include(letter)
      end
    end
    it 'does not include I, O, l, 0, or 1' do
      %w(I O l 0 1).each do |letter|
        Pwm.characters.should_not include(letter)
      end
    end
  end

  context 'The password method' do
    context 'when given a length' do
      context 'equal to 8' do
        it 'generates a password of that length' do
          Pwm.password(8).length.should == 8
        end
      end
      context 'greater than 8' do
        it 'generates a password of that length' do
          Pwm.password(9).length.should == 9
        end
      end
      context 'less than 8' do
        it 'does not generate a password' do
          expect { Pwm.password(7) }.to raise_error(Pwm::TooShortException)
        end
      end
    end
    context 'when not given a length' do
      it 'generates a 16-character password' do
        Pwm.password.length.should == 16
      end
    end
    context 'generates passwords containing' do
      it 'at least one upper-case letter' do
        Pwm.password.should match(/[A-Z]/)
      end
      it 'at least one lower-case letter' do
        Pwm.password.should match(/[a-z]/)
      end
      it 'at least one number' do
        Pwm.password.should match(/[2-9]/)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
pwm-1.2.0 spec/pwm_spec.rb