passrock 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 006903c5325cd4eabe082e5b18f7cd8dc6b0e1e6
4
- data.tar.gz: c4febb93f9d06f5719d779fec992474bdb6e2f0f
3
+ metadata.gz: 7b901d76f9ebf5e7aeae7fac88edbba47f632bb6
4
+ data.tar.gz: c0102ec9aaaaa8f4536c1787187604140cad70e3
5
5
  SHA512:
6
- metadata.gz: 25f6c1159dc62afade5a1f7a58e160884469f56bf0d77e363a838098317340d0c5f36dd67a222a05d1c4cf58905d383650d5e2d391c57a0dbe4878737059cb63
7
- data.tar.gz: ecb64da91a081c048a4176b69ca9c9b7e344571bb87a45b5eefefec00fd8701f29232809e2e69001b2e128c46f77ac016c12142ea9383b1d4ae4bbbb0d6824bb
6
+ metadata.gz: d7c54fa479abe10d5993a1dd3da3190e7b0ad4e421fa0ed6db25e2d27ac4e2c0ea4aa0b68b707495a16dde840ad327b640f7fd701bee9cb01216a2f6b29aa8b3
7
+ data.tar.gz: 44b468162e89408c5fa95ed1af2714611334a18b3997702d6a677727cca0ddf8466f48c49bd07bda0d945353580f4fe79802782aac4f21c4b3cf5e6d874470a4
@@ -6,7 +6,7 @@ module ActiveModel
6
6
  class PassrockSecureValidator < ActiveModel::EachValidator
7
7
 
8
8
  def validate_each(record, attribute, value)
9
- passrock_db = Passrock::PasswordDb.new(Passrock.configuration.password_db, Passrock.configuration.private_key)
9
+ passrock_db = Passrock::PasswordDb.new(:password_db => Passrock.configuration.password_db, :private_key => Passrock.configuration.private_key)
10
10
  record.errors.add(attribute, :passrock_secure) if passrock_db.insecure?(value)
11
11
  end
12
12
 
@@ -0,0 +1,8 @@
1
+ module Passrock
2
+
3
+ class PassrockError < ::StandardError; end
4
+
5
+ class PasswordDbNotFoundError < PassrockError; end
6
+ class PrivateKeyInvalidError < PassrockError; end
7
+
8
+ end
@@ -12,11 +12,13 @@ module Passrock
12
12
  end
13
13
 
14
14
 
15
- attr_reader :filename, :private_key
15
+ attr_reader :password_db, :private_key
16
16
 
17
- def initialize(filename, private_key)
18
- @filename = filename
19
- @private_key = private_key
17
+ def initialize(opts = {})
18
+ @password_db = opts[:password_db]
19
+ @private_key = opts[:private_key]
20
+
21
+ raise PasswordDbNotFoundError, "Passrock Password DB not found at: #{@password_db}" unless File.file?(@password_db)
20
22
  end
21
23
 
22
24
  def password_in_searchable_form(password)
@@ -40,11 +42,11 @@ module Passrock
40
42
 
41
43
  def total_records
42
44
  # Minus 1 for length in file and 1 for 0-up counting
43
- @total_records ||= (File.size(filename) / RECORD_LENGTH) - 2
45
+ @total_records ||= (File.size(password_db) / RECORD_LENGTH) - 2
44
46
  end
45
47
 
46
48
  def find_by_binary_search(password)
47
- file = File.new(filename, 'rb')
49
+ file = File.new(password_db, 'rb')
48
50
  target = password_in_searchable_form(password)
49
51
 
50
52
  lo = 1 # start at 1 because the testKey is at 0
@@ -1,3 +1,3 @@
1
1
  module Passrock
2
- VERSION = '0.0.4'
2
+ VERSION = '0.0.5'
3
3
  end
data/lib/passrock.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'passrock/version'
2
+ require 'passrock/exceptions'
2
3
  require 'passrock/configuration'
3
4
  require 'passrock/password_db'
4
5
 
@@ -1,8 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Passrock::PasswordDb do
4
+
4
5
  let(:password_db) { passrock_password_db }
5
6
  let(:private_key) { passrock_private_key }
7
+ let(:valid_init_opts) { {:password_db => password_db, :private_key => private_key} }
6
8
  let(:insecure_password) { 'password' }
7
9
  let(:secure_password) { 'BoatActKnowsDog' }
8
10
 
@@ -18,35 +20,48 @@ describe Passrock::PasswordDb do
18
20
  end
19
21
 
20
22
 
23
+ describe '#initialize' do
24
+
25
+ context 'when password_db file does not exist' do
26
+ it 'raises PasswordDbNotFoundError' do
27
+ expect {
28
+ described_class.new(:password_db => '/invalid/path/to/password_db', :private_key => private_key)
29
+ }.to raise_error(Passrock::PasswordDbNotFoundError)
30
+ end
31
+ end
32
+
33
+ end
34
+
21
35
  describe '#password_in_searchable_form' do
22
36
 
23
37
  it 'returns the given password in a searchable format' do
24
- passrock = described_class.new(password_db, private_key)
25
- expect(passrock.password_in_searchable_form(insecure_password)).to eq('+lR0p4OzjXJnta/4GGtqdaBQEFPQdjI=')
38
+ subject = described_class.new(valid_init_opts)
39
+ expect(subject.password_in_searchable_form(insecure_password)).to eq('+lR0p4OzjXJnta/4GGtqdaBQEFPQdjI=')
26
40
  end
27
41
 
28
42
  end
29
43
 
30
44
  describe '#secure?' do
31
- let(:passrock) { described_class.new(password_db, private_key) }
45
+
46
+ let(:subject) { described_class.new(valid_init_opts) }
32
47
 
33
48
  context 'when given password is present in the password database' do
34
49
  it 'returns false' do
35
- expect(passrock.secure?(insecure_password)).to be_false
50
+ expect(subject.secure?(insecure_password)).to be_false
36
51
  end
37
52
  end
38
53
 
39
54
  context 'when given password does not appear in the password database' do
40
55
  it 'returns true' do
41
- expect(passrock.secure?(secure_password)).to be_true
56
+ expect(subject.secure?(secure_password)).to be_true
42
57
  end
43
58
  end
44
59
 
45
60
  context 'multiple sequential calls' do
46
61
  it 'does not error out' do
47
62
  expect {
48
- passrock.secure?(secure_password)
49
- passrock.secure?(insecure_password)
63
+ subject.secure?(secure_password)
64
+ subject.secure?(insecure_password)
50
65
  }.to_not raise_error
51
66
  end
52
67
  end
@@ -54,19 +69,21 @@ describe Passrock::PasswordDb do
54
69
  end
55
70
 
56
71
  describe '#insecure?' do
57
- let(:passrock) { described_class.new(password_db, private_key) }
72
+
73
+ let(:subject) { described_class.new(valid_init_opts) }
58
74
 
59
75
  context 'when given password is present in the password database' do
60
76
  it 'returns true' do
61
- expect(passrock.insecure?(insecure_password)).to be_true
77
+ expect(subject.insecure?(insecure_password)).to be_true
62
78
  end
63
79
  end
64
80
 
65
81
  context 'when given password does not appear in the password database' do
66
82
  it 'returns false' do
67
- expect(passrock.insecure?(secure_password)).to be_false
83
+ expect(subject.insecure?(secure_password)).to be_false
68
84
  end
69
85
  end
86
+
70
87
  end
71
88
 
72
89
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passrock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bitium, Inc
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-03 00:00:00.000000000 Z
11
+ date: 2013-09-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bcrypt-ruby
@@ -98,6 +98,7 @@ files:
98
98
  - lib/active_model/validations/passrock_secure_validator.rb
99
99
  - lib/passrock.rb
100
100
  - lib/passrock/configuration.rb
101
+ - lib/passrock/exceptions.rb
101
102
  - lib/passrock/password_db.rb
102
103
  - lib/passrock/railtie.rb
103
104
  - lib/passrock/version.rb