Commit 5546d36
Changed files (3)
lib
saml
kit
cli
core_ext
spec
saml
kit
cli
commands
lib/saml/kit/cli/report.rb
@@ -27,13 +27,6 @@ module Saml
text.length >= max ? "#{text[0..max]}..." : text
end
- def build_body_for(document, table)
- case document
- when Saml::Kit::LogoutRequest
- table.push(['Name Id', document.name_id])
- end
- end
-
def build_table_for(document)
table = []
document.build_header(table)
lib/saml/kit/core_ext/document.rb
@@ -39,6 +39,12 @@ module Saml
end
end
+ class LogoutRequest
+ def build_body(table = [])
+ table.push(['Name Id', name_id])
+ end
+ end
+
class Metadata
def build_header(table = [])
table.push(['Entity Id', entity_id])
spec/saml/kit/cli/commands/decode_spec.rb
@@ -18,22 +18,37 @@ RSpec.describe Saml::Kit::Cli::Commands::Decode do
end
describe '#post' do
- let(:command) { "decode post #{post_binding.serialize(builder)[1]['SAMLResponse']}" }
- let(:document) { builder.build }
- let(:user) { double(name_id_for: SecureRandom.uuid) }
- let(:builder) do
- Saml::Kit::Response.builder(user) do |x|
- x.sign_with(Xml::Kit::KeyPair.generate(use: :signing))
- end
- end
let(:post_binding) do
Saml::Kit::Bindings::HttpPost.new(location: 'https://www.example.com/')
end
- specify { expect(status).to be_success }
- specify { expect(output).to include(document.to_xml(pretty: true)) }
- specify { expect(output).to include("Decoded #{document.send(:name)}") }
- specify { expect(output).to include(document.signature.certificate.x509.to_text) }
+ context "when the document is a Response" do
+ let(:command) { "decode post #{post_binding.serialize(builder)[1]['SAMLResponse']}" }
+ let(:builder) do
+ Saml::Kit::Response.builder(user) do |x|
+ x.sign_with(Xml::Kit::KeyPair.generate(use: :signing))
+ end
+ end
+ let(:user) { double(name_id_for: SecureRandom.uuid) }
+ let(:document) { builder.build }
+
+ specify { expect(status).to be_success }
+ specify { expect(output).to include(document.to_xml(pretty: true)) }
+ specify { expect(output).to include("Decoded #{document.send(:name)}") }
+ specify { expect(output).to include(document.signature.certificate.x509.to_text) }
+ end
+
+ context "when the document is a LogoutRequest" do
+ let(:command) { "decode post #{post_binding.serialize(builder)[1]['SAMLRequest']}" }
+ let(:builder) { Saml::Kit::LogoutRequest.builder(user) }
+ let(:user) { double(name_id_for: SecureRandom.uuid) }
+ let(:document) { builder.build }
+
+ specify { expect(status).to be_success }
+ specify { expect(output).to include(document.to_xml(pretty: true)) }
+ specify { expect(output).to include("Decoded #{document.send(:name)}") }
+ specify { expect(output).to include(user.name_id_for) }
+ end
end
describe '#raw' do