Commit b698899

mo <mo.khan@gmail.com>
2018-03-04 19:55:47
add specs for generating key pairs.
1 parent 92ed428
Changed files (3)
lib
saml
kit
spec
saml
kit
lib/saml/kit/cli/commands/certificate.rb
@@ -12,8 +12,10 @@ module Saml
           )
           method_option :passphrase, default: nil, required: false
           def keypair
-            command = GenerateKeyPair.new(passphrase: passphrase, format: format)
-            command.run(self)
+            GenerateKeyPair.new(
+              passphrase: options[:passphrase],
+              format: options[:format]
+            ).run(self)
           end
 
           desc 'dump', 'Dump the details of a X509 Certificate.'
lib/saml/kit/cli.rb
@@ -4,11 +4,12 @@ require 'yaml/store'
 require 'uri'
 
 require 'saml/kit/cli/certificate_report'
+require 'saml/kit/cli/commands'
+require 'saml/kit/cli/generate_key_pair'
 require 'saml/kit/cli/report'
 require 'saml/kit/cli/signature_report'
 require 'saml/kit/cli/version'
 require 'saml/kit/cli/yaml_registry'
-require 'saml/kit/cli/commands'
 
 module Saml
   module Kit
spec/saml/kit/cli/commands/certificate_spec.rb
@@ -6,9 +6,31 @@ RSpec.describe Saml::Kit::Cli::Commands::Certificate do
     [$?, output]
   end
 
-  it 'generates a new keypair' do
-    status, output = execute("certificate keypair --passphrase #{passphrase}")
-    expect(status).to be_success
-    expect(output).to include(passphrase)
+  describe "keypair" do
+    let(:because) { execute(command) }
+    let(:status) { because[0] }
+    let(:output) { because[1] }
+
+    describe "generating a pem" do
+      let(:command) { "certificate keypair --passphrase #{passphrase}" }
+
+      specify { expect(status).to be_success }
+      specify { expect(output).to include(passphrase) }
+      specify { expect(output).to include('-----BEGIN CERTIFICATE-----') }
+      specify { expect(output).to include('-----END CERTIFICATE-----') }
+      specify { expect(output).to include('-----BEGIN RSA PRIVATE KEY-----') }
+      specify { expect(output).to include('-----END RSA PRIVATE KEY-----') }
+      specify { expect(output).to include('Proc-Type: 4,ENCRYPTED') }
+      specify { expect(output).to include('DEK-Info: AES-256-CBC,') }
+    end
+
+    describe "generating env format" do
+      let(:command) { "certificate keypair --passphrase #{passphrase} --format env" }
+
+      specify { expect(status).to be_success }
+      specify { expect(output).to include(passphrase) }
+      specify { expect(output).to include('X509_CERTIFICATE="-----BEGIN CERTIFICATE-----\n') }
+      specify { expect(output).to include('PRIVATE_KEY="-----BEGIN RSA PRIVATE KEY-----\nProc-Type: 4,ENCRYPTED\nDEK-Info: AES-256-CBC') }
+    end
   end
 end