passrock 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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