From 4acba73b0055f98a4702f99b77af28f83c433b78 Mon Sep 17 00:00:00 2001
From: Matt Bostock <matt@mattbostock.com>
Date: Fri, 8 Jan 2016 11:01:51 +0000
Subject: Test certificate and key with a truncated middle

Test a valid certificate and valid key that have had 48 characters
removed from their middle, to simulate a malformed certificate and key.

Suggested by @DavidS in https://github.com/puppetlabs/puppetlabs-stdlib/pull/552
---
 spec/functions/validate_x509_rsa_key_pair_spec.rb | 26 +++++++++++++++++++++++
 1 file changed, 26 insertions(+)

(limited to 'spec/functions')

diff --git a/spec/functions/validate_x509_rsa_key_pair_spec.rb b/spec/functions/validate_x509_rsa_key_pair_spec.rb
index 048d65e..bfa7e38 100755
--- a/spec/functions/validate_x509_rsa_key_pair_spec.rb
+++ b/spec/functions/validate_x509_rsa_key_pair_spec.rb
@@ -97,6 +97,14 @@ EOS
     valid_key.gsub(/^/, '  ')
   end
 
+  let(:malformed_cert) do
+    truncate_middle(valid_cert)
+  end
+
+  let(:malformed_key) do
+    truncate_middle(valid_key)
+  end
+
   let(:bad_cert) do
     'foo'
   end
@@ -126,6 +134,14 @@ EOS
       it { is_expected.to run.with_params(valid_cert, valid_key_but_indented).and_raise_error(Puppet::ParseError, /Not a valid RSA key/) }
     end
 
+    describe 'valid certificate, malformed key' do
+      it { is_expected.to run.with_params(valid_cert, malformed_key).and_raise_error(Puppet::ParseError, /Not a valid RSA key/) }
+    end
+
+    describe 'malformed certificate, valid key' do
+      it { is_expected.to run.with_params(malformed_cert, valid_key).and_raise_error(Puppet::ParseError, /Not a valid x509 certificate/) }
+    end
+
     describe 'valid certificate, bad key' do
       it { is_expected.to run.with_params(valid_cert, bad_key).and_raise_error(Puppet::ParseError, /Not a valid RSA key/) }
     end
@@ -151,4 +167,14 @@ EOS
       it { is_expected.to run.with_params("baz", true).and_raise_error(Puppet::ParseError, /is not a string/) }
     end
   end
+
+  def truncate_middle(string)
+    chars_to_truncate = 48
+    middle = (string.length / 2).floor
+    start_pos = middle - (chars_to_truncate / 2)
+    end_pos = middle + (chars_to_truncate / 2)
+
+    string[start_pos...end_pos] = ''
+    return string
+  end
 end
-- 
cgit v1.2.3