Commit 2bb0a36
Changed files (5)
lib
saml
kit
builders
templates
spec
saml
kit
builders
support
lib/saml/kit/builders/templates/response.builder
@@ -6,6 +6,7 @@ xml.Response response_options do
signature_for(reference_id: id, xml: xml)
xml.Status do
xml.StatusCode Value: status_code
+ xml.StatusMessage(status_message) if status_message.present?
end
render assertion, xml: xml
end
lib/saml/kit/builders/response.rb
@@ -9,7 +9,7 @@ module Saml
include XmlTemplatable
attr_reader :user, :request
attr_accessor :id, :reference_id, :now
- attr_accessor :version, :status_code
+ attr_accessor :version, :status_code, :status_message
attr_accessor :issuer, :destination
attr_reader :configuration
@@ -21,6 +21,7 @@ module Saml
@now = Time.now.utc
@version = '2.0'
@status_code = Namespaces::SUCCESS
+ @status_message = nil
@issuer = configuration.entity_id
@encryption_certificate = request.try(:provider).try(:encryption_certificates).try(:last)
@encrypt = encryption_certificate.present?
spec/saml/kit/builders/response_spec.rb
@@ -38,6 +38,13 @@ RSpec.describe Saml::Kit::Builders::Response do
expect(result.issuer).to eql(issuer)
expect(result.assertion.issuer).to eql(issuer)
end
+
+ it 'builds a response with a status code' do
+ subject.status_code = Saml::Kit::Namespaces::REQUESTER_ERROR
+ subject.status_message = 'Invalid message signature'
+ result = subject.build
+ expect(result.status_message).to eql('Invalid message signature')
+ end
end
describe '#to_xml' do
spec/support/erb_templating.rb
@@ -15,8 +15,8 @@ module ErbTemplating
@erb.result(binding)
end
- def method_missing(name, *args)
- @data[name]
+ def method_missing(method, *)
+ @data[method] || super
end
def respond_to_missing?(method, *)
.reek
@@ -37,6 +37,7 @@ Attribute:
- Saml::Kit::Builders::Response#now
- Saml::Kit::Builders::Response#reference_id
- Saml::Kit::Builders::Response#status_code
+ - Saml::Kit::Builders::Response#status_message
- Saml::Kit::Builders::Response#version
- Saml::Kit::Builders::ServiceProviderMetadata#acs_urls
- Saml::Kit::Builders::ServiceProviderMetadata#logout_urls
@@ -62,7 +63,7 @@ ControlParameter:
- Saml::Kit::Metadata#to_xml
- Saml::Kit::Signature#to_xml
TooManyInstanceVariables:
- max_instance_variables: 11
+ max_instance_variables: 12
TooManyMethods:
max_methods: 30
TooManyStatements: