github.com/hbgames/consul@v1.4.5/command/tls/ca/create/tls_ca_create_test.go (about)

     1  package create
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path"
     7  	"strings"
     8  	"testing"
     9  	"time"
    10  
    11  	"github.com/hashicorp/consul/agent/connect"
    12  	"github.com/hashicorp/consul/testutil"
    13  	"github.com/mitchellh/cli"
    14  	"github.com/stretchr/testify/require"
    15  )
    16  
    17  func TestValidateCommand_noTabs(t *testing.T) {
    18  	t.Parallel()
    19  	if strings.ContainsRune(New(nil).Help(), '\t') {
    20  		t.Fatal("help has tabs")
    21  	}
    22  }
    23  
    24  func TestCACreateCommand(t *testing.T) {
    25  	require := require.New(t)
    26  
    27  	previousDirectory, err := os.Getwd()
    28  	require.NoError(err)
    29  
    30  	testDir := testutil.TempDir(t, "ca-create")
    31  
    32  	defer os.RemoveAll(testDir)
    33  	defer os.Chdir(previousDirectory)
    34  
    35  	os.Chdir(testDir)
    36  
    37  	ui := cli.NewMockUi()
    38  	cmd := New(ui)
    39  
    40  	require.Equal(0, cmd.Run(nil), "ca create should exit 0")
    41  
    42  	errOutput := ui.ErrorWriter.String()
    43  	require.Equal("", errOutput)
    44  
    45  	caPem := path.Join(testDir, "consul-agent-ca.pem")
    46  	require.FileExists(caPem)
    47  
    48  	certData, err := ioutil.ReadFile(caPem)
    49  	require.NoError(err)
    50  
    51  	cert, err := connect.ParseCert(string(certData))
    52  	require.NoError(err)
    53  	require.NotNil(cert)
    54  
    55  	require.Equal(1825*24*time.Hour, time.Until(cert.NotAfter).Round(24*time.Hour))
    56  	require.False(cert.PermittedDNSDomainsCritical)
    57  	require.Len(cert.PermittedDNSDomains, 0)
    58  }
    59  
    60  func TestCACreateCommandWithOptions(t *testing.T) {
    61  	require := require.New(t)
    62  
    63  	previousDirectory, err := os.Getwd()
    64  	require.NoError(err)
    65  
    66  	testDir := testutil.TempDir(t, "ca-create")
    67  
    68  	defer os.RemoveAll(testDir)
    69  	defer os.Chdir(previousDirectory)
    70  
    71  	os.Chdir(testDir)
    72  
    73  	ui := cli.NewMockUi()
    74  	cmd := New(ui)
    75  
    76  	args := []string{
    77  		"-days=365",
    78  		"-name-constraint=true",
    79  		"-domain=foo",
    80  		"-additional-name-constraint=bar",
    81  	}
    82  
    83  	require.Equal(0, cmd.Run(args), "ca create should exit 0")
    84  
    85  	errOutput := ui.ErrorWriter.String()
    86  	require.Equal("", errOutput)
    87  
    88  	caPem := path.Join(testDir, "foo-agent-ca.pem")
    89  	require.FileExists(caPem)
    90  
    91  	certData, err := ioutil.ReadFile(caPem)
    92  	require.NoError(err)
    93  
    94  	cert, err := connect.ParseCert(string(certData))
    95  	require.NoError(err)
    96  	require.NotNil(cert)
    97  
    98  	require.Equal(365*24*time.Hour, time.Until(cert.NotAfter).Round(24*time.Hour))
    99  	require.True(cert.PermittedDNSDomainsCritical)
   100  	require.Len(cert.PermittedDNSDomains, 3)
   101  	require.ElementsMatch(cert.PermittedDNSDomains, []string{"foo", "localhost", "bar"})
   102  }