github.com/jfsmig/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 }