spec/lib/xmldsig_spec.rb in xmldsig-0.2.1 vs spec/lib/xmldsig_spec.rb in xmldsig-0.2.2
- old
+ new
@@ -7,18 +7,39 @@
describe "Sign unsigned documents" do
Dir["spec/fixtures/unsigned/*.xml"].each do |document|
describe "#{document}" do
let(:unsigned_xml) { File.read(document) }
let(:unsigned_document) { Xmldsig::SignedDocument.new(unsigned_xml) }
+ let(:signed_document) { unsigned_document.sign(private_key) }
it "should be signable an validateable" do
- signed_document = unsigned_document.sign(private_key)
Xmldsig::SignedDocument.new(signed_document).validate(certificate).should be_true
end
-
+
it 'should have a signature element' do
- signed_document = unsigned_document.sign(private_key)
Xmldsig::SignedDocument.new(signed_document).signatures.count.should == 1
+ end
+
+ # TODO: remove this verification step when library matures
+ #it 'matches the result from xmlsec1' do
+ # result = `xmlsec1 --sign --id-attr:ID http://example.com/foo#:Foo --privkey-pem spec/fixtures/key.pem #{document}`
+ # result.gsub!("\n", '')
+ # signed_document.gsub!("\n", '')
+ # result.should == signed_document
+ #end
+ end
+ end
+ end
+
+ describe "Verify signed documents" do
+ Dir["spec/fixtures/signed/*.txt"].each do |document|
+ describe "#{document}" do
+ let(:signed_xml) { Base64.decode64(File.read(document)) }
+ let(:signed_document) { Xmldsig::SignedDocument.new(signed_xml) }
+ let(:certificate) { OpenSSL::X509::Certificate.new(File.read(document.gsub('.txt', '.cert'))) }
+
+ it "should be validateable" do
+ signed_document.validate(certificate).should be_true
end
end
end
end