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

     1  package lints
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  )
     7  
     8  const (
     9  	testCaseDir = "../testlint/testCerts/"
    10  )
    11  
    12  func TestSubjectReverseDNSARPA(t *testing.T) {
    13  	testCases := []struct {
    14  		Name            string
    15  		InputFilename   string
    16  		ExpectedResult  LintStatus
    17  		ExpectedDetails string
    18  	}{
    19  		{
    20  			Name:           "IPv4 rDNS too few labels",
    21  			InputFilename:  "subjectRDNSIPv4TooFewLabels.pem",
    22  			ExpectedResult: Pass, // this linter only cares about well formed rDNS for a reserved network address
    23  		},
    24  		{
    25  			Name:           "IPv4 rDNS bad IP",
    26  			InputFilename:  "subjectRDNSIPv4BadIP.pem",
    27  			ExpectedResult: Pass, // this linter only cares about well formed rDNS for a reserved network address
    28  		},
    29  		{
    30  			Name:            "IPv4 rDNS reserved IP",
    31  			InputFilename:   "subjectRDNSIPv4ReservedIP.pem",
    32  			ExpectedResult:  Error,
    33  			ExpectedDetails: `the first 4 labels of name "1.1.168.192.in-addr.arpa" parsed as a reversed IP address in an IANA reserved IP space.`,
    34  		},
    35  		{
    36  			Name:           "IPv4 rDNS OK",
    37  			InputFilename:  "subjectRDNSIPv4GoodIP.pem",
    38  			ExpectedResult: Pass,
    39  		},
    40  		{
    41  			Name:           "IPv6 rDNS too few labels",
    42  			InputFilename:  "subjectRDNSIPv6TooFewLabels.pem",
    43  			ExpectedResult: Pass, // this linter only cares about well formed rDNS for a reserved network address
    44  		},
    45  		{
    46  			Name:           "IPv6 rDNS bad IP",
    47  			InputFilename:  "subjectRDNSIPv6BadIP.pem",
    48  			ExpectedResult: Pass, // this linter only cares about well formed rDNS for a reserved network address
    49  		},
    50  		{
    51  			Name:            "IPv6 rDNS reserved IP",
    52  			InputFilename:   "subjectRDNSIPv6ReservedIP.pem",
    53  			ExpectedResult:  Error,
    54  			ExpectedDetails: `the first 32 labels of name "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa" parsed as a reversed IP address in an IANA reserved IP space.`,
    55  		},
    56  		{
    57  			Name:           "IPv6 rDNS OK",
    58  			InputFilename:  "subjectRDNSIPv6GoodIP.pem",
    59  			ExpectedResult: Pass,
    60  		},
    61  	}
    62  
    63  	for _, tc := range testCases {
    64  		t.Run(tc.Name, func(t *testing.T) {
    65  			inputPath := fmt.Sprintf("%s%s", testCaseDir, tc.InputFilename)
    66  			result := Lints["e_subject_contains_reserved_arpa_ip"].Execute(ReadCertificate(inputPath))
    67  			if result.Status != tc.ExpectedResult {
    68  				t.Errorf("expected result %v was %v", tc.ExpectedResult, result.Status)
    69  			}
    70  			if result.Details != tc.ExpectedDetails {
    71  				t.Errorf("expected result details %q was %q", tc.ExpectedDetails, result.Details)
    72  			}
    73  		})
    74  	}
    75  }