Skip to content

Commit a322517

Browse files
authored
Merge pull request #68 from github/skip-dsa-if-not-available
Skip tests where ssh-keygen cannot create a fingerprint for DSA/DSS keys.
2 parents 5ac7be5 + 4664b8b commit a322517

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

spec/private_key_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,12 @@
1515
end
1616

1717
it "generates a MD5 fingerprint matching ssh-keygen" do
18+
skip "Fingerprint not available" if md5_fpr.nil?
1819
expect(subject.public_key.fingerprint(md5: true)).to eq(md5_fpr)
1920
end
2021

2122
it "generates a SHA256 fingerprint matching ssh-keygen" do
23+
skip "Fingerprint not available" if sha256_fpr.nil?
2224
expect(subject.public_key.fingerprint).to eq(sha256_fpr)
2325
end
2426

spec/public_key_spec.rb

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,19 @@
1313
describe name do
1414
let(:openssh) { fixture(name).strip }
1515
let(:comment) { SSHData.key_parts(openssh).last }
16+
let(:sha256_fpr) { ssh_keygen_fingerprint(name, :sha256) }
17+
let(:md5_fpr) { ssh_keygen_fingerprint(name, :md5) }
1618

1719
subject { described_class.parse_openssh(openssh) }
1820

1921
it "generates a MD5 fingerprint matching ssh-keygen" do
20-
expect(subject.fingerprint(md5: true)).to eq(ssh_keygen_fingerprint(name, :md5))
22+
skip "Fingerprint not available" if md5_fpr.nil?
23+
expect(subject.fingerprint(md5: true)).to eq(md5_fpr)
2124
end
2225

2326
it "generates a SHA256 fingerprint matching ssh-keygen" do
24-
expect(subject.fingerprint).to eq(ssh_keygen_fingerprint(name, :sha256))
27+
skip "Fingerprint not available" if sha256_fpr.nil?
28+
expect(subject.fingerprint).to eq(sha256_fpr)
2529
end
2630

2731
it "can re-encode back into authorized_keys format" do

spec/spec_helper.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
require "ssh_data"
22
require "ed25519"
33
require "rspec-parameterized"
4+
require "open3"
45

56
RSpec.configure do |config|
67
config.color_mode = :off
@@ -21,7 +22,9 @@ def fixture(name, binary: false, pem: false)
2122
end
2223

2324
def ssh_keygen_fingerprint(name, algo, priv: false)
24-
out = `ssh-keygen #{"-e" if priv} -E #{algo} -l -f #{File.join(FIXTURE_PATH, name)}`
25+
out, * = Open3.capture3("ssh-keygen #{'-e' if priv} -E #{algo} -l -f #{File.join(FIXTURE_PATH, name)}")
26+
27+
return nil if out.strip.empty?
2528
out.split(":", 2).last.split(" ").first
2629
end
2730

0 commit comments

Comments
 (0)