sequel_password 0.2.1 → 0.2.2

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
- SHA1:
3
- metadata.gz: b4483adb4a3a79018a1b330b14d7695c7695e508
4
- data.tar.gz: d8129c412da70b141fe8ca6a7883b7ae0f876fd8
2
+ SHA256:
3
+ metadata.gz: 660c58e6cdefd391b032cccf40bca3903a6344ba11f348eb43ab65b4e1d8d16a
4
+ data.tar.gz: 7cb76d99f23d70e06a6bc5aa181bad06c19abd37dd885ea7b0b216266d827ff7
5
5
  SHA512:
6
- metadata.gz: c785779cf2df01c32339bb4175bb68a7b9184e2658c5a5914bc3fdf9d75d33b20f51b7ab2c950bb032c28107fe1885dc0811e0f033263cf2d0cf8e2b3e4957d8
7
- data.tar.gz: 9dc83bf6afcc90646a7c0d46028f68a6ee0f4ed142400096dd2b57f1d4674b271e9cb8eb1103322dd0bd64e664c39d701c1a03790f7bca0bce99544ee803ca19
6
+ metadata.gz: bb65bafa030cc25f28fd547e13552ad01e1cf3797cf89c32cea129d5aa1836ac0d1820d8e497f1d2846599dcc7c123e9b2ef11eef6b5245a20239ec4c6c62328
7
+ data.tar.gz: 1d58d2f13219e6e80a8e49cd43c795c38b8942f5748740e6c07604e4635fa9ca40dcad0216ac649a4be9c7886796cac1192619c328a1b2cc2c193e8a2cba799e
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ coverage
2
2
  *.gem
3
3
  .yardoc
4
4
  doc/
5
+ Gemfile.lock
@@ -1,44 +1,32 @@
1
- Style/AlignHash:
2
- Enabled: false
1
+ require:
2
+ - rubocop-rspec
3
3
 
4
- Style/AlignArray:
5
- Enabled: false
4
+ AllCops:
5
+ TargetRubyVersion: 2.2
6
6
 
7
- Style/AlignParameters:
8
- Enabled: false
7
+ # Offense count: 1
8
+ Metrics/AbcSize:
9
+ Max: 17
9
10
 
10
- Style/Documentation:
11
- Enabled: false
12
-
13
- Style/CaseIndentation:
14
- Enabled: false
15
-
16
- Style/IndentHash:
17
- Enabled: false
18
-
19
- Style/NumericLiterals:
20
- Enabled: false
21
-
22
- Style/SignalException:
23
- Enabled: false
24
-
25
- Style/StringLiterals:
26
- Enabled: false
27
-
28
- Style/MultilineOperationIndentation:
29
- Enabled: false
30
-
31
- Style/StringLiterals:
32
- Enabled: false
11
+ # Offense count: 3
12
+ # Configuration parameters: CountComments, ExcludedMethods.
13
+ Metrics/BlockLength:
14
+ Max: 80
33
15
 
16
+ # Offense count: 2
17
+ Style/Documentation:
18
+ Exclude:
19
+ - 'spec/**/*'
20
+ - 'test/**/*'
21
+ - 'lib/sequel_password.rb'
22
+
23
+ # Offense count: 3
24
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
25
+ # URISchemes: http, https
34
26
  Metrics/LineLength:
35
- Max: 250
36
-
37
- Metrics/MethodLength:
38
- Max: 250
39
-
40
- Metrics/ClassLength:
41
- Max: 250
27
+ Max: 103
42
28
 
43
- Lint/UselessAssignment:
44
- Enabled: false
29
+ # Offense count: 7
30
+ # Configuration parameters: AggregateFailuresByDefault.
31
+ RSpec/MultipleExpectations:
32
+ Max: 3
@@ -1,8 +1,10 @@
1
1
  language: ruby
2
- cache: bundler
3
2
  rvm:
4
- - 2.2.1
5
- sudo: false
6
- script: bundle exec rspec
3
+ - 2.3
4
+ - 2.4
5
+ - 2.5
6
+ script:
7
+ - bundle exec rubocop
8
+ - bundle exec rspec
7
9
  notifications:
8
10
  email: false
@@ -1,20 +1,20 @@
1
- require "sequel"
2
- require "securerandom"
3
- require "sequel_password/hashers"
1
+ require 'sequel'
2
+ require 'securerandom'
3
+ require 'sequel_password/hashers'
4
4
 
5
5
  module Sequel
6
6
  module Plugins
7
7
  module Password
8
- class InvalidHasherException < Exception; end
8
+ class InvalidHasherException < RuntimeError; end
9
9
 
10
10
  def self.configure(model, options = {})
11
11
  model.instance_eval do
12
12
  @column = options.fetch(:column, :password)
13
13
  @hashers = options.fetch(:hashers,
14
- pbkdf2_sha256: PBKDF2Hasher.new,
15
- bcrypt_sha256: BCryptSHA256Hasher.new,
16
- bcrypt: BCryptHasher.new,
17
- sha1: SHA1Hasher.new)
14
+ pbkdf2_sha256: PBKDF2Hasher.new,
15
+ bcrypt_sha256: BCryptSHA256Hasher.new,
16
+ bcrypt: BCryptHasher.new,
17
+ sha1: SHA1Hasher.new)
18
18
  end
19
19
  end
20
20
 
@@ -26,7 +26,7 @@ module Sequel
26
26
  attr_reader :column, :hashers
27
27
 
28
28
  Plugins.inherited_instance_variables(self,
29
- "@column": :digest, "@hashers": {})
29
+ "@column": :digest, "@hashers": {})
30
30
 
31
31
  # Returns the given password hash. It will return an unusable
32
32
  # hash if given password is nil.
@@ -47,7 +47,7 @@ module Sequel
47
47
  # @param [String] encoded hash
48
48
  # @return [Boolean] if password is usable
49
49
  def usable_password?(encoded)
50
- return false if encoded.nil? || encoded.start_with?("!")
50
+ return false if encoded.nil? || encoded.start_with?('!')
51
51
 
52
52
  algorithm = encoded.split('$').first
53
53
  !hasher(algorithm).nil?
@@ -68,7 +68,7 @@ module Sequel
68
68
  hasher = hasher(encoded.split('$').first)
69
69
 
70
70
  must_update = hasher.algorithm != preferred.algorithm
71
- must_update = preferred.must_update(encoded) unless must_update
71
+ must_update ||= preferred.must_update(encoded)
72
72
 
73
73
  correct = hasher.verify(password, encoded)
74
74
  setter.call(password) if !setter.nil? && correct && must_update
@@ -94,9 +94,7 @@ module Sequel
94
94
  end
95
95
 
96
96
  def []=(attr, plain)
97
- if attr == model.column
98
- value = model.make_password(plain)
99
- end
97
+ value = model.make_password(plain) if attr == model.column
100
98
  super(attr, value || plain)
101
99
  end
102
100
 
@@ -1,8 +1,8 @@
1
- require "base64"
2
- require "bcrypt"
3
- require "openssl"
4
- require "pbkdf2"
5
- require "securerandom"
1
+ require 'base64'
2
+ require 'bcrypt'
3
+ require 'openssl'
4
+ require 'pbkdf2'
5
+ require 'securerandom'
6
6
 
7
7
  module Sequel
8
8
  module Plugins
@@ -27,7 +27,7 @@ module Sequel
27
27
  # @param [String] password in plain text
28
28
  # @param [String] encoded password to be matched
29
29
  # @return [Boolean] if password match encoded password.
30
- def verify(password, encoded)
30
+ def verify(_password, _encoded)
31
31
  raise NotImplementedError
32
32
  end
33
33
 
@@ -36,7 +36,7 @@ module Sequel
36
36
  # @param [String] password in plain text
37
37
  # @param [String] salt to be used during hashing
38
38
  # @return [String] given password hashed using the given salt
39
- def encode(password, salt)
39
+ def encode(_password, _salt)
40
40
  raise NotImplementedError
41
41
  end
42
42
 
@@ -44,7 +44,7 @@ module Sequel
44
44
  #
45
45
  # @param [String] encoded password
46
46
  # @return [Boolean] if encoded password needs to be updated
47
- def must_update(encoded)
47
+ def must_update(_encoded)
48
48
  false
49
49
  end
50
50
 
@@ -53,7 +53,7 @@ module Sequel
53
53
  def constant_time_compare(a, b)
54
54
  check = a.bytesize ^ b.bytesize
55
55
  a.bytes.zip(b.bytes) { |x, y| check |= x ^ y }
56
- check == 0
56
+ check.zero?
57
57
  end
58
58
  end
59
59
 
@@ -62,26 +62,26 @@ module Sequel
62
62
  class PBKDF2Hasher < Hasher
63
63
  def initialize
64
64
  @algorithm = :pbkdf2_sha256
65
- @iterations = 24000
65
+ @iterations = 24_000
66
66
  @digest = OpenSSL::Digest::SHA256.new
67
67
  end
68
68
 
69
69
  def encode(password, salt, iterations = nil)
70
70
  iterations = @iterations if iterations.nil?
71
71
  hash = PBKDF2.new(password: password, salt: salt,
72
- iterations: iterations, hash_function: @digest)
72
+ iterations: iterations, hash_function: @digest)
73
73
  hash = Base64.strict_encode64(hash.value)
74
74
  "#{@algorithm}$#{iterations}$#{salt}$#{hash}"
75
75
  end
76
76
 
77
77
  def verify(password, encoded)
78
- _, iterations, salt, hash = encoded.split('$', 4)
78
+ _, iterations, salt, = encoded.split('$', 4)
79
79
  hash = encode(password, salt, iterations.to_i)
80
80
  constant_time_compare(encoded, hash)
81
81
  end
82
82
 
83
83
  def must_update(encoded)
84
- _, iterations, _, _ = encoded.split('$', 4)
84
+ _, iterations, = encoded.split('$', 4)
85
85
  iterations.to_i != @iterations
86
86
  end
87
87
  end
@@ -136,7 +136,7 @@ module Sequel
136
136
  end
137
137
 
138
138
  def verify(password, encoded)
139
- _, salt, hash = encoded.split('$', 3)
139
+ _, salt, = encoded.split('$', 3)
140
140
  hash = encode(password, salt)
141
141
  constant_time_compare(encoded, hash)
142
142
  end
@@ -1,25 +1,25 @@
1
- # -*- encoding: utf-8 -*-
2
-
3
1
  Gem::Specification.new do |gem|
4
- gem.authors = ["Timothée Peignier"]
5
- gem.email = ["timothee.peignier@tryphon.org"]
6
- gem.description = %q{Sequel plugins to handle password hashing}
7
- gem.summary = %q{Add passwords hashing to sequel models.}
8
- gem.homepage = "http://rubygems.org/gems/sequel_password"
2
+ gem.authors = ['Timothée Peignier']
3
+ gem.email = ['timothee.peignier@tryphon.org']
4
+ gem.description = 'Sequel plugins to handle password hashing'
5
+ gem.summary = 'Add passwords hashing to sequel models.'
6
+ gem.homepage = 'http://rubygems.org/gems/sequel_password'
9
7
  gem.license = 'MIT'
10
8
 
11
- gem.files = `git ls-files`.split($\)
9
+ gem.files = `git ls-files`.split($OUTPUT_RECORD_SEPARATOR)
12
10
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
13
11
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
- gem.name = "sequel_password"
15
- gem.require_paths = ["lib"]
16
- gem.version = '0.2.1'
12
+ gem.name = 'sequel_password'
13
+ gem.require_paths = ['lib']
14
+ gem.version = '0.2.2'
17
15
 
18
- gem.add_runtime_dependency 'sequel', '~> 4.21', '>= 4.21.0'
19
- gem.add_runtime_dependency 'bcrypt', '~> 3.1', '>= 3.1.10'
16
+ gem.add_runtime_dependency 'bcrypt', '~> 3.1', '>= 3.1.11'
20
17
  gem.add_runtime_dependency 'pbkdf2-ruby', '~> 0.2.1'
18
+ gem.add_runtime_dependency 'sequel', '>= 4.39.0'
21
19
 
22
- gem.add_development_dependency 'rspec', '~> 3.2', '>= 3.2.0'
23
- gem.add_development_dependency 'simplecov', '~> 0.9.2'
20
+ gem.add_development_dependency 'rspec', '~> 3.5', '>= 3.5.0'
21
+ gem.add_development_dependency 'rubocop', '~> 0.52', '>= 0.52.0'
22
+ gem.add_development_dependency 'rubocop-rspec', '~> 1.22', '>= 1.22.0'
23
+ gem.add_development_dependency 'simplecov', '~> 0.15.0'
24
24
  gem.add_development_dependency 'sqlite3', '~> 1.3', '>= 1.3.10'
25
25
  end
@@ -1,39 +1,39 @@
1
- require "spec_helper"
1
+ require 'spec_helper'
2
2
 
3
3
  describe Sequel::Plugins::Password do
4
4
  subject(:user) { DefaultUser.new }
5
5
 
6
- it "has an inherited instance variable @column" do
6
+ it 'has an inherited instance variable @column' do
7
7
  expect(DefaultUser.inherited_instance_variables).to include(:@column)
8
8
  end
9
9
 
10
- it "has an inherited instance variable @hashers" do
10
+ it 'has an inherited instance variable @hashers' do
11
11
  expect(DefaultUser.inherited_instance_variables).to include(:@hashers)
12
12
  end
13
13
 
14
- describe "set_unusable_password" do
15
- let(:secret) { "lètmein" }
14
+ describe 'set_unusable_password' do
15
+ let(:secret) { 'lètmein' }
16
16
 
17
17
  before { user.password = secret }
18
18
 
19
- it "sets an unusable password" do
19
+ it 'sets an unusable password' do
20
20
  expect { user.set_unusable_password }.to change(user, :password)
21
21
  expect(user.password).to match(/^!/)
22
22
  expect(user.password.length).to eq(41)
23
23
  end
24
24
  end
25
25
 
26
- describe "#authenticate" do
27
- let(:secret) { "lètmein" }
26
+ describe '#authenticate' do
27
+ let(:secret) { 'lètmein' }
28
28
 
29
29
  before { user.password = secret }
30
30
 
31
- it "returns true if authentication is successful" do
31
+ it 'returns true if authentication is successful' do
32
32
  expect(user.authenticate(secret)).to be_truthy
33
33
  end
34
34
 
35
- it "returns false when authentication fails" do
36
- expect(user.authenticate("")).to be_falsey
35
+ it 'returns false when authentication fails' do
36
+ expect(user.authenticate('')).to be_falsey
37
37
  end
38
38
  end
39
39
 
@@ -42,14 +42,14 @@ describe Sequel::Plugins::Password do
42
42
  let(:password) { 'lètmein' }
43
43
  let(:salt) { 'seasalt' }
44
44
 
45
- it "encodes the password properly" do
45
+ it 'encodes the password properly' do
46
46
  encoded = hasher.encode(password, salt)
47
47
  expect(encoded).to eq("pbkdf2_sha256$24000$#{salt}$V9DfCAVoweeLwxC/L2mb+7swhzF0XYdyQMqmusZqiTc=")
48
48
  expect(hasher.verify(password, encoded)).to be_truthy
49
49
  expect(hasher.verify(password.reverse, encoded)).to be_falsey
50
50
  end
51
51
 
52
- it "allows blank password" do
52
+ it 'allows blank password' do
53
53
  blank_encoded = hasher.encode('', salt)
54
54
  expect(blank_encoded).to match(/^pbkdf2_sha256\$/)
55
55
  expect(hasher.verify('', blank_encoded)).to be_truthy
@@ -61,7 +61,7 @@ describe Sequel::Plugins::Password do
61
61
  let(:hasher) { described_class.new }
62
62
  let(:password) { 'lètmein' }
63
63
 
64
- it "encodes the password properly" do
64
+ it 'encodes the password properly' do
65
65
  encoded = hasher.encode(password, hasher.salt)
66
66
  expect(encoded).to match(/^bcrypt_sha256\$/)
67
67
  expect(hasher.verify(password, encoded)).to be_truthy
@@ -73,7 +73,7 @@ describe Sequel::Plugins::Password do
73
73
  let(:hasher) { described_class.new }
74
74
  let(:password) { 'lètmein' }
75
75
 
76
- it "encodes the password properly" do
76
+ it 'encodes the password properly' do
77
77
  encoded = hasher.encode(password, hasher.salt)
78
78
  expect(encoded).to match(/^bcrypt\$/)
79
79
  expect(hasher.verify(password, encoded)).to be_truthy
@@ -86,14 +86,14 @@ describe Sequel::Plugins::Password do
86
86
  let(:password) { 'lètmein' }
87
87
  let(:salt) { 'seasalt' }
88
88
 
89
- it "encodes the password properly" do
89
+ it 'encodes the password properly' do
90
90
  encoded = hasher.encode(password, salt)
91
91
  expect(encoded).to eq("sha1$#{salt}$cff36ea83f5706ce9aa7454e63e431fc726b2dc8")
92
92
  expect(hasher.verify(password, encoded)).to be_truthy
93
93
  expect(hasher.verify(password.reverse, encoded)).to be_falsey
94
94
  end
95
95
 
96
- it "allows blank password" do
96
+ it 'allows blank password' do
97
97
  blank_encoded = hasher.encode('', salt)
98
98
  expect(blank_encoded).to match(/^sha1\$/)
99
99
  expect(hasher.verify('', blank_encoded)).to be_truthy
@@ -1,64 +1,52 @@
1
- require "bundler"
1
+ require 'bundler'
2
2
  Bundler.require
3
3
 
4
- require "simplecov"
4
+ require 'simplecov'
5
5
  SimpleCov.start do
6
6
  add_filter('spec/')
7
7
  end
8
8
 
9
- require "sequel"
10
- require "sequel_password"
9
+ require 'sequel'
10
+ require 'sequel_password'
11
11
 
12
12
  RSpec.configure do |config|
13
13
  config.order = 'random'
14
14
 
15
15
  config.before(:suite) do
16
- Sequel::Model.plugin(:schema)
17
- Sequel.connect('sqlite:/')
16
+ db = Sequel.connect('sqlite:/')
18
17
 
19
- class DefaultUser < Sequel::Model
20
- set_schema do
21
- primary_key :id
22
- varchar :password
23
- end
18
+ db.create_table(:default) do
19
+ primary_key :id
20
+ varchar :password
21
+ end
24
22
 
23
+ class DefaultUser < Sequel::Model(:default)
25
24
  plugin :password
26
25
  end
27
26
 
28
- class BCryptUser < Sequel::Model
29
- set_schema do
30
- primary_key :id
31
- varchar :password
32
- end
33
-
34
- plugin :password, hashers: { bcrypt: Sequel::Plugins::Password::BCryptHasher.new }
27
+ class BCryptUser < Sequel::Model(:default)
28
+ plugin :password, hashers: {
29
+ bcrypt: Sequel::Plugins::Password::BCryptHasher.new
30
+ }
35
31
  end
36
32
 
37
- class BCryptSHA256User < Sequel::Model
38
- set_schema do
39
- primary_key :id
40
- varchar :password
41
- end
42
-
43
- plugin :password, hashers: { bcrypt: Sequel::Plugins::Password::BCryptSHA256Hasher.new }
33
+ class BCryptSHA256User < Sequel::Model(:default)
34
+ plugin :password, hashers: {
35
+ bcrypt: Sequel::Plugins::Password::BCryptSHA256Hasher.new
36
+ }
44
37
  end
45
38
 
46
- class AlternateColumnUser < Sequel::Model
47
- set_schema do
48
- primary_key :id
49
- varchar :password_digest
50
- end
39
+ db.create_table(:custom) do
40
+ primary_key :id
41
+ varchar :password_digest
42
+ end
51
43
 
44
+ class AlternateColumnUser < Sequel::Model(:custom)
52
45
  plugin :password, column: :digest
53
46
  end
54
-
55
- DefaultUser.create_table!
56
- BCryptUser.create_table!
57
- BCryptSHA256User.create_table!
58
- AlternateColumnUser.create_table!
59
47
  end
60
48
 
61
- config.around(:each) do |example|
49
+ config.around do |example|
62
50
  Sequel::Model.db.transaction(rollback: :always) { example.run }
63
51
  end
64
52
  end
metadata CHANGED
@@ -1,103 +1,137 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel_password
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Timothée Peignier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-20 00:00:00.000000000 Z
11
+ date: 2018-01-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sequel
14
+ name: bcrypt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '4.21'
19
+ version: '3.1'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 4.21.0
22
+ version: 3.1.11
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '4.21'
29
+ version: '3.1'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 4.21.0
32
+ version: 3.1.11
33
33
  - !ruby/object:Gem::Dependency
34
- name: bcrypt
34
+ name: pbkdf2-ruby
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '3.1'
39
+ version: 0.2.1
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 0.2.1
47
+ - !ruby/object:Gem::Dependency
48
+ name: sequel
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
40
51
  - - ">="
41
52
  - !ruby/object:Gem::Version
42
- version: 3.1.10
53
+ version: 4.39.0
43
54
  type: :runtime
44
55
  prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: 4.39.0
61
+ - !ruby/object:Gem::Dependency
62
+ name: rspec
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '3.5'
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 3.5.0
71
+ type: :development
72
+ prerelease: false
45
73
  version_requirements: !ruby/object:Gem::Requirement
46
74
  requirements:
47
75
  - - "~>"
48
76
  - !ruby/object:Gem::Version
49
- version: '3.1'
77
+ version: '3.5'
50
78
  - - ">="
51
79
  - !ruby/object:Gem::Version
52
- version: 3.1.10
80
+ version: 3.5.0
53
81
  - !ruby/object:Gem::Dependency
54
- name: pbkdf2-ruby
82
+ name: rubocop
55
83
  requirement: !ruby/object:Gem::Requirement
56
84
  requirements:
57
85
  - - "~>"
58
86
  - !ruby/object:Gem::Version
59
- version: 0.2.1
60
- type: :runtime
87
+ version: '0.52'
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ version: 0.52.0
91
+ type: :development
61
92
  prerelease: false
62
93
  version_requirements: !ruby/object:Gem::Requirement
63
94
  requirements:
64
95
  - - "~>"
65
96
  - !ruby/object:Gem::Version
66
- version: 0.2.1
97
+ version: '0.52'
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ version: 0.52.0
67
101
  - !ruby/object:Gem::Dependency
68
- name: rspec
102
+ name: rubocop-rspec
69
103
  requirement: !ruby/object:Gem::Requirement
70
104
  requirements:
71
105
  - - "~>"
72
106
  - !ruby/object:Gem::Version
73
- version: '3.2'
107
+ version: '1.22'
74
108
  - - ">="
75
109
  - !ruby/object:Gem::Version
76
- version: 3.2.0
110
+ version: 1.22.0
77
111
  type: :development
78
112
  prerelease: false
79
113
  version_requirements: !ruby/object:Gem::Requirement
80
114
  requirements:
81
115
  - - "~>"
82
116
  - !ruby/object:Gem::Version
83
- version: '3.2'
117
+ version: '1.22'
84
118
  - - ">="
85
119
  - !ruby/object:Gem::Version
86
- version: 3.2.0
120
+ version: 1.22.0
87
121
  - !ruby/object:Gem::Dependency
88
122
  name: simplecov
89
123
  requirement: !ruby/object:Gem::Requirement
90
124
  requirements:
91
125
  - - "~>"
92
126
  - !ruby/object:Gem::Version
93
- version: 0.9.2
127
+ version: 0.15.0
94
128
  type: :development
95
129
  prerelease: false
96
130
  version_requirements: !ruby/object:Gem::Requirement
97
131
  requirements:
98
132
  - - "~>"
99
133
  - !ruby/object:Gem::Version
100
- version: 0.9.2
134
+ version: 0.15.0
101
135
  - !ruby/object:Gem::Dependency
102
136
  name: sqlite3
103
137
  requirement: !ruby/object:Gem::Requirement
@@ -129,12 +163,11 @@ files:
129
163
  - ".rubocop.yml"
130
164
  - ".travis.yml"
131
165
  - Gemfile
132
- - Gemfile.lock
133
166
  - README.md
134
167
  - lib/sequel_password.rb
135
168
  - lib/sequel_password/hashers.rb
136
169
  - sequel_password.gemspec
137
- - spec/sequel_password_spec.rb
170
+ - spec/sequel/plugins/password_spec.rb
138
171
  - spec/spec_helper.rb
139
172
  homepage: http://rubygems.org/gems/sequel_password
140
173
  licenses:
@@ -156,11 +189,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
156
189
  version: '0'
157
190
  requirements: []
158
191
  rubyforge_project:
159
- rubygems_version: 2.4.5.1
192
+ rubygems_version: 2.7.4
160
193
  signing_key:
161
194
  specification_version: 4
162
195
  summary: Add passwords hashing to sequel models.
163
196
  test_files:
164
- - spec/sequel_password_spec.rb
197
+ - spec/sequel/plugins/password_spec.rb
165
198
  - spec/spec_helper.rb
166
- has_rdoc:
@@ -1,48 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- sequel_password (0.1.1)
5
- bcrypt (~> 3.1, >= 3.1.10)
6
- pbkdf2-ruby (~> 0.2.1)
7
- sequel (~> 4.21, >= 4.21.0)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- bcrypt (3.1.10)
13
- diff-lcs (1.2.5)
14
- docile (1.1.5)
15
- multi_json (1.11.0)
16
- pbkdf2-ruby (0.2.1)
17
- rspec (3.2.0)
18
- rspec-core (~> 3.2.0)
19
- rspec-expectations (~> 3.2.0)
20
- rspec-mocks (~> 3.2.0)
21
- rspec-core (3.2.2)
22
- rspec-support (~> 3.2.0)
23
- rspec-expectations (3.2.0)
24
- diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.2.0)
26
- rspec-mocks (3.2.1)
27
- diff-lcs (>= 1.2.0, < 2.0)
28
- rspec-support (~> 3.2.0)
29
- rspec-support (3.2.2)
30
- sequel (4.25.0)
31
- simplecov (0.9.2)
32
- docile (~> 1.1.0)
33
- multi_json (~> 1.0)
34
- simplecov-html (~> 0.9.0)
35
- simplecov-html (0.9.0)
36
- sqlite3 (1.3.10)
37
-
38
- PLATFORMS
39
- ruby
40
-
41
- DEPENDENCIES
42
- rspec (~> 3.2, >= 3.2.0)
43
- sequel_password!
44
- simplecov (~> 0.9.2)
45
- sqlite3 (~> 1.3, >= 1.3.10)
46
-
47
- BUNDLED WITH
48
- 1.10.6