Commit ac3d341
Changed files (3)
spec
spec/fixtures/soap.builder
@@ -1,14 +1,14 @@
xml.instruct!
-xml.Envelope xmlns: "http://schemas.xmlsoap.org/soap/envelope/" do
+xml.Envelope do
xml.Header do
- xml.Security mustUnderstand: '1' do
+ xml.Security do
encrypt_key_for(xml: xml, id: key_id)
xml.BinarySecurityToken ''
end
end
- xml.Body xmlns: 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd', Id: id do
- encrypt_data_for xml: xml, key_info: body_key_info do |xml|
+ xml.Body Id: id do
+ encrypt_data_for xml: xml, key_info: key_info do |xml|
xml.EncryptMe do
xml.Secret "secret"
end
spec/support/soap.rb
@@ -3,27 +3,20 @@
class Soap
include ::Xml::Kit::Templatable
- attr_reader :id, :encryption_key_pair
+ attr_reader :id
attr_accessor :template_path
- def initialize
+ def initialize(certificate)
@id = ::Xml::Kit::Id.generate
- @embed_signature = false
- @encrypt = true
- @encryption_key_pair = ::Xml::Kit::KeyPair.generate(use: :encryption)
- @encryption_certificate = @encryption_key_pair.certificate
@template_path = File.join(__dir__, '../fixtures/soap.builder')
- end
-
- def symmetric_key
- symmetric_cipher.key
+ encrypt_with(certificate)
end
def key_id
'EK-E2C32E59F27A1320A215468956686717'
end
- def body_key_info
+ def key_info
::Xml::Kit::KeyInfo.new do |x|
x.retrieval_method.uri = key_id
end
spec/xml/kit/soap_spec.rb
@@ -2,16 +2,21 @@
RSpec.describe Soap do
describe '#to_xml' do
- subject { described_class.new }
+ subject { described_class.new(key_pair.certificate) }
+ let(:key_pair) { ::Xml::Kit::KeyPair.generate(use: :encryption) }
let(:result) { Hash.from_xml(subject.to_xml) }
+ before do
+ puts subject.to_xml(pretty: true)
+ end
+
specify { expect(result['Envelope']).to be_present }
specify { expect(result['Envelope']['Header']).to be_present }
specify do
cipher_value = result['Envelope']['Header']['Security']['EncryptedKey']['CipherData']['CipherValue']
- symmetric_key = subject.encryption_key_pair.private_key.private_decrypt(Base64.decode64(cipher_value))
- expect(symmetric_key).to eql(subject.symmetric_key)
+ symmetric_key = key_pair.private_key.private_decrypt(Base64.decode64(cipher_value))
+ expect(symmetric_key).to eql(subject.symmetric_cipher.key)
algorithm = result['Envelope']['Body']['EncryptedData']['EncryptionMethod']['Algorithm']
cipher_value = result['Envelope']['Body']['EncryptedData']['CipherData']['CipherValue']