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  }