support CRL entry extension encoding in the RevokedCertificateBuilder
diff --git a/tests/test_x509_revokedcertbuilder.py b/tests/test_x509_revokedcertbuilder.py
index 9f79387..0ef92ff 100644
--- a/tests/test_x509_revokedcertbuilder.py
+++ b/tests/test_x509_revokedcertbuilder.py
@@ -48,6 +48,16 @@
         with pytest.raises(ValueError):
             builder.revocation_date(datetime.datetime(2002, 1, 1, 12, 1))
 
+    def test_add_extension_checks_for_duplicates(self):
+        builder = x509.RevokedCertificateBuilder().add_extension(
+            x509.CRLReason(x509.ReasonFlags.ca_compromise), False
+        )
+
+        with pytest.raises(ValueError):
+            builder.add_extension(
+                x509.CRLReason(x509.ReasonFlags.ca_compromise), False
+            )
+
     @pytest.mark.requires_backend_interface(interface=X509Backend)
     def test_no_serial_number(self, backend):
         builder = x509.RevokedCertificateBuilder().revocation_date(
@@ -78,3 +88,67 @@
         assert revoked_certificate.serial_number == serial_number
         assert revoked_certificate.revocation_date == revocation_date
         assert len(revoked_certificate.extensions) == 0
+
+    @pytest.mark.parametrize(
+        "extension",
+        [
+            x509.InvalidityDate(datetime.datetime(2015, 1, 1, 0, 0)),
+            x509.CRLReason(x509.ReasonFlags.ca_compromise),
+            x509.CertificateIssuer([
+                x509.DNSName(u"cryptography.io"),
+            ])
+        ]
+    )
+    @pytest.mark.requires_backend_interface(interface=X509Backend)
+    def test_add_extensions(self, backend, extension):
+        serial_number = 333
+        revocation_date = datetime.datetime(2002, 1, 1, 12, 1)
+        builder = x509.RevokedCertificateBuilder().serial_number(
+            serial_number
+        ).revocation_date(
+            revocation_date
+        ).add_extension(
+            extension, False
+        )
+
+        revoked_certificate = builder.build(backend)
+        assert revoked_certificate.serial_number == serial_number
+        assert revoked_certificate.revocation_date == revocation_date
+        assert len(revoked_certificate.extensions) == 1
+        ext = revoked_certificate.extensions.get_extension_for_class(
+            type(extension)
+        )
+        assert ext.critical is False
+        assert ext.value == extension
+
+    @pytest.mark.requires_backend_interface(interface=X509Backend)
+    def test_add_multiple_extensions(self, backend):
+        serial_number = 333
+        revocation_date = datetime.datetime(2002, 1, 1, 12, 1)
+        invalidity_date = x509.InvalidityDate(
+            datetime.datetime(2015, 1, 1, 0, 0)
+        )
+        certificate_issuer = x509.CertificateIssuer([
+            x509.DNSName(u"cryptography.io"),
+        ])
+        crl_reason = x509.CRLReason(x509.ReasonFlags.aa_compromise)
+        builder = x509.RevokedCertificateBuilder().serial_number(
+            serial_number
+        ).revocation_date(
+            revocation_date
+        ).add_extension(
+            invalidity_date, True
+        ).add_extension(
+            crl_reason, True
+        ).add_extension(
+            certificate_issuer, True
+        )
+
+        revoked_certificate = builder.build(backend)
+        assert len(revoked_certificate.extensions) == 3
+        for ext_data in [invalidity_date, certificate_issuer, crl_reason]:
+            ext = revoked_certificate.extensions.get_extension_for_class(
+                type(ext_data)
+            )
+            assert ext.critical is True
+            assert ext.value == ext_data