github.com/Venafi/vcert/v5@v5.10.2/pkg/certificate/extKeyUsage_test.go (about) 1 package certificate 2 3 import ( 4 "github.com/stretchr/testify/require" 5 "testing" 6 ) 7 8 func TestExtKeyUsage_Parse(t *testing.T) { 9 10 t.Run("Any", func(t *testing.T) { 11 eku, err := ParseExtKeyUsage("Any") 12 require.NoError(t, err) 13 require.Equal(t, ExtKeyUsageAny, eku) 14 t.Run("String", func(t *testing.T) { 15 require.Equal(t, "Any", eku.String()) 16 }) 17 t.Run("OID", func(t *testing.T) { 18 oid, err := eku.Oid() 19 require.NoError(t, err) 20 require.Equal(t, ExtKeyUsageAnyOid, oid) 21 }) 22 }) 23 t.Run("ServerAuth", func(t *testing.T) { 24 eku, err := ParseExtKeyUsage("ServerAuth") 25 require.NoError(t, err) 26 require.Equal(t, ExtKeyUsageServerAuth, eku) 27 t.Run("String", func(t *testing.T) { 28 require.Equal(t, "ServerAuth", eku.String()) 29 }) 30 t.Run("OID", func(t *testing.T) { 31 oid, err := eku.Oid() 32 require.NoError(t, err) 33 require.Equal(t, ExtKeyUsageServerAuthOid, oid) 34 }) 35 }) 36 t.Run("ClientAuth", func(t *testing.T) { 37 eku, err := ParseExtKeyUsage("ClientAuth") 38 require.NoError(t, err) 39 require.Equal(t, ExtKeyUsageClientAuth, eku) 40 t.Run("String", func(t *testing.T) { 41 require.Equal(t, "ClientAuth", eku.String()) 42 }) 43 t.Run("OID", func(t *testing.T) { 44 oid, err := eku.Oid() 45 require.NoError(t, err) 46 require.Equal(t, ExtKeyUsageClientAuthOid, oid) 47 }) 48 }) 49 t.Run("CodeSigning", func(t *testing.T) { 50 eku, err := ParseExtKeyUsage("CodeSigning") 51 require.NoError(t, err) 52 require.Equal(t, ExtKeyUsageCodeSigning, eku) 53 t.Run("String", func(t *testing.T) { 54 require.Equal(t, "CodeSigning", eku.String()) 55 }) 56 t.Run("OID", func(t *testing.T) { 57 oid, err := eku.Oid() 58 require.NoError(t, err) 59 require.Equal(t, ExtKeyUsageCodeSigningOid, oid) 60 }) 61 }) 62 t.Run("EmailProtection", func(t *testing.T) { 63 eku, err := ParseExtKeyUsage("EmailProtection") 64 require.NoError(t, err) 65 require.Equal(t, ExtKeyUsageEmailProtection, eku) 66 t.Run("String", func(t *testing.T) { 67 require.Equal(t, "EmailProtection", eku.String()) 68 }) 69 t.Run("OID", func(t *testing.T) { 70 oid, err := eku.Oid() 71 require.NoError(t, err) 72 require.Equal(t, ExtKeyUsageEmailProtectionOid, oid) 73 }) 74 }) 75 t.Run("IPSECEndSystem", func(t *testing.T) { 76 eku, err := ParseExtKeyUsage("IPSECEndSystem") 77 require.NoError(t, err) 78 require.Equal(t, ExtKeyUsageIPSECEndSystem, eku) 79 t.Run("String", func(t *testing.T) { 80 require.Equal(t, "IPSECEndSystem", eku.String()) 81 }) 82 t.Run("OID", func(t *testing.T) { 83 oid, err := eku.Oid() 84 require.NoError(t, err) 85 require.Equal(t, ExtKeyUsageIPSECEndSystemOid, oid) 86 }) 87 }) 88 t.Run("IPSECTunnel", func(t *testing.T) { 89 eku, err := ParseExtKeyUsage("IPSECTunnel") 90 require.NoError(t, err) 91 require.Equal(t, ExtKeyUsageIPSECTunnel, eku) 92 t.Run("String", func(t *testing.T) { 93 require.Equal(t, "IPSECTunnel", eku.String()) 94 }) 95 t.Run("OID", func(t *testing.T) { 96 oid, err := eku.Oid() 97 require.NoError(t, err) 98 require.Equal(t, ExtKeyUsageIPSECTunnelOid, oid) 99 }) 100 }) 101 t.Run("IPSECUser", func(t *testing.T) { 102 eku, err := ParseExtKeyUsage("IPSECUser") 103 require.NoError(t, err) 104 require.Equal(t, ExtKeyUsageIPSECUser, eku) 105 t.Run("String", func(t *testing.T) { 106 require.Equal(t, "IPSECUser", eku.String()) 107 }) 108 t.Run("OID", func(t *testing.T) { 109 oid, err := eku.Oid() 110 require.NoError(t, err) 111 require.Equal(t, ExtKeyUsageIPSECUserOid, oid) 112 }) 113 }) 114 t.Run("TimeStamping", func(t *testing.T) { 115 eku, err := ParseExtKeyUsage("TimeStamping") 116 require.NoError(t, err) 117 require.Equal(t, ExtKeyUsageTimeStamping, eku) 118 t.Run("String", func(t *testing.T) { 119 require.Equal(t, "TimeStamping", eku.String()) 120 }) 121 t.Run("OID", func(t *testing.T) { 122 oid, err := eku.Oid() 123 require.NoError(t, err) 124 require.Equal(t, ExtKeyUsageTimeStampingOid, oid) 125 }) 126 }) 127 t.Run("OCSPSigning", func(t *testing.T) { 128 eku, err := ParseExtKeyUsage("OCSPSigning") 129 require.NoError(t, err) 130 require.Equal(t, ExtKeyUsageOCSPSigning, eku) 131 t.Run("String", func(t *testing.T) { 132 require.Equal(t, "OCSPSigning", eku.String()) 133 }) 134 t.Run("OID", func(t *testing.T) { 135 oid, err := eku.Oid() 136 require.NoError(t, err) 137 require.Equal(t, ExtKeyUsageOCSPSigningOid, oid) 138 }) 139 }) 140 t.Run("MicrosoftServerGatedCrypto", func(t *testing.T) { 141 eku, err := ParseExtKeyUsage("MicrosoftServerGatedCrypto") 142 require.NoError(t, err) 143 require.Equal(t, ExtKeyUsageMicrosoftServerGatedCrypto, eku) 144 t.Run("String", func(t *testing.T) { 145 require.Equal(t, "MicrosoftServerGatedCrypto", eku.String()) 146 }) 147 t.Run("OID", func(t *testing.T) { 148 oid, err := eku.Oid() 149 require.NoError(t, err) 150 require.Equal(t, ExtKeyUsageMicrosoftServerGatedCryptoOid, oid) 151 }) 152 }) 153 t.Run("NetscapeServerGatedCrypto", func(t *testing.T) { 154 eku, err := ParseExtKeyUsage("NetscapeServerGatedCrypto") 155 require.NoError(t, err) 156 require.Equal(t, ExtKeyUsageNetscapeServerGatedCrypto, eku) 157 t.Run("String", func(t *testing.T) { 158 require.Equal(t, "NetscapeServerGatedCrypto", eku.String()) 159 }) 160 t.Run("OID", func(t *testing.T) { 161 oid, err := eku.Oid() 162 require.NoError(t, err) 163 require.Equal(t, ExtKeyUsageNetscapeServerGatedCryptoOid, oid) 164 }) 165 }) 166 t.Run("MicrosoftCommercialCodeSigning", func(t *testing.T) { 167 eku, err := ParseExtKeyUsage("MicrosoftCommercialCodeSigning") 168 require.NoError(t, err) 169 require.Equal(t, ExtKeyUsageMicrosoftCommercialCodeSigning, eku) 170 t.Run("String", func(t *testing.T) { 171 require.Equal(t, "MicrosoftCommercialCodeSigning", eku.String()) 172 }) 173 t.Run("OID", func(t *testing.T) { 174 oid, err := eku.Oid() 175 require.NoError(t, err) 176 require.Equal(t, ExtKeyUsageMicrosoftCommercialCodeSigningOid, oid) 177 }) 178 }) 179 t.Run("MicrosoftKernelCodeSigning", func(t *testing.T) { 180 eku, err := ParseExtKeyUsage("MicrosoftKernelCodeSigning") 181 require.NoError(t, err) 182 require.Equal(t, ExtKeyUsageMicrosoftKernelCodeSigning, eku) 183 t.Run("String", func(t *testing.T) { 184 require.Equal(t, "MicrosoftKernelCodeSigning", eku.String()) 185 }) 186 t.Run("OID", func(t *testing.T) { 187 oid, err := eku.Oid() 188 require.NoError(t, err) 189 require.Equal(t, ExtKeyUsageMicrosoftKernelCodeSigningOid, oid) 190 }) 191 }) 192 t.Run("UnknownExtKeyUsage", func(t *testing.T) { 193 eku, err := ParseExtKeyUsage("UnknownExtKeyUsage") 194 require.Error(t, err) 195 require.Equal(t, UnknownExtKeyUsage, eku) 196 t.Run("String", func(t *testing.T) { 197 require.Equal(t, "UnknownExtKeyUsage", eku.String()) 198 }) 199 t.Run("OID", func(t *testing.T) { 200 oid, err := eku.Oid() 201 require.Error(t, err) 202 require.Nil(t, oid) 203 }) 204 }) 205 } 206 207 func TestExtKeyUsageSlice(t *testing.T) { 208 t.Run("NewExtKeyUsageSlice by string", func(t *testing.T) { 209 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 210 require.NotNil(t, ekuSlice) 211 require.True(t, ekuSlice.Exists(ExtKeyUsageServerAuth)) 212 }) 213 t.Run("NewExtKeyUsageSlice copy", func(t *testing.T) { 214 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 215 ekuSliceCopy := *NewExtKeyUsageSlice(ekuSlice) 216 require.NotNil(t, ekuSliceCopy) 217 require.True(t, ekuSliceCopy.Exists(ExtKeyUsageServerAuth)) 218 }) 219 t.Run("Add by EkU", func(t *testing.T) { 220 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 221 err := ekuSlice.Add(ExtKeyUsageClientAuth) 222 require.NoError(t, err) 223 require.NotNil(t, ekuSlice) 224 require.True(t, ekuSlice.Exists(ExtKeyUsageServerAuth)) 225 require.True(t, ekuSlice.Exists(ExtKeyUsageClientAuth)) 226 }) 227 t.Run("Add by EkU UnknownExtKeyUsage", func(t *testing.T) { 228 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 229 err := ekuSlice.Add(UnknownExtKeyUsage) 230 require.Error(t, err) 231 }) 232 t.Run("Add by String", func(t *testing.T) { 233 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 234 err := ekuSlice.Add("ClientAuth") 235 require.NoError(t, err) 236 require.NotNil(t, ekuSlice) 237 require.True(t, ekuSlice.Exists(ExtKeyUsageServerAuth)) 238 require.True(t, ekuSlice.Exists(ExtKeyUsageClientAuth)) 239 }) 240 t.Run("Add by String UnknownExtKeyUsage", func(t *testing.T) { 241 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 242 err := ekuSlice.Add("UnknownExtKeyUsage") 243 require.Error(t, err) 244 }) 245 t.Run("Add by String slice", func(t *testing.T) { 246 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 247 err := ekuSlice.Add([]string{"ClientAuth", "CodeSigning"}) 248 require.NoError(t, err) 249 require.NotNil(t, ekuSlice) 250 require.True(t, ekuSlice.Exists(ExtKeyUsageServerAuth)) 251 require.True(t, ekuSlice.Exists(ExtKeyUsageClientAuth)) 252 require.True(t, ekuSlice.Exists(ExtKeyUsageCodeSigning)) 253 }) 254 t.Run("Add by String slice UnknownExtKeyUsage", func(t *testing.T) { 255 ekuSlice := *NewExtKeyUsageSlice("ServerAuth") 256 err := ekuSlice.Add([]string{"ClientAuth", "UnknownExtKeyUsage"}) 257 require.Error(t, err) 258 }) 259 }