passwd 0.0.7 → 0.1.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8d747281623609db763e8bbefa99fc1fb14cdad2
4
+ data.tar.gz: fa857ec1c64e9fc4f0967fd963a435793e1050b5
5
+ SHA512:
6
+ metadata.gz: 21df8d0e09673b322a47834202f2663e0a687a10c28665283c832a35b857f37575a19bbf25a66110eb7ffe8b67f3e4546930676e25ed816f6ab33beea5b7bdef
7
+ data.tar.gz: b2672f8d1c14d48b0b7f0171eee41a6c9aeead396e61af1c6a058592876c3da106214888c134c1ec9c4ecd54dac049ce37adeb827257e777696534422132fbf7
data/.coveralls.yml CHANGED
@@ -1 +1 @@
1
- repo_token: juJNf3K7FF93l6tzdF8cv1V2NFgGdCaWv
1
+ repo_token: 106V5oEIwXeOfqT35UWifTnifi5sEO2QP
data/.travis.yml CHANGED
@@ -4,7 +4,7 @@ rvm:
4
4
  - 2.0.0
5
5
  gemfile:
6
6
  - Gemfile
7
- script: bundle exec rspec
7
+ script: bundle exec rake spec
8
8
  branches:
9
9
  only:
10
10
  - master
data/Gemfile CHANGED
@@ -5,4 +5,5 @@ gemspec
5
5
 
6
6
  group :test do
7
7
  gem 'coveralls', require: false
8
+ gem 'simplecov', require: false
8
9
  end
data/README.md CHANGED
@@ -45,12 +45,16 @@ password_hash = Passwd.hashing(password)
45
45
 
46
46
  ### Password settings
47
47
 
48
- Default config is stored in the class variable. (@@config)
48
+ Default config is stored in the class instance variable.
49
49
  Changing the default configs are as follows:
50
50
 
51
51
  ```ruby
52
52
  Passwd.config => Get config hash.
53
53
  Passwd.config(length: 10) => Change to the default length.
54
+
55
+ Passwd.configure do |c|
56
+ c.length = 10
57
+ end
54
58
  ```
55
59
 
56
60
  Options that can be specified:
data/Rakefile CHANGED
@@ -1,11 +1,9 @@
1
1
  require "bundler/gem_tasks"
2
-
3
- Bundler.setup
4
2
  require 'rspec/core/rake_task'
5
3
 
6
- task default: [:spec]
7
-
8
4
  desc "Run all specs"
9
5
  RSpec::Core::RakeTask.new(:spec) do |t|
10
6
  t.rspec_opts = ["-c", "-fs"]
11
7
  end
8
+
9
+ task :default => :spec
data/lib/passwd.rb CHANGED
@@ -5,23 +5,16 @@ require "digest/sha1"
5
5
  require "passwd/version"
6
6
  require "passwd/password"
7
7
  require "passwd/active_record"
8
+ require "passwd/configuration"
8
9
 
9
10
  module Passwd
10
- @@config = {
11
- length: 8,
12
- lower: true,
13
- upper: true,
14
- number: true,
15
- letters_lower: ('a'..'z').to_a,
16
- letters_upper: ('A'..'Z').to_a,
17
- letters_number: ('0'..'9').to_a
18
- }
11
+ @config = Configuration.new
19
12
 
20
13
  class << self
21
14
  def create(options={})
22
- config = @@config.merge(config_validator(options))
23
- letters = get_retters(config)
24
- Array.new(config[:length]){letters[rand(letters.size)]}.join
15
+ config = @config.dup
16
+ config.merge options
17
+ Array.new(config.length){config.letters[rand(config.letters.size)]}.join
25
18
  end
26
19
 
27
20
  def auth(password_text, salt_hash, password_hash)
@@ -29,26 +22,25 @@ module Passwd
29
22
  password_hash == enc_pass
30
23
  end
31
24
 
32
- def hashing(password)
33
- Digest::SHA1.hexdigest password
25
+ def hashing(plain)
26
+ Digest::SHA1.hexdigest plain
34
27
  end
35
28
 
36
- def config(options={})
37
- @@config.merge!(config_validator(options))
38
- end
39
-
40
- private
41
- def get_retters(config)
42
- ["lower", "upper", "number"].inject([]) do |letters, type|
43
- letters.concat(config["letters_#{type}".to_sym]) if config[type.to_sym]
44
- letters
29
+ def configure(options={}, &block)
30
+ if block_given?
31
+ @config.configure &block
32
+ else
33
+ if options.empty?
34
+ @config
35
+ else
36
+ @config.merge options
37
+ end
45
38
  end
46
39
  end
40
+ alias :config :configure
47
41
 
48
- def config_validator(config_hash)
49
- parameters = [:length, :lower, :upper, :number, :letters_lower, :letters_upper, :letters_number]
50
- config = config_hash.inject({}){|r, (k, v)| r.store(k.to_sym, v); r}
51
- config.select{|k, v| parameters.include? k}
42
+ def reset_config
43
+ @config.reset
52
44
  end
53
45
  end
54
46
  end
@@ -0,0 +1,50 @@
1
+ # coding: utf-8
2
+
3
+ module Passwd
4
+ class Configuration
5
+ VALID_OPTIONS_KEYS = [
6
+ :length,
7
+ :lower,
8
+ :upper,
9
+ :number,
10
+ :letters_lower,
11
+ :letters_upper,
12
+ :letters_number
13
+ ].freeze
14
+
15
+ attr_accessor *VALID_OPTIONS_KEYS
16
+
17
+ def initialize
18
+ reset
19
+ end
20
+
21
+ def configure
22
+ yield self
23
+ end
24
+
25
+ def merge(configs)
26
+ configs.keys.each do |k|
27
+ send("#{k}=", configs[k])
28
+ end
29
+ end
30
+
31
+ def letters
32
+ chars = []
33
+ chars.concat(self.letters_lower) if self.lower
34
+ chars.concat(self.letters_upper) if self.upper
35
+ chars.concat(self.letters_number) if self.number
36
+ raise "letters is empty" if chars.empty?
37
+ chars
38
+ end
39
+
40
+ def reset
41
+ self.length = 8
42
+ self.lower = true
43
+ self.upper = true
44
+ self.number = true
45
+ self.letters_lower = ("a".."z").to_a
46
+ self.letters_upper = ("A".."Z").to_a
47
+ self.letters_number = ("0".."9").to_a
48
+ end
49
+ end
50
+ end
@@ -1,3 +1,3 @@
1
1
  module Passwd
2
- VERSION = "0.0.7"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -139,4 +139,4 @@ describe Passwd::ActiveRecord do
139
139
  end
140
140
  end
141
141
  end
142
- end
142
+ end
@@ -0,0 +1,242 @@
1
+ # coding: utf-8
2
+
3
+ require "spec_helper"
4
+
5
+ describe Passwd::Configuration do
6
+ let(:config) {Passwd::Configuration.new}
7
+
8
+ describe "defined accessors" do
9
+ it "defined length" do
10
+ expect(config.respond_to? :length).to be_true
11
+ end
12
+
13
+ it "defined lower" do
14
+ expect(config.respond_to? :lower).to be_true
15
+ end
16
+
17
+ it "defined upper" do
18
+ expect(config.respond_to? :upper).to be_true
19
+ end
20
+
21
+ it "defined number" do
22
+ expect(config.respond_to? :number).to be_true
23
+ end
24
+
25
+ it "defined letters_lower" do
26
+ expect(config.respond_to? :letters_lower).to be_true
27
+ end
28
+
29
+ it "defined letters_upper" do
30
+ expect(config.respond_to? :letters_upper).to be_true
31
+ end
32
+
33
+ it "defined letters_number" do
34
+ expect(config.respond_to? :letters_number).to be_true
35
+ end
36
+ end
37
+
38
+ describe "#initialize" do
39
+ it "length should be a default" do
40
+ expect(config.length).to eq(8)
41
+ end
42
+
43
+ it "lower should be a default" do
44
+ expect(config.lower).to be_true
45
+ end
46
+
47
+ it "upper should be a default" do
48
+ expect(config.upper).to be_true
49
+ end
50
+
51
+ it "number should be a default" do
52
+ expect(config.number).to be_true
53
+ end
54
+
55
+ it "letters_lower should be a default" do
56
+ expect(config.letters_lower).to eq(("a".."z").to_a)
57
+ end
58
+
59
+ it "letters_upper should be a default" do
60
+ expect(config.letters_upper).to eq(("A".."Z").to_a)
61
+ end
62
+
63
+ it "letters_number should be a default" do
64
+ expect(config.letters_number).to eq(("0".."9").to_a)
65
+ end
66
+ end
67
+
68
+ describe "#configure" do
69
+ before {
70
+ config.configure do |c|
71
+ c.length = 20
72
+ c.lower = false
73
+ c.upper = false
74
+ c.number = false
75
+ c.letters_lower = ["a"]
76
+ c.letters_upper = ["A"]
77
+ c.letters_number = ["0"]
78
+ end
79
+ }
80
+
81
+ it "set length from block" do
82
+ expect(config.length).to eq(20)
83
+ end
84
+
85
+ it "set lower from block" do
86
+ expect(config.lower).to be_false
87
+ end
88
+
89
+ it "set upper from block" do
90
+ expect(config.upper).to be_false
91
+ end
92
+
93
+ it "set number from block" do
94
+ expect(config.number).to be_false
95
+ end
96
+
97
+ it "set letters_lower from block" do
98
+ expect(config.letters_lower).to eq(["a"])
99
+ end
100
+
101
+ it "set letters_upper from block" do
102
+ expect(config.letters_upper).to eq(["A"])
103
+ end
104
+
105
+ it "set letters_number from block" do
106
+ expect(config.letters_number).to eq(["0"])
107
+ end
108
+
109
+ it "raise error unknown setting" do
110
+ expect {
111
+ config.configure do |c|
112
+ c.unknown = true
113
+ end
114
+ }.to raise_error
115
+ end
116
+ end
117
+
118
+ describe "#merge" do
119
+ it "set length from hash" do
120
+ config.merge(length: 10)
121
+ expect(config.length).to eq(10)
122
+ end
123
+
124
+ it "set lower from hash" do
125
+ config.merge(lower: false)
126
+ expect(config.lower).to be_false
127
+ end
128
+
129
+ it "set upper from hash" do
130
+ config.merge(upper: false)
131
+ expect(config.upper).to be_false
132
+ end
133
+
134
+ it "set number from hash" do
135
+ config.merge(number: false)
136
+ expect(config.number).to be_false
137
+ end
138
+
139
+ it "set letters_lower from hash" do
140
+ config.merge(letters_lower: ["a"])
141
+ expect(config.letters_lower).to eq(["a"])
142
+ end
143
+
144
+ it "set letters_upper from hash" do
145
+ config.merge(letters_upper: ["A"])
146
+ expect(config.letters_upper).to eq(["A"])
147
+ end
148
+
149
+ it "set letters_number from hash" do
150
+ config.merge(letters_number: ["0"])
151
+ expect(config.letters_number).to eq(["0"])
152
+ end
153
+
154
+ it "raise error unknown setting" do
155
+ expect {
156
+ config.merge(unknown: true)
157
+ }.to raise_error
158
+ end
159
+ end
160
+
161
+ describe "#letters" do
162
+ it "return Array object" do
163
+ expect(config.letters.is_a? Array).to be_true
164
+ end
165
+
166
+ it "all elements of the string" do
167
+ config.letters.each do |l|
168
+ expect(l.is_a? String).to be_true
169
+ end
170
+ end
171
+
172
+ it "return all letters" do
173
+ all_letters = ("a".."z").to_a.concat(("A".."Z").to_a).concat(("0".."9").to_a)
174
+ expect(config.letters).to eq(all_letters)
175
+ end
176
+
177
+ it "return except for the lower case" do
178
+ config.merge(lower: false)
179
+ expect(config.letters.include? "a").to be_false
180
+ end
181
+
182
+ it "return except for the upper case" do
183
+ config.merge(upper: false)
184
+ expect(config.letters.include? "A").to be_false
185
+ end
186
+
187
+ it "return except for the number case" do
188
+ config.merge(number: false)
189
+ expect(config.letters.include? "0").to be_false
190
+ end
191
+
192
+ it "raise error if letters is empty" do
193
+ config.merge(lower: false, upper: false, number: false)
194
+ expect {
195
+ config.letters
196
+ }.to raise_error
197
+ end
198
+ end
199
+
200
+ describe "#reset" do
201
+ before {
202
+ config.configure do |c|
203
+ c.length = 20
204
+ c.lower = false
205
+ c.upper = false
206
+ c.number = false
207
+ c.letters_lower = ["a"]
208
+ c.letters_upper = ["A"]
209
+ c.letters_number = ["0"]
210
+ end
211
+ config.reset
212
+ }
213
+
214
+ it "length should be a default" do
215
+ expect(config.length).to eq(8)
216
+ end
217
+
218
+ it "lower should be a default" do
219
+ expect(config.lower).to be_true
220
+ end
221
+
222
+ it "upper should be a default" do
223
+ expect(config.upper).to be_true
224
+ end
225
+
226
+ it "number should be a default" do
227
+ expect(config.number).to be_true
228
+ end
229
+
230
+ it "letters_lower should be a default" do
231
+ expect(config.letters_lower).to eq(("a".."z").to_a)
232
+ end
233
+
234
+ it "letters_upper should be a default" do
235
+ expect(config.letters_upper).to eq(("A".."Z").to_a)
236
+ end
237
+
238
+ it "letters_number should be a default" do
239
+ expect(config.letters_number).to eq(("0".."9").to_a)
240
+ end
241
+ end
242
+ end
@@ -3,7 +3,6 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe Passwd::Password do
6
- let(:default) {@default}
7
6
  let(:password) {Passwd::Password.new}
8
7
 
9
8
  describe "#initialize" do
@@ -21,7 +20,7 @@ describe Passwd::Password do
21
20
  }
22
21
 
23
22
  it "@text should be a random password" do
24
- expect(password.text.size).to eq(default[:length])
23
+ expect(password.text.size).to eq(8)
25
24
  expect(password.text).to eq(password_text)
26
25
  end
27
26
 
data/spec/passwd_spec.rb CHANGED
@@ -3,45 +3,13 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe Passwd do
6
- let(:default) {@default}
7
-
8
- describe "default settings" do
9
- let(:config) {Passwd.config}
10
-
11
- it "length should be a default" do
12
- expect(config[:length]).to eq(default[:length])
13
- end
14
-
15
- it "lower should be a default" do
16
- expect(config[:lower]).to eq(default[:lower])
17
- end
18
-
19
- it "upper should be a default" do
20
- expect(config[:upper]).to eq(default[:upper])
21
- end
22
-
23
- it "number should be a default" do
24
- expect(config[:number]).to eq(default[:number])
25
- end
26
-
27
- it "letters_lower should be a default" do
28
- expect(config[:letters_lower]).to eq(default[:letters_lower])
29
- end
30
-
31
- it "letters_upper should be a default" do
32
- expect(config[:letters_upper]).to eq(default[:letters_upper])
33
- end
34
-
35
- it "letters_number should be a default" do
36
- expect(config[:letters_number]).to eq(default[:letters_number])
37
- end
38
- end
6
+ let(:default) {Passwd::Configuration.new}
39
7
 
40
8
  describe ".create" do
41
9
  it "create random password" do
42
10
  password = Passwd.create
43
11
  expect(password.is_a? String).to be_true
44
- expect(password.size).to eq(default[:length])
12
+ expect(password.size).to eq(default.length)
45
13
  end
46
14
 
47
15
  it "password was created specified characters" do
@@ -50,17 +18,17 @@ describe Passwd do
50
18
 
51
19
  it "password create without lower case" do
52
20
  password = Passwd.create lower: false
53
- expect(default[:letters_lower].include? password).to be_false
21
+ expect(default.letters_lower.include? password).to be_false
54
22
  end
55
23
 
56
24
  it "password create without upper case" do
57
25
  password = Passwd.create upper: false
58
- expect(default[:letters_upper].include? password).to be_false
26
+ expect(default.letters_upper.include? password).to be_false
59
27
  end
60
28
 
61
29
  it "password create without number" do
62
30
  password = Passwd.create(number: false)
63
- expect(default[:letters_number].include? password).to be_false
31
+ expect(default.letters_number.include? password).to be_false
64
32
  end
65
33
  end
66
34
 
@@ -96,42 +64,74 @@ describe Passwd do
96
64
  end
97
65
  end
98
66
 
99
- describe ".config" do
100
- after {Passwd.config(default)}
67
+ describe ".configure" do
68
+ after {Passwd.reset_config}
101
69
 
102
- it "return config hash" do
103
- expect(Passwd.config.is_a? Hash).to be_true
70
+ it "return configuration object" do
71
+ expect(Passwd.configure.is_a? Passwd::Configuration).to be_true
104
72
  end
105
73
 
106
- it "set config value" do
107
- Passwd.config(length: 10)
108
- expect(Passwd.config[:length]).not_to eq(default[:length])
109
- expect(Passwd.config[:lower]).to eq(default[:lower])
74
+ it "set config value from block" do
75
+ Passwd.configure do |c|
76
+ c.length = 10
77
+ end
78
+ expect(Passwd.configure.length).not_to eq(default.length)
79
+ expect(Passwd.configure.length).to eq(10)
110
80
  end
111
- end
112
81
 
113
- describe ".get_retters" do
114
- it "return letters" do
115
- letters = Passwd.send(:get_retters, default)
116
- expect(letters.is_a? Array).to be_true
117
- expect(letters.select{|s| s.is_a? String}).to eq(letters)
118
- expect(letters).to eq(default[:letters_lower] + default[:letters_upper] + default[:letters_number])
82
+ it "set config value from hash" do
83
+ Passwd.configure length: 20
84
+ expect(Passwd.config.length).not_to eq(default.length)
85
+ expect(Passwd.config.length).to eq(20)
119
86
  end
120
87
 
121
- it "should create exception if not specified argument" do
122
- expect(proc{Passwd.send(:get_retters)}).to raise_error
88
+ it "alias of configure as config" do
89
+ expect(Passwd.configure.object_id).to eq(Passwd.config.object_id)
123
90
  end
124
91
  end
125
92
 
126
- describe ".config_validator" do
127
- it "convert to symbol the key" do
128
- config = default.inject({}){|r, (k, v)| r.store(k.to_s, v); r}
129
- expect(Passwd.send(:config_validator, config)).to eq(default)
93
+ describe ".reset_config" do
94
+ let(:config) {Passwd.config}
95
+
96
+ before {
97
+ config.configure do |c|
98
+ c.length = 20
99
+ c.lower = false
100
+ c.upper = false
101
+ c.number = false
102
+ c.letters_lower = ["a"]
103
+ c.letters_upper = ["A"]
104
+ c.letters_number = ["0"]
105
+ end
106
+ config.reset
107
+ }
108
+
109
+ it "length should be a default" do
110
+ expect(config.length).to eq(8)
111
+ end
112
+
113
+ it "lower should be a default" do
114
+ expect(config.lower).to be_true
115
+ end
116
+
117
+ it "upper should be a default" do
118
+ expect(config.upper).to be_true
119
+ end
120
+
121
+ it "number should be a default" do
122
+ expect(config.number).to be_true
130
123
  end
131
124
 
132
- it "delete not defined parameters" do
133
- config = default.merge(invalid_parameter: true)
134
- expect(Passwd.send(:config_validator, config)).to eq(default)
125
+ it "letters_lower should be a default" do
126
+ expect(config.letters_lower).to eq(("a".."z").to_a)
127
+ end
128
+
129
+ it "letters_upper should be a default" do
130
+ expect(config.letters_upper).to eq(("A".."Z").to_a)
131
+ end
132
+
133
+ it "letters_number should be a default" do
134
+ expect(config.letters_number).to eq(("0".."9").to_a)
135
135
  end
136
136
  end
137
137
  end
data/spec/spec_helper.rb CHANGED
@@ -1,19 +1,15 @@
1
- require "passwd"
2
-
1
+ require "simplecov"
3
2
  require "coveralls"
4
3
  Coveralls.wear!
5
4
 
5
+ # SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
6
+ SimpleCov.start do
7
+ add_filter "spec"
8
+ add_filter ".bundle"
9
+ end
10
+
11
+ require "passwd"
12
+
6
13
  RSpec.configure do |config|
7
14
  config.order = "random"
8
- config.before do
9
- @default = {
10
- length: 8,
11
- lower: true,
12
- upper: true,
13
- number: true,
14
- letters_lower: ('a'..'z').to_a,
15
- letters_upper: ('A'..'Z').to_a,
16
- letters_number: ('0'..'9').to_a
17
- }
18
- end
19
15
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: passwd
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - i2bskn
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-05-29 00:00:00.000000000 Z
11
+ date: 2013-06-22 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: bundler
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ~>
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :development
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ~>
28
25
  - !ruby/object:Gem::Version
@@ -30,33 +27,29 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - '>='
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - '>='
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - '>='
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - '>='
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
55
  description: The various utilities on password
@@ -75,46 +68,42 @@ files:
75
68
  - Rakefile
76
69
  - lib/passwd.rb
77
70
  - lib/passwd/active_record.rb
71
+ - lib/passwd/configuration.rb
78
72
  - lib/passwd/password.rb
79
73
  - lib/passwd/version.rb
80
74
  - passwd.gemspec
81
75
  - spec/passwd/active_record_spec.rb
76
+ - spec/passwd/configuration_spec.rb
82
77
  - spec/passwd/password_spec.rb
83
78
  - spec/passwd_spec.rb
84
79
  - spec/spec_helper.rb
85
80
  homepage: https://github.com/i2bskn/passwd
86
81
  licenses:
87
82
  - MIT
83
+ metadata: {}
88
84
  post_install_message:
89
85
  rdoc_options: []
90
86
  require_paths:
91
87
  - lib
92
88
  required_ruby_version: !ruby/object:Gem::Requirement
93
- none: false
94
89
  requirements:
95
- - - ! '>='
90
+ - - '>='
96
91
  - !ruby/object:Gem::Version
97
92
  version: '0'
98
- segments:
99
- - 0
100
- hash: 35413922955959980
101
93
  required_rubygems_version: !ruby/object:Gem::Requirement
102
- none: false
103
94
  requirements:
104
- - - ! '>='
95
+ - - '>='
105
96
  - !ruby/object:Gem::Version
106
97
  version: '0'
107
- segments:
108
- - 0
109
- hash: 35413922955959980
110
98
  requirements: []
111
99
  rubyforge_project:
112
- rubygems_version: 1.8.25
100
+ rubygems_version: 2.0.0
113
101
  signing_key:
114
- specification_version: 3
102
+ specification_version: 4
115
103
  summary: Password utility
116
104
  test_files:
117
105
  - spec/passwd/active_record_spec.rb
106
+ - spec/passwd/configuration_spec.rb
118
107
  - spec/passwd/password_spec.rb
119
108
  - spec/passwd_spec.rb
120
109
  - spec/spec_helper.rb