@@ -1676,7 +1676,7 @@ func TestHandler_RevokeX509Cert_BySerialNumber(t *testing.T) {
1676
1676
require .Equal (t , testconstants .IntermediateSubjectKeyID , revokedCerts .SubjectKeyId )
1677
1677
}
1678
1678
1679
- func TestHandler_RemoveX509Cert (t * testing.T ) {
1679
+ func TestHandler_RemoveX509Cert_BySubjectAndSKID (t * testing.T ) {
1680
1680
setup := Setup (t )
1681
1681
// propose and approve x509 root certificate
1682
1682
rootCertOptions := & rootCertOptions {
@@ -1726,22 +1726,40 @@ func TestHandler_RemoveX509Cert(t *testing.T) {
1726
1726
leafCerts , _ := queryApprovedCertificates (setup , testconstants .LeafCertWithSameSubjectAndSKIDSubject , testconstants .LeafCertWithSameSubjectAndSKIDSubjectKeyID )
1727
1727
require .Equal (t , 1 , len (leafCerts .Certs ))
1728
1728
require .Equal (t , testconstants .LeafCertWithSameSubjectAndSKIDSerialNumber , leafCerts .Certs [0 ].SerialNumber )
1729
+ }
1730
+
1731
+ func TestHandler_RemoveX509Cert_BySerialNumber (t * testing.T ) {
1732
+ setup := Setup (t )
1733
+ // propose and approve x509 root certificate
1734
+ rootCertOptions := & rootCertOptions {
1735
+ pemCert : testconstants .RootCertWithSameSubjectAndSKID1 ,
1736
+ subject : testconstants .RootCertWithSameSubjectAndSKIDSubject ,
1737
+ subjectKeyID : testconstants .RootCertWithSameSubjectAndSKIDSubjectKeyID ,
1738
+ info : testconstants .Info ,
1739
+ vid : 65521 ,
1740
+ }
1741
+ proposeAndApproveRootCertificate (setup , setup .Trustee1 , rootCertOptions )
1729
1742
1730
1743
// Add two intermediate certificates again
1731
- addIntermediateX509Cert = types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateWithSameSubjectAndSKID1 )
1732
- _ , err = setup .Handler (setup .Ctx , addIntermediateX509Cert )
1744
+ addIntermediateX509Cert : = types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateWithSameSubjectAndSKID1 )
1745
+ _ , err : = setup .Handler (setup .Ctx , addIntermediateX509Cert )
1733
1746
require .NoError (t , err )
1734
1747
addIntermediateX509Cert = types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateWithSameSubjectAndSKID2 )
1735
1748
_ , err = setup .Handler (setup .Ctx , addIntermediateX509Cert )
1736
1749
require .NoError (t , err )
1737
1750
1751
+ // Add a leaf certificate
1752
+ addLeafX509Cert := types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .LeafCertWithSameSubjectAndSKID )
1753
+ _ , err = setup .Handler (setup .Ctx , addLeafX509Cert )
1754
+ require .NoError (t , err )
1755
+
1738
1756
intermediateCerts , _ := queryApprovedCertificates (setup , testconstants .IntermediateCertWithSameSubjectAndSKIDSubject , testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID )
1739
1757
require .Equal (t , 2 , len (intermediateCerts .Certs ))
1740
1758
require .Equal (t , testconstants .IntermediateCertWithSameSubjectAndSKIDSubject , intermediateCerts .Certs [0 ].Subject )
1741
1759
require .Equal (t , testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID , intermediateCerts .Certs [0 ].SubjectKeyId )
1742
1760
1743
1761
// remove intermediate certificate by serial number
1744
- removeX509Cert = types .NewMsgRemoveX509Cert (
1762
+ removeX509Cert : = types .NewMsgRemoveX509Cert (
1745
1763
setup .Trustee1 .String (),
1746
1764
testconstants .IntermediateCertWithSameSubjectAndSKIDSubject ,
1747
1765
testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID ,
@@ -1751,10 +1769,10 @@ func TestHandler_RemoveX509Cert(t *testing.T) {
1751
1769
require .NoError (t , err )
1752
1770
1753
1771
// check that only root, intermediate(with serial number 3) and leaf certificates exists
1754
- allCerts , _ = queryAllApprovedCertificates (setup )
1772
+ allCerts , _ : = queryAllApprovedCertificates (setup )
1755
1773
require .Equal (t , 3 , len (allCerts ))
1756
1774
require .Equal (t , 3 , len (allCerts [0 ].Certs )+ len (allCerts [1 ].Certs )+ len (allCerts [2 ].Certs ))
1757
- leafCerts , _ = queryApprovedCertificates (setup , testconstants .LeafCertWithSameSubjectAndSKIDSubject , testconstants .LeafCertWithSameSubjectAndSKIDSubjectKeyID )
1775
+ leafCerts , _ : = queryApprovedCertificates (setup , testconstants .LeafCertWithSameSubjectAndSKIDSubject , testconstants .LeafCertWithSameSubjectAndSKIDSubjectKeyID )
1758
1776
require .Equal (t , 1 , len (leafCerts .Certs ))
1759
1777
1760
1778
intermediateCerts , _ = queryApprovedCertificates (setup , testconstants .IntermediateCertWithSameSubjectAndSKIDSubject , testconstants .IntermediateCertWithSameSubjectAndSKIDSubjectKeyID )
@@ -1782,6 +1800,147 @@ func TestHandler_RemoveX509Cert(t *testing.T) {
1782
1800
require .Equal (t , 1 , len (leafCerts .Certs ))
1783
1801
}
1784
1802
1803
+ func TestHandler_RemoveX509Cert_RevokedCertificate (t * testing.T ) {
1804
+ setup := Setup (t )
1805
+ // propose and approve x509 root certificate
1806
+ rootCertOptions := & rootCertOptions {
1807
+ pemCert : testconstants .RootCertPem ,
1808
+ subject : testconstants .RootSubject ,
1809
+ subjectKeyID : testconstants .RootSubjectKeyID ,
1810
+ info : testconstants .Info ,
1811
+ vid : 65521 ,
1812
+ }
1813
+ proposeAndApproveRootCertificate (setup , setup .Trustee1 , rootCertOptions )
1814
+
1815
+ // Add two intermediate certificates again
1816
+ addIntermediateX509Cert := types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateCertPem )
1817
+ _ , err := setup .Handler (setup .Ctx , addIntermediateX509Cert )
1818
+ require .NoError (t , err )
1819
+
1820
+ intermediateCerts , _ := queryApprovedCertificates (setup , testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID )
1821
+ require .Equal (t , 1 , len (intermediateCerts .Certs ))
1822
+ require .Equal (t , testconstants .IntermediateSubject , intermediateCerts .Certs [0 ].Subject )
1823
+ require .Equal (t , testconstants .IntermediateSubjectKeyID , intermediateCerts .Certs [0 ].SubjectKeyId )
1824
+
1825
+ // revoke intermediate certificate by serial number
1826
+ revokeX509Cert := types .NewMsgRevokeX509Cert (
1827
+ setup .Trustee1 .String (),
1828
+ testconstants .IntermediateSubject ,
1829
+ testconstants .IntermediateSubjectKeyID ,
1830
+ testconstants .IntermediateSerialNumber ,
1831
+ testconstants .Info ,
1832
+ )
1833
+ _ , err = setup .Handler (setup .Ctx , revokeX509Cert )
1834
+ require .NoError (t , err )
1835
+
1836
+ _ , err = queryApprovedCertificates (setup , testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID )
1837
+ require .Equal (t , codes .NotFound , status .Code (err ))
1838
+
1839
+ revokedCerts , _ := queryRevokedCertificates (setup , testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID )
1840
+ require .Equal (t , 1 , len (revokedCerts .Certs ))
1841
+ require .Equal (t , testconstants .IntermediateSubject , revokedCerts .Certs [0 ].Subject )
1842
+ require .Equal (t , testconstants .IntermediateSubjectKeyID , revokedCerts .Certs [0 ].SubjectKeyId )
1843
+
1844
+ // remove intermediate certificate by serial number
1845
+ removeX509Cert := types .NewMsgRemoveX509Cert (
1846
+ setup .Trustee1 .String (),
1847
+ testconstants .IntermediateSubject ,
1848
+ testconstants .IntermediateSubjectKeyID ,
1849
+ testconstants .IntermediateSerialNumber ,
1850
+ )
1851
+ _ , err = setup .Handler (setup .Ctx , removeX509Cert )
1852
+ require .NoError (t , err )
1853
+
1854
+ allCerts , _ := queryAllApprovedCertificates (setup )
1855
+ require .Equal (t , 1 , len (allCerts ))
1856
+ require .Equal (t , true , allCerts [0 ].Certs [0 ].IsRoot )
1857
+
1858
+ _ , err = queryApprovedCertificates (setup , testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID )
1859
+ require .Equal (t , codes .NotFound , status .Code (err ))
1860
+ _ , err = queryRevokedCertificates (setup , testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID )
1861
+ require .Equal (t , codes .NotFound , status .Code (err ))
1862
+ }
1863
+
1864
+ func TestHandler_RemoveX509Cert_CertificateDoesNotExist (t * testing.T ) {
1865
+ setup := Setup (t )
1866
+
1867
+ removeX509Cert := types .NewMsgRemoveX509Cert (
1868
+ setup .Trustee1 .String (), testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID , testconstants .IntermediateSerialNumber )
1869
+ _ , err := setup .Handler (setup .Ctx , removeX509Cert )
1870
+ require .Error (t , err )
1871
+ require .True (t , pkitypes .ErrCertificateDoesNotExist .Is (err ))
1872
+ }
1873
+
1874
+ func TestHandler_RemoveX509Cert_EmptyCertificatesList (t * testing.T ) {
1875
+ setup := Setup (t )
1876
+
1877
+ rootCertificate := rootCertificate (setup .Trustee1 )
1878
+ setup .Keeper .AddApprovedCertificate (setup .Ctx , rootCertificate )
1879
+
1880
+ setup .Keeper .SetApprovedCertificates (
1881
+ setup .Ctx ,
1882
+ types.ApprovedCertificates {
1883
+ Subject : testconstants .IntermediateSubject ,
1884
+ SubjectKeyId : testconstants .IntermediateSubjectKeyID ,
1885
+ },
1886
+ )
1887
+
1888
+ removeX509Cert := types .NewMsgRemoveX509Cert (
1889
+ setup .Trustee1 .String (), testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID , "" )
1890
+ _ , err := setup .Handler (setup .Ctx , removeX509Cert )
1891
+ require .Error (t , err )
1892
+ require .True (t , pkitypes .ErrCertificateDoesNotExist .Is (err ))
1893
+ }
1894
+
1895
+ func TestHandler_RemoveX509Cert_ByNotOwner (t * testing.T ) {
1896
+ setup := Setup (t )
1897
+
1898
+ rootCertificate := rootCertificate (setup .Trustee1 )
1899
+ setup .Keeper .AddApprovedCertificate (setup .Ctx , rootCertificate )
1900
+
1901
+ addX509Cert := types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateCertPem )
1902
+ _ , err := setup .Handler (setup .Ctx , addX509Cert )
1903
+ require .NoError (t , err )
1904
+
1905
+ anotherTrustee := GenerateAccAddress ()
1906
+ setup .AddAccount (anotherTrustee , []dclauthtypes.AccountRole {dclauthtypes .Trustee }, 1 )
1907
+
1908
+ removeX509Cert := types .NewMsgRemoveX509Cert (
1909
+ anotherTrustee .String (), testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID , "" )
1910
+ _ , err = setup .Handler (setup .Ctx , removeX509Cert )
1911
+ require .Error (t , err )
1912
+ require .True (t , sdkerrors .ErrUnauthorized .Is (err ))
1913
+ }
1914
+
1915
+ func TestHandler_RemoveX509Cert_ForRootCertificate (t * testing.T ) {
1916
+ setup := Setup (t )
1917
+
1918
+ rootCertOptions := createTestRootCertOptions ()
1919
+ proposeAndApproveRootCertificate (setup , setup .Trustee1 , rootCertOptions )
1920
+
1921
+ removeX509Cert := types .NewMsgRemoveX509Cert (
1922
+ setup .Trustee1 .String (), testconstants .RootSubject , testconstants .RootSubjectKeyID , testconstants .RootSerialNumber )
1923
+ _ , err := setup .Handler (setup .Ctx , removeX509Cert )
1924
+ require .Error (t , err )
1925
+ require .True (t , pkitypes .ErrInappropriateCertificateType .Is (err ))
1926
+ }
1927
+
1928
+ func TestHandler_RemoveX509Cert_InvalidSerialNumber (t * testing.T ) {
1929
+ setup := Setup (t )
1930
+
1931
+ rootCertOptions := createTestRootCertOptions ()
1932
+ proposeAndApproveRootCertificate (setup , setup .Trustee1 , rootCertOptions )
1933
+
1934
+ addX509Cert := types .NewMsgAddX509Cert (setup .Trustee1 .String (), testconstants .IntermediateCertPem )
1935
+ _ , err := setup .Handler (setup .Ctx , addX509Cert )
1936
+ require .NoError (t , err )
1937
+
1938
+ removeX509Cert := types .NewMsgRemoveX509Cert (
1939
+ setup .Trustee1 .String (), testconstants .IntermediateSubject , testconstants .IntermediateSubjectKeyID , "invalid" )
1940
+ _ , err = setup .Handler (setup .Ctx , removeX509Cert )
1941
+ require .Error (t , err )
1942
+ require .True (t , pkitypes .ErrCertificateDoesNotExist .Is (err ))
1943
+ }
1785
1944
func TestHandler_RevokeX509RootCertsBySubjectKeyId (t * testing.T ) {
1786
1945
setup := Setup (t )
1787
1946
0 commit comments