Commit 5c0a65a

mo <mo@mokhan.ca>
2017-11-15 23:24:57
rename to serialize/deserialize.
1 parent 7fde965
lib/saml/kit/authentication_request.rb
@@ -75,7 +75,7 @@ module Saml
       end
 
       def serialize
-        Saml::Kit::Content.encode_raw_saml(to_xml)
+        Saml::Kit::Content.serialize(to_xml)
       end
 
       def response_for(user)
lib/saml/kit/content.rb
@@ -1,15 +1,11 @@
 module Saml
   module Kit
     class Content
-      BASE64_FORMAT = %r(\A([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?\Z)
-
-      def self.encode_raw_saml(xml)
+      def self.serialize(xml)
         encode(deflate(xml))
       end
 
-      def self.decode_raw_saml(xml)
-        return xml unless base64_encoded?(xml)
-
+      def self.deserialize(xml)
         decoded = decode(xml)
         begin
           inflate(decoded)
@@ -27,10 +23,6 @@ module Saml
         Base64.strict_encode64(value)
       end
 
-      def self.base64_encoded?(value)
-        !!value.gsub(/[\r\n]|\\r|\\n|\s/, "").match(BASE64_FORMAT)
-      end
-
       def self.inflate(value)
         inflater = Zlib::Inflate.new(-Zlib::MAX_WBITS)
         inflater.inflate(value)
lib/saml/kit/logout_request.rb
@@ -90,7 +90,7 @@ module Saml
       end
 
       def serialize
-        Saml::Kit::Content.encode_raw_saml(to_xml)
+        Saml::Kit::Content.serialize(to_xml)
       end
 
       def response_for(user)
lib/saml/kit/logout_response.rb
@@ -46,7 +46,7 @@ module Saml
       end
 
       def serialize
-        Saml::Kit::Content.encode_raw_saml(to_xml)
+        Saml::Kit::Content.serialize(to_xml)
       end
 
       def to_xml
lib/saml/kit/request.rb
@@ -2,7 +2,7 @@ module Saml
   module Kit
     class Request
       def self.deserialize(raw_request)
-        xml = Saml::Kit::Content.decode_raw_saml(raw_request)
+        xml = Saml::Kit::Content.deserialize(raw_request)
         hash = Hash.from_xml(xml)
         if hash['AuthnRequest'].present?
           AuthenticationRequest.new(xml)
@@ -11,6 +11,7 @@ module Saml
         end
       rescue => error
         Saml::Kit.logger.error(error)
+        Saml::Kit.logger.error(error.backtrace.join("\n"))
         InvalidRequest.new(raw_request)
       end
     end
lib/saml/kit/response.rb
@@ -77,7 +77,7 @@ module Saml
       end
 
       def serialize
-        Saml::Kit::Content.encode_raw_saml(to_xml)
+        Saml::Kit::Content.serialize(to_xml)
       end
 
       def certificate
@@ -122,7 +122,7 @@ module Saml
 
       class << self
         def deserialize(saml_response)
-          new(Saml::Kit::Content.decode_raw_saml(saml_response))
+          new(Saml::Kit::Content.deserialize(saml_response))
         end
       end
 
lib/saml/kit/url_builder.rb
@@ -20,7 +20,7 @@ module Saml
 
       def build_payload(saml_document, relay_state)
         payload = {
-          saml_document.query_string_parameter => Content.encode_raw_saml(saml_document.to_xml),
+          saml_document.query_string_parameter => Content.serialize(saml_document.to_xml),
           'RelayState' => relay_state,
           'SigAlg' => Saml::Kit::Namespaces::SHA256,
         }.map do |(key, value)|
spec/saml/request_spec.rb
@@ -38,5 +38,15 @@ RSpec.describe Saml::Kit::Request do
       expect(result).to be_instance_of(Saml::Kit::LogoutRequest)
       expect(result.name_id).to eql(user.name_id_for)
     end
+
+    [
+      'fZFPa4QwEMW/iuTumqymroMKC1IQ2lLa0kMvJXUjCjGxmbF/vn2je9le9jpvfm/mzZSoJjPDcaHBPunPRSNFP5OxCJtQscVbcApHBKsmjUAdPB/v72C/4zB7R65zhl0g1wmFqD2NzrKobSr2ngmlpS7yuJc8jbPikMfFjRDxh5SqF7w/5DJl0av2GJiKBYsAIi66tUjKUihxkceBEPJlnwLPgBdvLGpCjtEq2qiBaIYkMa5TZnBIIDnnCWpcTROrv1ldrqvD5uxrNfrZedqd9FeZXArl+VgPIVbbPDozdr/RrfOTouup18p4ivutFeY1DZK2xJL6POD/A+o/&RelayState=%7B"redirect_to":"/"%7D&SigAlg=http://www.w3.org/2001/04/xmlenc%23sha256&Signature=dcM/kfdrERjZ+Q+WpzBTvk3RLVeEM5qGEM5ONJ/r4fxvEtMQyk6nT7PNZGsox0XYv+myi2yPBsqYUNC2kVii/uc34dn9l7Voyu6dGsNQPNTOpEwRHHILdjJUqhxEDBpd49vVbgdlF++pQZ7l74bUw8FdIbJ7W4EcOBQ1ffNtWTQNLv9n/D/jYKeGtJtaf61x8zDOlCyBwNi861bKXNFScyOwEFNcpVsgBIYhqZqKUWQVAcgYiGH5r16mtWFcT8NdnIvtICrN5VBpepK/ARnawhM6KhacQYllMpnXgbtsJcyQrRf1s9hqrkos1mRwgKLawZ5NjmF66dw3mKKs22b9NQ==',
+      'fZFNb4MwDIb/CsqdJtBSWguQKqFJSNs0bdMOvUxZCCISJCw2+/j3C/TSXXrxwfbz2q9doByHCU4z9fZZf84aKfoZB4uwFko2ewtOokGwctQIpODl9HAP6UbA5B055QZ2hdwmJKL2ZJxlUVOX7H1/VEe12+s4y8RHvNuGcNRdHh8OoutUkudt17LoTXsMTMmCRAARZ91YJGkppESSx0kSJ9lruoUkBZGdWVQHH8ZKWqmeaALOB6fk0DskyIQQHDUuotzqb1YVy+qwKvtKGj85T5tWfxX8ulBcjvUYbDX1kxuM+o3unB8l3Xa9ZEwbd2srTIsbJG2J8eoy4P8Dqj8=&RelayState=%7B"redirect_to":"/"%7D&SigAlg=http://www.w3.org/2001/04/xmlenc%23sha256&Signature=sI50KhkFGLxFBnuWCZ4gJ+FrG5mY4f5f4afjdRc0lFHdgzMlJt9xzqh39ufHAkhpi2+OdWjg87pwpPgfz3das4QJMMenb/o5vNnFGqt2OMiyjoQbVc7b5xSA78FU+OlwqK3XgGdqo3KrRL+AJuagm4D3VeSbZhZ/0zPm1RG0/spCuxx+BbFwTW0BI+VU9+1zkmdV1CJt8kYtmNdvYavgD7rcUX2MWgaRVR+t/nNND5Wmdoxxfp/pzhkjrjt20+TpkDI9sKWlUSOZnATDFO/KlnKSvn/LrQ8wofqHViRksMhDIvVD9mNu7tJaQ6NB1yPUrmsOblPtAmRuBDBgChdHRA==',
+      'fZFPa4QwEMW/iuSejdFVy6DCghSEtpS29NDLko1ZFDSxmbF/vn2je9le9jpvfm/mzZSopnGGw0K9fTGfi0GKfqbRImxCxRZvwSkcEKyaDAJpeD08PkCyi2H2jpx2I7tCbhMK0XganGVR21TsGJ/yNM2V5jI/dXwvz4rfpUXCU53LRGdpoZOMRe/GY2AqFiwCiLiY1iIpS6EUy4JLyWX2lqQg9yDlB4uakGOwijaqJ5pBiNFpNfYOCbI4jgUaXE2FNd+sLtfVYXP2tRr87DztOvNVimuhvBzrKcRqm2c3Dvo3und+UnQ79VoZOn7eWmFe0yAZS0zUlwH/H1D/AQ==&RelayState=%7B"redirect_to":"/"%7D&SigAlg=http://www.w3.org/2001/04/xmlenc%23sha256&Signature=vNIzNWsCqdi2rs5HMRWSm+udc42K9sCm/epeV212sP4vYwot9K9xvoz8Z7jvY8zsY2BPdjZsEJPpHjPKb4+xB+riyc5fUP5wUEUSsQF5Q5FtoQx0jJbcNDadHoTdH1IEiQazTt7ED6sYmnY93lxqFtRkoUtov6XGXRT6ypNRGRFqn5T4JYZEROhdLRAOSCyoOjZ8kPcWKGP1Fo0+A25bwl1Yo3tqBTZsc522AaLhK/6f7uLftSUaTMA0lnmQqRXzZrfjVtDAHa5JSHLH2eh7vZavyvmqApshL1qHEihRN9VFx7DPjRspvp8pIn/8CH18ynVzzKPxIUOl3Kt4QNsVJA==',
+    ].each do |saml|
+      it do
+        expect(subject.deserialize(saml)).to be_instance_of(Saml::Kit::AuthenticationRequest)
+      end
+    end
   end
 end