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