diff --git a/spec/private_key_spec.rb b/spec/private_key_spec.rb index 10b8738..d79befd 100644 --- a/spec/private_key_spec.rb +++ b/spec/private_key_spec.rb @@ -15,10 +15,12 @@ end it "generates a MD5 fingerprint matching ssh-keygen" do + skip "Fingerprint not available" if md5_fpr.nil? expect(subject.public_key.fingerprint(md5: true)).to eq(md5_fpr) end it "generates a SHA256 fingerprint matching ssh-keygen" do + skip "Fingerprint not available" if sha256_fpr.nil? expect(subject.public_key.fingerprint).to eq(sha256_fpr) end diff --git a/spec/public_key_spec.rb b/spec/public_key_spec.rb index 7671572..ce52ca1 100644 --- a/spec/public_key_spec.rb +++ b/spec/public_key_spec.rb @@ -13,15 +13,19 @@ describe name do let(:openssh) { fixture(name).strip } let(:comment) { SSHData.key_parts(openssh).last } + let(:sha256_fpr) { ssh_keygen_fingerprint(name, :sha256) } + let(:md5_fpr) { ssh_keygen_fingerprint(name, :md5) } subject { described_class.parse_openssh(openssh) } it "generates a MD5 fingerprint matching ssh-keygen" do - expect(subject.fingerprint(md5: true)).to eq(ssh_keygen_fingerprint(name, :md5)) + skip "Fingerprint not available" if md5_fpr.nil? + expect(subject.fingerprint(md5: true)).to eq(md5_fpr) end it "generates a SHA256 fingerprint matching ssh-keygen" do - expect(subject.fingerprint).to eq(ssh_keygen_fingerprint(name, :sha256)) + skip "Fingerprint not available" if sha256_fpr.nil? + expect(subject.fingerprint).to eq(sha256_fpr) end it "can re-encode back into authorized_keys format" do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 624c13e..b66dc43 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,6 +1,7 @@ require "ssh_data" require "ed25519" require "rspec-parameterized" +require "open3" RSpec.configure do |config| config.color_mode = :off @@ -21,7 +22,9 @@ def fixture(name, binary: false, pem: false) end def ssh_keygen_fingerprint(name, algo, priv: false) - out = `ssh-keygen #{"-e" if priv} -E #{algo} -l -f #{File.join(FIXTURE_PATH, name)}` + out, * = Open3.capture3("ssh-keygen #{'-e' if priv} -E #{algo} -l -f #{File.join(FIXTURE_PATH, name)}") + + return nil if out.strip.empty? out.split(":", 2).last.split(" ").first end