github.com/zmap/zlint@v1.1.0/lints/lint_ecdsa_ee_invalid_ku_test.go (about)

     1  package lints
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  )
     7  
     8  func TestECDSAInvalidKU(t *testing.T) {
     9  	testCases := []struct {
    10  		name            string
    11  		filename        string
    12  		expectedStatus  LintStatus
    13  		expectedDetails string
    14  	}{
    15  		{
    16  			name:           "non-ecdsa ee cert",
    17  			filename:       "rsaKeyWithParameters.pem",
    18  			expectedStatus: NA,
    19  		},
    20  		{
    21  			name:           "ecdsa ee cert, valid key usage",
    22  			filename:       "ecdsaP256ValidKUs.pem",
    23  			expectedStatus: Pass,
    24  		},
    25  		{
    26  			name:            "ecdsa ee cert, invalid key usage",
    27  			filename:        "ecdsaP384InvalidKUs.pem",
    28  			expectedStatus:  Notice,
    29  			expectedDetails: "Certificate had unexpected key usage(s): KeyUsageKeyEncipherment",
    30  		},
    31  		{
    32  			name:            "ecdsa ee cert, multiple invalid key usages",
    33  			filename:        "ecdsaP256.pem",
    34  			expectedStatus:  Notice,
    35  			expectedDetails: "Certificate had unexpected key usage(s): KeyUsageCRLSign, KeyUsageCertSign",
    36  		},
    37  	}
    38  
    39  	for _, tc := range testCases {
    40  		inputPath := fmt.Sprintf("%s%s", testCaseDir, tc.filename)
    41  		result := Lints["n_ecdsa_ee_invalid_ku"].Execute(ReadCertificate(inputPath))
    42  		if result.Status != tc.expectedStatus {
    43  			t.Errorf("expected result %v. actual result was %v",
    44  				tc.expectedStatus, result.Status)
    45  		}
    46  		if result.Details != tc.expectedDetails {
    47  			t.Errorf("expected details %q. actual result was %q",
    48  				tc.expectedDetails, result.Details)
    49  		}
    50  	}
    51  }