github.com/judwhite/consul@v1.4.4-0.20190315202039-6ef970a191d3/command/tls/cert/create/tls_cert_create_test.go (about)

     1  package create
     2  
     3  import (
     4  	"io/ioutil"
     5  	"os"
     6  	"path"
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/hashicorp/consul/agent/connect"
    11  	"github.com/hashicorp/consul/testutil"
    12  	"github.com/mitchellh/cli"
    13  	"github.com/stretchr/testify/require"
    14  
    15  	"github.com/hashicorp/consul/command/tls/ca/create"
    16  )
    17  
    18  func TestValidateCommand_noTabs(t *testing.T) {
    19  	t.Parallel()
    20  	if strings.ContainsRune(New(nil).Help(), '\t') {
    21  		t.Fatal("help has tabs")
    22  	}
    23  }
    24  
    25  func TestTlsCertCreateCommand_fileCreate(t *testing.T) {
    26  	require := require.New(t)
    27  
    28  	previousDirectory, err := os.Getwd()
    29  	require.NoError(err)
    30  
    31  	testDir := testutil.TempDir(t, "tls")
    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  	// Setup CA keys
    41  	createCA(t, "consul")
    42  
    43  	caPath := path.Join(testDir, "consul-agent-ca.pem")
    44  	require.FileExists(caPath)
    45  
    46  	args := []string{
    47  		"-server",
    48  	}
    49  
    50  	require.Equal(0, cmd.Run(args))
    51  	require.Equal("", ui.ErrorWriter.String())
    52  
    53  	certPath := path.Join(testDir, "dc1-server-consul-0.pem")
    54  	keyPath := path.Join(testDir, "dc1-server-consul-0-key.pem")
    55  
    56  	require.FileExists(certPath)
    57  	require.FileExists(keyPath)
    58  
    59  	certData, err := ioutil.ReadFile(certPath)
    60  	require.NoError(err)
    61  	keyData, err := ioutil.ReadFile(keyPath)
    62  	require.NoError(err)
    63  
    64  	cert, err := connect.ParseCert(string(certData))
    65  	require.NoError(err)
    66  	require.NotNil(cert)
    67  
    68  	signer, err := connect.ParseSigner(string(keyData))
    69  	require.NoError(err)
    70  	require.NotNil(signer)
    71  
    72  	// TODO - maybe we should validate some certs here.
    73  }
    74  
    75  func createCA(t *testing.T, domain string) {
    76  	ui := cli.NewMockUi()
    77  	caCmd := create.New(ui)
    78  
    79  	args := []string{
    80  		"-domain=" + domain,
    81  	}
    82  
    83  	require.Equal(t, 0, caCmd.Run(args))
    84  	require.Equal(t, "", ui.ErrorWriter.String())
    85  }