Skip to content

Commit

Permalink
Fix broken specs caused by hardcoded certificate fingerprint
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewhavens committed May 6, 2020
1 parent 76823a9 commit 3baf875
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 9 deletions.
21 changes: 16 additions & 5 deletions spec/certificate_spec.rb
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
describe "Certificates" do

def sha1_fingerprint(path)
result = `openssl x509 -in "#{path}" -inform der -noout -sha1 -fingerprint`
begin
result = result.match(/SHA1 Fingerprint=(.*)/)[1]
result.delete!(':')
return result
rescue
raise "Error parsing certificate '#{path}'"
end
end

[:ios, :mac].each do |platform|
describe platform.to_s do
[:distribution, :development_free, :development].each do |type|
Expand All @@ -25,7 +36,7 @@
MotionProvisioning::Certificate.new.import_file("spec/fixtures/#{platform}_#{type}_private_key.p12")

allow(STDIN).to receive(:gets).and_return("\n")
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq(certificate[:fingerprint])
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq sha1_fingerprint("spec/fixtures/#{platform}_#{type}_certificate.cer")
end

it "can create new certificate revoking an existing one" do
Expand All @@ -37,7 +48,7 @@
stub_download_certificate(platform, type)

allow(STDIN).to receive(:gets).and_return('y', "\n")
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq(certificate[:fingerprint])
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq sha1_fingerprint("spec/fixtures/#{platform}_#{type}_certificate.cer")
end

it "can download a certificate that is installed locally" do
Expand All @@ -49,7 +60,7 @@

allow($stderr).to receive(:noecho).and_yield
allow(STDIN).to receive(:getc).and_return('1', '2', '3', "\n")
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq(certificate[:fingerprint])
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq sha1_fingerprint("#{MotionProvisioning.output_path}/#{platform}_#{type}_certificate.cer")
expect(File.exist?("#{MotionProvisioning.output_path}/#{platform}_#{type}_certificate.cer")).to be true
expect(File.exist?("#{MotionProvisioning.output_path}/#{platform}_#{type}_private_key.p12")).to be true
end
Expand All @@ -58,7 +69,7 @@
FileUtils.cp("spec/fixtures/#{platform}_#{type}_certificate.cer", MotionProvisioning.output_path)
FileUtils.cp("spec/fixtures/#{platform}_#{type}_private_key.p12", MotionProvisioning.output_path)

expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq(certificate[:fingerprint])
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq sha1_fingerprint("#{MotionProvisioning.output_path}/#{platform}_#{type}_certificate.cer")
end

it "can use cached certificate that is installed" do
Expand All @@ -67,7 +78,7 @@
FileUtils.cp("spec/fixtures/#{platform}_#{type}_certificate.cer", MotionProvisioning.output_path)
FileUtils.cp("spec/fixtures/#{platform}_#{type}_private_key.p12", MotionProvisioning.output_path)

expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq(certificate[:fingerprint])
expect(MotionProvisioning.certificate(platform: platform, type: type, free: free)).to eq sha1_fingerprint("#{MotionProvisioning.output_path}/#{platform}_#{type}_certificate.cer")
end
end
end
Expand Down
4 changes: 0 additions & 4 deletions spec/spec_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -77,14 +77,12 @@ def delete_certificate(name)
type_id: "5QPB9NHCEI",
name: "ios development: MotionProvisioning",
content: fixture_file('ios_development_certificate.cer'),
fingerprint: "2CA548BBBB6F3EB9972A3A1D5273E6E80D6D9941",
},
distribution: {
id: "67890",
type_id: "R58UK2EWSO",
name: "ios distribution: MotionProvisioning",
content: fixture_file('ios_distribution_certificate.cer'),
fingerprint: "0F6D53C90077F5FF7B139CFAD0239C0FD8485C3B",
}
},
mac: {
Expand All @@ -93,14 +91,12 @@ def delete_certificate(name)
type_id: "749Y1QAGU7",
name: "mac development: MotionProvisioning",
content: fixture_file('mac_development_certificate.cer'),
fingerprint: "39ED8989A7CC7569FC69AD0943CD7583BD3924BB",
},
distribution: {
id: "67890",
type_id: "HXZEUKP0FP",
name: "mac distribution: MotionProvisioning",
content: fixture_file('mac_distribution_certificate.cer'),
fingerprint: "7ACADEE9F85A611DCECFE9BA332DE35BCABD8B2B",
}
}
}
Expand Down

0 comments on commit 3baf875

Please sign in to comment.