@@ -1800,6 +1800,70 @@ func TestHandler_RemoveX509Cert_BySerialNumber(t *testing.T) {
1800
1800
require .Equal (t , 1 , len (leafCerts .Certs ))
1801
1801
}
1802
1802
1803
+ func TestHandler_RemoveX509Cert_RevokedAndApprovedCertificate (t * testing.T ) {
1804
+ setup := Setup (t )
1805
+ // propose and approve x509 root certificate
1806
+ rootCertOptions := & rootCertOptions {
1807
+ pemCert : testconstants .RootCertWithSameSubjectAndSKID1 ,
1808
+ subject : testconstants .RootCertWithSameSubjectAndSKIDSubject ,
1809
+ subjectKeyID : testconstants .RootCertWithSameSubjectAndSKIDSubjectKeyID ,
1810
+ info : testconstants .Info ,
1811
+ vid : 65521 ,
1812
+ }
1813
+ proposeAndApproveRootCertificate (setup , setup .Trustee1 , rootCertOptions )
1814
+
1815
+ // Add an intermediate certificate
1816
+ addIntermediateX509Cert := types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateWithSameSubjectAndSKID1 )
1817
+ _ , err := setup .Handler (setup .Ctx , addIntermediateX509Cert )
1818
+ require .NoError (t , err )
1819
+
1820
+ // get certificates for further comparison
1821
+ allCerts := setup .Keeper .GetAllApprovedCertificates (setup .Ctx )
1822
+ require .NotNil (t , allCerts )
1823
+ require .Equal (t , 2 , len (allCerts ))
1824
+ require .Equal (t , 2 , len (allCerts [0 ].Certs )+ len (allCerts [1 ].Certs ))
1825
+
1826
+ // revoke an intermediate certificate
1827
+ revokeX509Cert := types .NewMsgRemoveX509Cert (
1828
+ setup .Trustee1 .String (),
1829
+ testconstants .IntermediateCertWithSameSubjectAndSKIDSubject ,
1830
+ testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID ,
1831
+ testconstants .IntermediateCertWithSameSubjectAndSKID1SerialNumber ,
1832
+ )
1833
+ _ , err = setup .Handler (setup .Ctx , revokeX509Cert )
1834
+ require .NoError (t , err )
1835
+
1836
+ // Add an intermediate certificate with new serial number
1837
+ addIntermediateX509Cert = types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateWithSameSubjectAndSKID2 )
1838
+ _ , err = setup .Handler (setup .Ctx , addIntermediateX509Cert )
1839
+ require .NoError (t , err )
1840
+
1841
+ intermediateCerts , _ := queryApprovedCertificates (setup , testconstants .IntermediateCertWithSameSubjectAndSKIDSubject , testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID )
1842
+ require .Equal (t , 1 , len (intermediateCerts .Certs ))
1843
+ require .Equal (t , testconstants .IntermediateCertWithSameSubjectAndSKIDSubject , intermediateCerts .Certs [0 ].Subject )
1844
+ require .Equal (t , testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID , intermediateCerts .Certs [0 ].SubjectKeyId )
1845
+ require .Equal (t , testconstants .IntermediateCertWithSameSubjectAndSKID2SerialNumber , intermediateCerts .Certs [0 ].SerialNumber )
1846
+
1847
+ // remove an intermediate certificate
1848
+ removeX509Cert := types .NewMsgRemoveX509Cert (
1849
+ setup .Trustee1 .String (),
1850
+ testconstants .IntermediateCertWithSameSubjectAndSKIDSubject ,
1851
+ testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID ,
1852
+ testconstants .IntermediateCertWithSameSubjectAndSKID2SerialNumber ,
1853
+ )
1854
+ _ , err = setup .Handler (setup .Ctx , removeX509Cert )
1855
+ require .NoError (t , err )
1856
+
1857
+ // check that only root and leaf certificates exists
1858
+ allCerts , _ = queryAllApprovedCertificates (setup )
1859
+ require .Equal (t , 1 , len (allCerts ))
1860
+ require .Equal (t , true , allCerts [0 ].Certs [0 ].IsRoot )
1861
+ _ , err = queryApprovedCertificates (setup , testconstants .IntermediateCertWithSameSubjectAndSKIDSubject , testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID )
1862
+ require .Equal (t , codes .NotFound , status .Code (err ))
1863
+ _ , err = queryRevokedCertificates (setup , testconstants .IntermediateCertWithSameSubjectAndSKIDSubject , testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID )
1864
+ require .Equal (t , codes .NotFound , status .Code (err ))
1865
+ }
1866
+
1803
1867
func TestHandler_RemoveX509Cert_RevokedCertificate (t * testing.T ) {
1804
1868
setup := Setup (t )
1805
1869
// propose and approve x509 root certificate
0 commit comments