credit_card_validations 4.0.0 → 6.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c947efcf4ef54ace4e9c747430dc75dd1efe0570a260853d8c1eca1963b13ae5
4
- data.tar.gz: a69886a9b837c4872b5bac9bed3dbc6a88757424d2b4303a2c5918f68548cd29
3
+ metadata.gz: c955ab578ccc68fa1525166a326408c8f7ceedb16dfd197b4cee363453f4148c
4
+ data.tar.gz: f66d2c0969e1aac24c04463633e4466c997527b4d9b3a11f36914d207eea08dc
5
5
  SHA512:
6
- metadata.gz: b5407b4b003aca97df24c20e5145cb43ab90d7fa6a62b21a953fcd53f4a97d77b1bd4b564a71767c7639ce6b1fcd5e12b51f82a3c32255eeaf87b1f66e0e6474
7
- data.tar.gz: 6b472410891b0519878b6894222460e042afae072070a5cc22f4af0fbc7773ab01a19a2f12d61572934bbfa3107a672556c128dfe45cd89490bbd709c7f5fd85
6
+ metadata.gz: 96231d43a74789045abf1df806f085d649fb9400c749f2334eaa08771fcc2e369831ae65a74698484fe2b8a531241e8effa4dc6d5258f29523af33319dae435c
7
+ data.tar.gz: 4926b30dce4ca818b0ab18e7711ba96b8145a461703c3659c3eff1368fa860760febb476d1086b7f7addce5608ee501986c30a2dcb13cdab68f26a78a98e18d7
@@ -0,0 +1,29 @@
1
+ name: CI
2
+ on:
3
+ pull_request:
4
+ push:
5
+ branches:
6
+ - master
7
+ jobs:
8
+ test:
9
+ name: Tests with Ruby ${{ matrix.ruby }} Rails ${{ matrix.rails }}
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ ruby-version:
14
+ - 2.7
15
+ - 3.0
16
+ rails:
17
+ - '6.1.5'
18
+ - '7.0.2.3'
19
+ env:
20
+ RAILS_VERSION: ${{ matrix.rails }}
21
+ steps:
22
+ - uses: actions/checkout@v3
23
+ - uses: ruby/setup-ruby@v1
24
+ with:
25
+ ruby-version: ${{ matrix.ruby-version }}
26
+ bundler-cache: true
27
+ - name: Run tests
28
+ run: |
29
+ bundle exec rake
data/Changelog.md CHANGED
@@ -1,3 +1,18 @@
1
+ # 6.0.0
2
+ * changes to discover branch
3
+ * allows to configure usage of own yaml brands file
4
+
5
+ # 5.0.0
6
+ * rails 7 support
7
+ * drop rails support < 5.2
8
+
9
+ # 4.1.0
10
+ * changes to disover and maesto rules
11
+
12
+ # 4.0.0
13
+ * support rails 6
14
+ * test against ruby 3.0, drop ruby 2.1 support
15
+
1
16
  # 3.5.1
2
17
  * Bump activemodel and activesupport versions
3
18
 
data/Gemfile CHANGED
@@ -1,6 +1,7 @@
1
1
  source 'https://rubygems.org'
2
2
  group :test do
3
- gem 'coveralls', require: false # Test coverage website. Go to https://coveralls.io
3
+ gem 'activemodel', ENV['RAILS_VERSION'], require: false
4
+ gem 'activesupport', ENV['RAILS_VERSION'], require: false
4
5
  end
5
6
  # Specify your gem's dependencies in credit_card_validations.gemspec
6
7
  gemspec
data/README.md CHANGED
@@ -1,7 +1,5 @@
1
1
  # CreditCardValidations
2
2
 
3
- [![Build Status](http://img.shields.io/travis/didww/credit_card_validations.svg)](https://travis-ci.org/didww/credit_card_validations)
4
- [![Coverage Status](http://img.shields.io/coveralls/Fivell/credit_card_validations.svg)](https://coveralls.io/r/Fivell/credit_card_validations)
5
3
  [![Gem Version](http://img.shields.io/gem/v/credit_card_validations.svg)](https://rubygems.org/gems/credit_card_validations)
6
4
  [![License](http://img.shields.io/:license-mit-blue.svg)](http://didww.mit-license.org)
7
5
 
@@ -148,6 +146,18 @@ require 'credit_card_validations/plugins/laser'
148
146
  require 'credit_card_validations/plugins/diners_us'
149
147
  ```
150
148
 
149
+
150
+ ### Configuration
151
+
152
+ In order to override default data source you can copy [original one](https://github.com/didww/credit_card_validations/blob/master/lib/data/brands.yaml) , change it and configure during rails initializer
153
+
154
+ ```ruby
155
+ CreditCardValidations.configure do |config|
156
+ config.source = '/path/to/my_brands.yml'
157
+ end
158
+ ```
159
+
160
+
151
161
  ## Contributing
152
162
 
153
163
  1. Fork it
@@ -25,12 +25,12 @@ Gem::Specification.new do |gem|
25
25
  gem.require_paths = ["lib"]
26
26
 
27
27
 
28
- gem.add_dependency "activemodel", ">= 3", "<= 6.2"
29
- gem.add_dependency "activesupport", ">= 3", "<= 6.2"
28
+ gem.add_dependency "activemodel", ">= 5.2", "< 7.1"
29
+ gem.add_dependency "activesupport", ">= 5.2", "< 7.1"
30
30
 
31
31
 
32
32
  gem.add_development_dependency "minitest", '~> 5.14.3'
33
33
  gem.add_development_dependency "mocha", '1.1.0'
34
34
  gem.add_development_dependency 'rake', '~> 10'
35
-
35
+ gem.add_development_dependency 'byebug'
36
36
  end
@@ -0,0 +1,9 @@
1
+ module CreditCardValidations
2
+ class Configuration
3
+ attr_accessor :source
4
+
5
+ def initialize
6
+ @source = nil
7
+ end
8
+ end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module CreditCardValidations
2
- VERSION = '4.0.0'
2
+ VERSION = '6.0.0'
3
3
  end
@@ -1,4 +1,5 @@
1
1
  require 'credit_card_validations/version'
2
+ require 'credit_card_validations/configuration'
2
3
  require 'credit_card_validations/error'
3
4
  require 'active_model'
4
5
  require 'active_support/core_ext'
@@ -14,16 +15,36 @@ module CreditCardValidations
14
15
  autoload :Factory, 'credit_card_validations/factory'
15
16
  autoload :Mmi, 'credit_card_validations/mmi'
16
17
 
18
+ attr_accessor :configuration
19
+
20
+ def self.configuration
21
+ @configuration ||= Configuration.new
22
+ end
23
+
24
+ def self.reset
25
+ @configuration = Configuration.new
26
+ end
27
+
28
+ def self.configure
29
+ yield(configuration)
30
+ reload!
31
+ end
17
32
 
18
33
  def self.add_brand(key, rules, options = {})
19
34
  Detector.add_brand(key, rules, options)
20
35
  end
21
36
 
22
- DATA = YAML.load_file(File.join(File.dirname(__FILE__), 'data', 'brands.yaml')) || {}
37
+ def self.source
38
+ configuration.source || File.join(File.join(File.dirname(__FILE__)), 'data', 'brands.yaml')
39
+ end
40
+
41
+ def self.data
42
+ YAML.load_file(source) || {}
43
+ end
23
44
 
24
45
  def self.reload!
25
46
  Detector.brands = {}
26
- DATA.each do |key, data|
47
+ data.each do |key, data|
27
48
  add_brand(key, data.fetch(:rules), data.fetch(:options, {}))
28
49
  end
29
50
  end
data/lib/data/brands.yaml CHANGED
@@ -197,7 +197,10 @@
197
197
  - '637187'
198
198
  - '637529'
199
199
  - '639'
200
- - '64'
200
+ - '640'
201
+ - '641'
202
+ - '642'
203
+ - '643'
201
204
  - '670'
202
205
  - '671'
203
206
  - '672'
@@ -477,7 +480,29 @@
477
480
  - 16
478
481
  - 19
479
482
  :prefixes:
480
- - '6011'
483
+ - '300'
484
+ - '301'
485
+ - '302'
486
+ - '303'
487
+ - '304'
488
+ - '305'
489
+ - '3095'
490
+ - '36'
491
+ - '38'
492
+ - '39'
493
+ - '60110'
494
+ - '60112'
495
+ - '60113'
496
+ - '60114'
497
+ - '601174'
498
+ - '601177'
499
+ - '601178'
500
+ - '601179'
501
+ - '601186'
502
+ - '601187'
503
+ - '601188'
504
+ - '601189'
505
+ - '60119'
481
506
  - '644'
482
507
  - '645'
483
508
  - '646'
@@ -7,6 +7,39 @@ describe CreditCardValidations do
7
7
  CreditCardValidations.reload!
8
8
  end
9
9
 
10
+
11
+ describe 'configure' do
12
+
13
+ let(:number) { '6111111180456137' }
14
+
15
+ before do
16
+ expect(card_detector.valid?(:discover)).must_equal false
17
+ CreditCardValidations.configure do |config|
18
+ config.source = OVERRIDED_BRANDS_FILE
19
+ end
20
+ end
21
+
22
+ let(:card_detector) {
23
+ detector(number)
24
+ }
25
+
26
+ it 'should generate overrided discover' do
27
+ discover = CreditCardValidations::Factory.random(:discover)
28
+ expect(detector(discover).valid?('DiscoverBrand')).must_equal true
29
+ end
30
+
31
+ it 'should detect patched discover' do
32
+ expect(card_detector.valid?(:discover)).must_equal true
33
+ expect(card_detector.valid?(:visa)).must_equal false
34
+ end
35
+
36
+ after do
37
+ CreditCardValidations.reset
38
+ CreditCardValidations.reload!
39
+ end
40
+
41
+ end
42
+
10
43
  describe 'MMI' do
11
44
  it 'should detect issuer category' do
12
45
  d = detector(VALID_NUMBERS[:visa].first)
@@ -0,0 +1,19 @@
1
+ ---
2
+ :visa:
3
+ :rules:
4
+ - :length:
5
+ - 13
6
+ - 16
7
+ - 19
8
+ :prefixes:
9
+ - '4'
10
+ :options:
11
+ :brand_name: Visa
12
+ :discover:
13
+ :rules:
14
+ - :length:
15
+ - 16
16
+ :prefixes:
17
+ - '61111111'
18
+ :options:
19
+ :brand_name: DiscoverBrand
@@ -43,14 +43,9 @@
43
43
  - 3777 5274 9896 404
44
44
  - 3782 8224 6310 005
45
45
  :discover:
46
- - 6011 1111 1111 1117
47
46
  - 6011 0009 9013 9424
48
47
  - 6011 0000 0000 0004
49
48
  - 6011 0004 0000 0000
50
- - 6011 1532 1637 1980
51
- - 6011 6011 6011 6611
52
- - 6011 6874 8256 4166
53
- - 6011 8148 3690 5651
54
49
  :maestro:
55
50
  - 6759 6498 2643 8453
56
51
  - 5641 8200 0000 0005
data/spec/test_helper.rb CHANGED
@@ -1,9 +1,7 @@
1
- require 'coveralls'
2
- Coveralls.wear!
3
-
4
1
  require 'minitest/autorun'
5
2
  require 'i18n'
6
3
  require 'mocha/mini_test'
4
+ require 'byebug'
7
5
 
8
6
  lib = File.expand_path("#{File.dirname(__FILE__)}/../lib")
9
7
  specs = File.expand_path("#{File.dirname(__FILE__)}/../spec")
@@ -17,4 +15,5 @@ require 'models/credit_card'
17
15
 
18
16
  VALID_NUMBERS = YAML.load_file File.join(File.dirname(__FILE__), 'fixtures/valid_cards.yml')
19
17
  INVALID_NUMBERS = YAML.load_file File.join(File.dirname(__FILE__), 'fixtures/invalid_cards.yml')
18
+ OVERRIDED_BRANDS_FILE = File.join(File.dirname(__FILE__), 'fixtures/overrided_brands.yml')
20
19
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: credit_card_validations
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 6.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-03-18 00:00:00.000000000 Z
11
+ date: 2022-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -16,40 +16,40 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3'
20
- - - "<="
19
+ version: '5.2'
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '6.2'
22
+ version: '7.1'
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: '3'
30
- - - "<="
29
+ version: '5.2'
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '6.2'
32
+ version: '7.1'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - ">="
38
38
  - !ruby/object:Gem::Version
39
- version: '3'
40
- - - "<="
39
+ version: '5.2'
40
+ - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '6.2'
42
+ version: '7.1'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
47
  - - ">="
48
48
  - !ruby/object:Gem::Version
49
- version: '3'
50
- - - "<="
49
+ version: '5.2'
50
+ - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '6.2'
52
+ version: '7.1'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: minitest
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -92,6 +92,20 @@ dependencies:
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
94
  version: '10'
95
+ - !ruby/object:Gem::Dependency
96
+ name: byebug
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
95
109
  description: A ruby gem for validating credit card numbers
96
110
  email:
97
111
  - fedoronchuk@gmail.com
@@ -99,19 +113,18 @@ executables: []
99
113
  extensions: []
100
114
  extra_rdoc_files: []
101
115
  files:
116
+ - ".github/workflows/build.yml"
102
117
  - ".gitignore"
103
118
  - ".hound.yml"
104
- - ".travis.yml"
105
119
  - Changelog.md
106
120
  - Gemfile
107
121
  - LICENSE.txt
108
122
  - README.md
109
123
  - Rakefile
110
124
  - credit_card_validations.gemspec
111
- - gemfiles/rails1-4.gemfile
112
- - gemfiles/rails5.gemfile
113
125
  - lib/active_model/credit_card_number_validator.rb
114
126
  - lib/credit_card_validations.rb
127
+ - lib/credit_card_validations/configuration.rb
115
128
  - lib/credit_card_validations/detector.rb
116
129
  - lib/credit_card_validations/error.rb
117
130
  - lib/credit_card_validations/factory.rb
@@ -127,6 +140,7 @@ files:
127
140
  - spec/credit_card_validations_spec.rb
128
141
  - spec/factory_spec.rb
129
142
  - spec/fixtures/invalid_cards.yml
143
+ - spec/fixtures/overrided_brands.yml
130
144
  - spec/fixtures/valid_cards.yml
131
145
  - spec/models/credit_card.rb
132
146
  - spec/string_spec.rb
@@ -138,7 +152,7 @@ metadata:
138
152
  bug_tracker_uri: https://github.com/didww/credit_card_validations/issues
139
153
  changelog_uri: https://github.com/didww/credit_card_validations/blob/master/Changelog.md
140
154
  source_code_uri: https://github.com/didww/credit_card_validations
141
- post_install_message:
155
+ post_install_message:
142
156
  rdoc_options: []
143
157
  require_paths:
144
158
  - lib
@@ -153,8 +167,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
153
167
  - !ruby/object:Gem::Version
154
168
  version: '0'
155
169
  requirements: []
156
- rubygems_version: 3.0.3
157
- signing_key:
170
+ rubygems_version: 3.1.6
171
+ signing_key:
158
172
  specification_version: 4
159
173
  summary: gem should be used for credit card numbers validation, card brands detections,
160
174
  luhn checks
@@ -163,6 +177,7 @@ test_files:
163
177
  - spec/credit_card_validations_spec.rb
164
178
  - spec/factory_spec.rb
165
179
  - spec/fixtures/invalid_cards.yml
180
+ - spec/fixtures/overrided_brands.yml
166
181
  - spec/fixtures/valid_cards.yml
167
182
  - spec/models/credit_card.rb
168
183
  - spec/string_spec.rb
data/.travis.yml DELETED
@@ -1,32 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1.10
4
- - 2.2.10
5
- - 2.3.5
6
- - 2.4.5
7
- - 2.5.3
8
- - 2.6.3
9
- - 3.0.0
10
- - jruby-9.1.15.0
11
- gemfile:
12
- - gemfiles/rails1-4.gemfile
13
- - gemfiles/rails5.gemfile
14
- matrix:
15
- exclude:
16
- - gemfile: gemfiles/rails5.gemfile
17
- rvm: 2.1.10
18
- - gemfile: gemfiles/rails5.gemfile
19
- rvm: jruby-9.1.6.0
20
- - gemfile: gemfiles/rails1-4.gemfile
21
- rvm: 2.5.3
22
- - gemfile: gemfiles/rails1-4.gemfile
23
- rvm: 2.6.3
24
- - gemfile: gemfiles/rails1-4.gemfile
25
- rvm: 3.0.0
26
- allow_failures:
27
- - rvm: 2.1.10
28
-
29
- before_install:
30
- - gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
31
- - gem install bundler -v '< 2'
32
- - export BUNDLE_PATH="${TRAVIS_BUILD_DIR}/vendor/bundle"
@@ -1,11 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "activemodel", ">= 3", '< 5'
4
- gem "activesupport", ">= 3", '< 5'
5
- group :test do
6
- gem 'tins', '< 1.3.4', platforms: [:ruby_19, :jruby]
7
- gem 'term-ansicolor', '~> 1.3.0', platforms: [:ruby_19, :jruby]
8
- gem 'coveralls', require: false # Test coverage website. Go to https://coveralls.io
9
- end
10
-
11
- gemspec :path => "../"
@@ -1,10 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "activemodel", ">= 5"
4
- gem "activesupport", ">= 5"
5
-
6
- group :test do
7
- gem 'coveralls', require: false # Test coverage website. Go to https://coveralls.io
8
- end
9
-
10
- gemspec :path => "../"