pan_masker 0.1.0 → 0.2.1
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.
- data/bin/pan_masker +1 -1
- data/lib/pan_masker/finder.rb +19 -4
- data/lib/pan_masker.rb +12 -2
- data/test/test_pan_masker.rb +22 -2
- metadata +2 -2
data/bin/pan_masker
CHANGED
data/lib/pan_masker/finder.rb
CHANGED
@@ -1,6 +1,22 @@
|
|
1
1
|
class Pan_masker::Finder
|
2
|
-
def self.find_and_mask_pan(data)
|
3
|
-
|
2
|
+
def self.find_and_mask_pan(data,cardType)
|
3
|
+
cardType = cardType.capitalize
|
4
|
+
case cardType
|
5
|
+
when 'DEFAULT'
|
6
|
+
extractedPans = data.scan(/[\d][0-9]{18}$|[\d][0-9]{15}$|[\d][0-9]{11}$/)
|
7
|
+
when 'VERVE'
|
8
|
+
extractedPans = data.scan(/[\d][0-9]{18}$/)
|
9
|
+
when 'MASTERCARD'
|
10
|
+
extractedPans = data.scan(/[\d][0-9]{15}$/)
|
11
|
+
when 'VISA'
|
12
|
+
extractedPans = data.scan(/[\d][0-9]{12}$|[\d][0-9]{15}$/)
|
13
|
+
when 'MAESTRO'
|
14
|
+
extractedPans = data.scan(/[\d][0-9]{11}$|[\d][0-9]{18}$/)
|
15
|
+
when 'CHINAUNIONPAY'
|
16
|
+
extractedPans = data.scan(/[\d][0-9]{18}$|[\d][0-9]{15}$/)
|
17
|
+
else
|
18
|
+
extractedPans = data.scan(/[\d][0-9]{18}$|[\d][0-9]{15}$|[\d][0-9]{11}$/)
|
19
|
+
end
|
4
20
|
|
5
21
|
if extractedPans.any?
|
6
22
|
arrayLength = extractedPans.count
|
@@ -18,5 +34,4 @@ class Pan_masker::Finder
|
|
18
34
|
end
|
19
35
|
end
|
20
36
|
|
21
|
-
require 'pan_masker/masker'
|
22
|
-
|
37
|
+
require 'pan_masker/masker'
|
data/lib/pan_masker.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
class Pan_masker
|
2
|
-
def self.mask(
|
3
|
-
|
2
|
+
def self.mask(*args)
|
3
|
+
if args.size == 1
|
4
|
+
Pan_masker.maskStart(args[0],'default')
|
5
|
+
elsif args.size == 2
|
6
|
+
Pan_masker.maskStart(args[0],args[1])
|
7
|
+
else
|
8
|
+
Pan_masker.maskStart(args[0],'default')
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.maskStart(data,cardType)
|
13
|
+
maskedData = Finder.find_and_mask_pan(data.to_s,cardType.to_s)
|
4
14
|
maskedData
|
5
15
|
end
|
6
16
|
end
|
data/test/test_pan_masker.rb
CHANGED
@@ -6,11 +6,31 @@ class PanMaskerTest < Test::Unit::TestCase
|
|
6
6
|
assert_equal "the is no pan in this string", Pan_masker.mask("the is no pan in this string")
|
7
7
|
end
|
8
8
|
|
9
|
-
def
|
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
|
10
22
|
assert_equal "mastercard and visa 16 111111******1111", Pan_masker.mask("mastercard and visa 16 1111111111111111")
|
11
23
|
end
|
12
24
|
|
25
|
+
def test_visa_pans
|
26
|
+
assert_equal "visa 16 111111******1111", Pan_masker.mask("visa 16 1111111111111111",'visa')
|
27
|
+
end
|
28
|
+
|
13
29
|
def test_verve_pans
|
14
|
-
assert_equal "verve 19 111111*********1111", Pan_masker.mask("verve 19 1111111111111111111")
|
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')
|
15
35
|
end
|
16
36
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pan_masker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-02-
|
12
|
+
date: 2014-02-12 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
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
15
|
email: me@codegidi.com
|