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 CHANGED
@@ -1,4 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'pan_masker'
4
- puts Pan_masker.mask(ARGV[0])
4
+ puts Pan_masker.mask(ARGV[0],ARGV[1])
@@ -1,6 +1,22 @@
1
1
  class Pan_masker::Finder
2
- def self.find_and_mask_pan(data)
3
- extractedPans = data.scan(/[\d][0-9]{18}|[\d][0-9]{15}/)
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(data)
3
- maskedData = Finder.find_and_mask_pan(data.to_s)
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
@@ -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 test_mastercard_and_visa_pans
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.0
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-03 00:00:00.000000000 Z
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