Commit 2590fe1

mo <mo.khan@gmail.com>
2017-12-30 17:39:11
add specs for certificate.
1 parent 2159542
Changed files (1)
spec/xml/certificate_spec.rb
@@ -7,4 +7,62 @@ RSpec.describe Xml::Kit::Certificate do
       expect(subject.fingerprint).to be_instance_of(Xml::Kit::Fingerprint)
     end
   end
+
+  describe "#for?" do
+    it 'returns true, when it is for signing' do
+      subject = described_class.new(certificate, use: :signing)
+      expect(subject.for?(:signing)).to be_truthy
+      expect(subject).to be_signing
+      expect(subject.for?(:encryption)).to be_falsey
+      expect(subject).to_not be_encryption
+    end
+
+    it 'returns true, when it is for encryption' do
+      subject = described_class.new(certificate, use: :encryption)
+      expect(subject.for?(:encryption)).to be_truthy
+      expect(subject.for?(:signing)).to be_falsey
+
+      expect(subject).to be_encryption
+      expect(subject).to_not be_signing
+    end
+  end
+
+  describe "equality" do
+    it 'is equal by reference equality' do
+      expect(subject).to eql(subject)
+    end
+
+    it 'is equal by value equality' do
+      expect(
+        described_class.new(certificate, use: :signing)
+      ).to eql(
+        described_class.new(certificate, use: :signing)
+      )
+    end
+  end
+
+  describe "#to_h" do
+    it 'returns a hash' do
+      expect(subject.to_h).to eql({
+        use: :signing,
+        fingerprint: subject.fingerprint.to_s,
+      })
+    end
+  end
+
+  describe "#stripped" do
+    it 'removes the BEGIN and END lines' do
+      expected = certificate.to_s.gsub(/-----BEGIN CERTIFICATE-----/, '').gsub(/-----END CERTIFICATE-----/, '').gsub(/\n/, '')
+      expect(subject.stripped).to eql(expected)
+    end
+  end
+
+  describe "#x509" do
+    it 'returns an x509 certificate' do
+      expected = OpenSSL::X509::Certificate.new(certificate.to_s)
+      actual = subject.x509
+      expect(actual).to be_instance_of(OpenSSL::X509::Certificate)
+      expect(actual.to_s).to eql(expected.to_s)
+    end
+  end
 end