|
31 | 31 | allow(Kernel).to receive(:sleep)
|
32 | 32 | end
|
33 | 33 |
|
| 34 | + def expected_digest(name, content) |
| 35 | + OpenSSL::Digest.new(name).hexdigest(content) |
| 36 | + end |
| 37 | + |
| 38 | + def to_fingerprint(digest) |
| 39 | + digest.scan(/../).join(':').upcase |
| 40 | + end |
| 41 | + |
34 | 42 | context 'when passing keyword arguments' do
|
35 | 43 | it "accepts digest" do
|
36 | 44 | expect(described_class.new(digest: 'SHA512').digest).to eq('SHA512')
|
@@ -395,29 +403,35 @@ def expect_lockfile_to_contain(pid)
|
395 | 403 |
|
396 | 404 | it 'verifies CA cert bundle if a ca_fingerprint is given case-insensitively' do
|
397 | 405 | Puppet[:log_level] = :info
|
398 |
| - machine = described_class.new(digest: 'SHA256', ca_fingerprint: 'caacf69bbbcdad9dbcda92dd2da3608b639d1aea4c314d6cc6823cdb32d8e0f8') |
| 406 | + |
| 407 | + digest = expected_digest('SHA256', cacert_pem) |
| 408 | + fingerprint = to_fingerprint(digest) |
| 409 | + machine = described_class.new(digest: 'SHA256', ca_fingerprint: digest.downcase) |
399 | 410 | state = Puppet::SSL::StateMachine::NeedCACerts.new(machine)
|
400 | 411 | state.next_state
|
401 | 412 |
|
402 |
| - expect(@logs).to include(an_object_having_attributes(message: "Verified CA bundle with digest (SHA256) CA:AC:F6:9B:BB:CD:AD:9D:BC:DA:92:DD:2D:A3:60:8B:63:9D:1A:EA:4C:31:4D:6C:C6:82:3C:DB:32:D8:E0:F8")) |
| 413 | + expect(@logs).to include(an_object_having_attributes(message: "Verified CA bundle with digest (SHA256) #{fingerprint}")) |
403 | 414 | end
|
404 | 415 |
|
405 | 416 | it 'verifies CA cert bundle using non-default fingerprint' do
|
406 | 417 | Puppet[:log_level] = :info
|
407 |
| - machine = described_class.new(digest: 'SHA512', ca_fingerprint: '3c9d1482b878913ad95c9631feac5090cb05c6eab9496178d6fd5c14a023da3b1a8650a3cbaac516d9a48caf0b0742e1ed7eebf55105c024c74834a45056a9d9') |
| 418 | + |
| 419 | + digest = expected_digest('SHA512', cacert_pem) |
| 420 | + machine = described_class.new(digest: 'SHA512', ca_fingerprint: digest) |
408 | 421 | state = Puppet::SSL::StateMachine::NeedCACerts.new(machine)
|
409 | 422 | state.next_state
|
410 | 423 |
|
411 |
| - expect(@logs).to include(an_object_having_attributes(message: "Verified CA bundle with digest (SHA512) 3C:9D:14:82:B8:78:91:3A:D9:5C:96:31:FE:AC:50:90:CB:05:C6:EA:B9:49:61:78:D6:FD:5C:14:A0:23:DA:3B:1A:86:50:A3:CB:AA:C5:16:D9:A4:8C:AF:0B:07:42:E1:ED:7E:EB:F5:51:05:C0:24:C7:48:34:A4:50:56:A9:D9")) |
| 424 | + expect(@logs).to include(an_object_having_attributes(message: "Verified CA bundle with digest (SHA512) #{to_fingerprint(digest)}")) |
412 | 425 | end
|
413 | 426 |
|
414 | 427 | it 'returns an error if verification fails' do
|
415 | 428 | machine = described_class.new(digest: 'SHA256', ca_fingerprint: 'wrong!')
|
416 | 429 | state = Puppet::SSL::StateMachine::NeedCACerts.new(machine)
|
417 | 430 |
|
| 431 | + fingerprint = to_fingerprint(expected_digest('SHA256', cacert_pem)) |
418 | 432 | st = state.next_state
|
419 | 433 | expect(st).to be_an_instance_of(Puppet::SSL::StateMachine::Error)
|
420 |
| - expect(st.message).to eq("CA bundle with digest (SHA256) CA:AC:F6:9B:BB:CD:AD:9D:BC:DA:92:DD:2D:A3:60:8B:63:9D:1A:EA:4C:31:4D:6C:C6:82:3C:DB:32:D8:E0:F8 did not match expected digest WR:ON:G!") |
| 434 | + expect(st.message).to eq("CA bundle with digest (SHA256) #{fingerprint} did not match expected digest WR:ON:G!") |
421 | 435 | end
|
422 | 436 | end
|
423 | 437 | end
|
|
0 commit comments