github.com/searKing/golang/go@v1.2.117/crypto/tls/cert_pool_test.go (about)

     1  // Copyright 2022 The searKing Author. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package tls_test
     6  
     7  import (
     8  	"os"
     9  	"testing"
    10  
    11  	"github.com/searKing/golang/go/crypto/tls"
    12  	testing_ "github.com/searKing/golang/go/testing"
    13  )
    14  
    15  func TestLoadX509CertificatePool(t *testing.T) {
    16  	tmpCertFile, _ := os.CreateTemp("", "test-cert")
    17  	tmpCertPath := tmpCertFile.Name()
    18  	defer func() {
    19  		_ = os.Remove(tmpCertPath)
    20  	}()
    21  	_ = os.WriteFile(tmpCertPath, []byte(certFileContent), 0600)
    22  	tmpCert, err := tls.LoadCertificates(certFixture, keyFixture, "", "")
    23  	if ok, msg := testing_.NonNil(tmpCert); !ok {
    24  		t.Error(msg)
    25  	}
    26  	if ok, msg := testing_.NonError(err); !ok {
    27  		t.Error(msg)
    28  	}
    29  
    30  	// 1. no TLS
    31  	certPool, err := tls.LoadX509CertificatePool(nil, "", "")
    32  	if ok, msg := testing_.Nil(certPool); !ok {
    33  		t.Error(msg)
    34  	}
    35  	if ok, msg := testing_.EqualError(err, tls.ErrNoCertificatesConfigured); !ok {
    36  		t.Error(msg)
    37  	}
    38  
    39  	// 2. inconsistent TLS (ii): warning only
    40  	certPool, err = tls.LoadX509CertificatePool(nil, "x", "")
    41  	if ok, msg := testing_.Nil(certPool); !ok {
    42  		t.Error(msg)
    43  	}
    44  	if ok, msg := testing_.Error(err); !ok {
    45  		t.Error(msg)
    46  	}
    47  	// 3. invalid TLS string (ii)
    48  	certPool, err = tls.LoadX509CertificatePool(nil, "{}", "")
    49  	if ok, msg := testing_.Nil(certPool); !ok {
    50  		t.Error(msg)
    51  	}
    52  	if ok, msg := testing_.Error(err); !ok {
    53  		t.Error(msg)
    54  	}
    55  
    56  	// 4. valid TLS files
    57  	certPool, err = tls.LoadX509CertificatePool(nil, "", tmpCertPath)
    58  	if ok, msg := testing_.NonNil(certPool); !ok {
    59  		t.Error(msg)
    60  	}
    61  	if ok, msg := testing_.NonError(err); !ok {
    62  		t.Error(msg)
    63  	}
    64  
    65  	// 5. valid TLS strings
    66  	certPool, err = tls.LoadX509CertificatePool(nil, certFixture, "")
    67  	if ok, msg := testing_.NonNil(certPool); !ok {
    68  		t.Error(msg)
    69  	}
    70  	if ok, msg := testing_.NonError(err); !ok {
    71  		t.Error(msg)
    72  	}
    73  
    74  	// 6. valid TLS cert
    75  	certPool, err = tls.LoadX509CertificatePool(nil, "", "", tmpCert)
    76  	if ok, msg := testing_.NonNil(certPool); !ok {
    77  		t.Error(msg)
    78  	}
    79  	if ok, msg := testing_.NonError(err); !ok {
    80  		t.Error(msg)
    81  	}
    82  
    83  	// 7. invalid TLS file content
    84  	certPool, err = tls.LoadX509CertificatePool(nil, "", certFixture)
    85  	if ok, msg := testing_.Nil(certPool); !ok {
    86  		t.Error(msg)
    87  	}
    88  	if ok, msg := testing_.Error(err); !ok {
    89  		t.Error(msg)
    90  	}
    91  
    92  	// 8. invalid TLS string content
    93  	certPool, err = tls.LoadX509CertificatePool(nil, certFileContent, "")
    94  	if ok, msg := testing_.Nil(certPool); !ok {
    95  		t.Error(msg)
    96  	}
    97  	if ok, msg := testing_.Error(err); !ok {
    98  		t.Error(msg)
    99  	}
   100  }