main
1# frozen_string_literal: true
2
3RSpec.describe Saml::Kit::Cli::Commands::XmlDigitalSignature do
4 describe '#verify' do
5 let(:command) { "xmldsig verify #{tempfile}" }
6 let(:tempfile) { Tempfile.new('saml-kit').path }
7 let(:entity_id) { SecureRandom.uuid }
8 let(:configuration) do
9 Saml::Kit::Configuration.new do |config|
10 config.entity_id = entity_id
11 config.generate_key_pair_for(use: :signing)
12 end
13 end
14
15 before { IO.write(tempfile, xml) }
16 after { File.unlink(tempfile) }
17
18 context 'when the file is valid' do
19 let(:document) { Saml::Kit::AuthenticationRequest.build(configuration: configuration) }
20 let(:xml) { document.to_xml }
21
22 specify { expect(status).to be_success }
23 specify { expect(output).to include(document.to_xml(pretty: true)) }
24 specify { expect(output).to include("success #{tempfile} is valid") }
25 end
26
27 context 'when the file is invalid' do
28 let(:document) { Saml::Kit::AuthenticationRequest.build(configuration: configuration) }
29 let(:xml) { document.to_xml.gsub(/#{entity_id}/, 'hacked') }
30
31 specify { expect(status).to be_success }
32 specify { expect(output).to include('error Digest value is invalid') }
33 end
34 end
35end