pan_masker 0.1.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
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