pan_masker 0.2.1 → 0.2.3
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 +7 -0
- data/lib/pan_masker/finder.rb +2 -2
- data/lib/pan_masker/masker.rb +18 -18
- data/test/test_pan_masker.rb +40 -36
- metadata +5 -7
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 04d909368e342698a21c417f9d0c1a6bd3194cee
|
|
4
|
+
data.tar.gz: b47629dbaa6fcf9aeab59d8fcca31f06d795f71b
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 12b7c096cc840bb597c368d00e22eeee63c871172d0cc657b40d776d7b550610f230c6e43b239a6fa7c34e97807bf5032242f5d0ef765b3e6f1be181ea5d32e1
|
|
7
|
+
data.tar.gz: 8cdd01ab6f4da39c7e1433d8c07cdbdea875168845e4dd6c9e29ef6102d91588fcfd4ea587a6ac1020cacad31dc84bef620deeabdda6d2f02ff6602e36092d00
|
data/lib/pan_masker/finder.rb
CHANGED
|
@@ -3,7 +3,7 @@ class Pan_masker::Finder
|
|
|
3
3
|
cardType = cardType.capitalize
|
|
4
4
|
case cardType
|
|
5
5
|
when 'DEFAULT'
|
|
6
|
-
extractedPans = data.scan(/[\d][0-9]{18}
|
|
6
|
+
extractedPans = data.scan(/[\d][0-9]{11,18}/)
|
|
7
7
|
when 'VERVE'
|
|
8
8
|
extractedPans = data.scan(/[\d][0-9]{18}$/)
|
|
9
9
|
when 'MASTERCARD'
|
|
@@ -15,7 +15,7 @@ class Pan_masker::Finder
|
|
|
15
15
|
when 'CHINAUNIONPAY'
|
|
16
16
|
extractedPans = data.scan(/[\d][0-9]{18}$|[\d][0-9]{15}$/)
|
|
17
17
|
else
|
|
18
|
-
extractedPans = data.scan(/[\d][0-9]{18}
|
|
18
|
+
extractedPans = data.scan(/[\d][0-9]{11,18}/)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
if extractedPans.any?
|
data/lib/pan_masker/masker.rb
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
class Pan_masker::Finder::Masker
|
|
2
|
-
def self.mask_pan(pan)
|
|
3
|
-
panLenght = pan.length
|
|
4
|
-
firstSix = pan[0..5]
|
|
5
|
-
lastFour = pan[panLenght-4..panLenght]
|
|
6
|
-
|
|
7
|
-
panLenghtToBeMasked = panLenght - 10
|
|
8
|
-
count = 1
|
|
9
|
-
mask = '*'
|
|
10
|
-
begin
|
|
11
|
-
mask = mask + '*'
|
|
12
|
-
count += 1
|
|
13
|
-
end while count < panLenghtToBeMasked
|
|
14
|
-
maskedPan = firstSix + mask + lastFour
|
|
15
|
-
maskedPan
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
1
|
+
class Pan_masker::Finder::Masker
|
|
2
|
+
def self.mask_pan(pan)
|
|
3
|
+
panLenght = pan.length
|
|
4
|
+
firstSix = pan[0..5]
|
|
5
|
+
lastFour = pan[panLenght-4..panLenght]
|
|
6
|
+
|
|
7
|
+
panLenghtToBeMasked = panLenght - 10
|
|
8
|
+
count = 1
|
|
9
|
+
mask = '*'
|
|
10
|
+
begin
|
|
11
|
+
mask = mask + '*'
|
|
12
|
+
count += 1
|
|
13
|
+
end while count < panLenghtToBeMasked
|
|
14
|
+
maskedPan = firstSix + mask + lastFour
|
|
15
|
+
maskedPan
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
data/test/test_pan_masker.rb
CHANGED
|
@@ -1,36 +1,40 @@
|
|
|
1
|
-
require 'test/unit'
|
|
2
|
-
require 'pan_masker'
|
|
3
|
-
|
|
4
|
-
class PanMaskerTest < Test::Unit::TestCase
|
|
5
|
-
def test_no_pan
|
|
6
|
-
assert_equal "the is no pan in this string", Pan_masker.mask("the is no pan in this string")
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def test_verve_pans
|
|
10
|
-
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111")
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def test_no_pan_master
|
|
14
|
-
assert_equal "the is no pan in this string", Pan_masker.mask("the is no pan in this string",'mastercard')
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def test_default_pans
|
|
18
|
-
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111")
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_default_pans_two
|
|
22
|
-
assert_equal "mastercard and visa 16 111111******1111", Pan_masker.mask("mastercard and visa 16 1111111111111111")
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_visa_pans
|
|
26
|
-
assert_equal "visa 16 111111******1111", Pan_masker.mask("visa 16 1111111111111111",'visa')
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_verve_pans
|
|
30
|
-
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111",'verve')
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_mastercard_pan
|
|
34
|
-
assert_equal "master 16 111111******1111", Pan_masker.mask("master 16 1111111111111111",'mastercard')
|
|
35
|
-
end
|
|
36
|
-
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'pan_masker'
|
|
3
|
+
|
|
4
|
+
class PanMaskerTest < Test::Unit::TestCase
|
|
5
|
+
def test_no_pan
|
|
6
|
+
assert_equal "the is no pan in this string", Pan_masker.mask("the is no pan in this string")
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_verve_pans
|
|
10
|
+
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_no_pan_master
|
|
14
|
+
assert_equal "the is no pan in this string", Pan_masker.mask("the is no pan in this string",'mastercard')
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_default_pans
|
|
18
|
+
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_default_pans_two
|
|
22
|
+
assert_equal "mastercard and visa 16 111111******1111", Pan_masker.mask("mastercard and visa 16 1111111111111111")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_visa_pans
|
|
26
|
+
assert_equal "visa 16 111111******1111", Pan_masker.mask("visa 16 1111111111111111",'visa')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_verve_pans
|
|
30
|
+
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111",'verve')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_mastercard_pan
|
|
34
|
+
assert_equal "master 16 111111******1111", Pan_masker.mask("master 16 1111111111111111",'mastercard')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_large_text_default
|
|
38
|
+
assert_equal masked, Pan_masker.mask(text)
|
|
39
|
+
end
|
|
40
|
+
end
|
metadata
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pan_masker
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
5
|
-
prerelease:
|
|
4
|
+
version: 0.2.3
|
|
6
5
|
platform: ruby
|
|
7
6
|
authors:
|
|
8
7
|
- Mayowa Anibaba
|
|
9
8
|
autorequire:
|
|
10
9
|
bindir: bin
|
|
11
10
|
cert_chain: []
|
|
12
|
-
date: 2014-
|
|
11
|
+
date: 2014-05-06 00:00:00.000000000 Z
|
|
13
12
|
dependencies: []
|
|
14
13
|
description: A simple gem to scan a string, find and mask mastercard, visa, discover and verve credit/debit card pans to comply with PCIDSS standards
|
|
15
14
|
email: me@codegidi.com
|
|
@@ -26,6 +25,7 @@ files:
|
|
|
26
25
|
homepage: http://rubygems.org/gems/pan_masker
|
|
27
26
|
licenses:
|
|
28
27
|
- MIT
|
|
28
|
+
metadata: {}
|
|
29
29
|
post_install_message:
|
|
30
30
|
rdoc_options: []
|
|
31
31
|
require_paths:
|
|
@@ -35,18 +35,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
35
35
|
- - '>='
|
|
36
36
|
- !ruby/object:Gem::Version
|
|
37
37
|
version: '0'
|
|
38
|
-
none: false
|
|
39
38
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
40
39
|
requirements:
|
|
41
40
|
- - '>='
|
|
42
41
|
- !ruby/object:Gem::Version
|
|
43
42
|
version: '0'
|
|
44
|
-
none: false
|
|
45
43
|
requirements: []
|
|
46
44
|
rubyforge_project:
|
|
47
|
-
rubygems_version: 1.
|
|
45
|
+
rubygems_version: 2.1.9
|
|
48
46
|
signing_key:
|
|
49
|
-
specification_version:
|
|
47
|
+
specification_version: 4
|
|
50
48
|
summary: Pan masker
|
|
51
49
|
test_files:
|
|
52
50
|
- test/test_pan_masker.rb
|