Skip to content

Commit d8e63c9

Browse files
tests(certs): add tests to cert cmds (#209)
1 parent ec466d7 commit d8e63c9

4 files changed

Lines changed: 348 additions & 48 deletions

File tree

cmd/certs.go

Lines changed: 62 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,21 @@ import (
44
"fmt"
55
"io"
66
"io/ioutil"
7-
"os"
87
"strings"
98
"time"
109

1110
"github.com/olekukonko/tablewriter"
1211

1312
"github.com/deis/controller-sdk-go"
1413
"github.com/deis/controller-sdk-go/certs"
14+
dtime "github.com/deis/controller-sdk-go/pkg/time"
1515
"github.com/deis/workflow-cli/settings"
1616
)
1717

18+
const dateFormat = "2 Jan 2006"
19+
1820
// CertsList lists certs registered with the controller.
19-
func (d DeisCmd) CertsList(results int) error {
21+
func (d DeisCmd) CertsList(results int, now time.Time) error {
2022
s, err := settings.Load(d.ConfigFile)
2123

2224
if err != nil {
@@ -37,57 +39,57 @@ func (d DeisCmd) CertsList(results int) error {
3739
return nil
3840
}
3941

40-
table := tablewriter.NewWriter(os.Stdout)
42+
table := tablewriter.NewWriter(d.WOut)
4143
table.SetAlignment(tablewriter.ALIGN_LEFT)
4244
table.SetBorder(false)
4345
table.SetAutoFormatHeaders(false)
4446
table.SetHeaderLine(true)
4547
table.SetHeader([]string{"Name", "Common Name", "SubjectAltName", "Expires", "Fingerprint", "Domains", "Updated", "Created"})
4648
for _, cert := range certList {
47-
domains := strings.Join(cert.Domains[:], ",")
48-
san := strings.Join(cert.SubjectAltName[:], ",")
49-
50-
// Make dates more readable
51-
now := time.Now()
52-
expires := cert.Expires.Time.Format("2 Jan 2006")
53-
created := cert.Created.Time.Format("2 Jan 2006")
54-
updated := cert.Updated.Time.Format("2 Jan 2006")
55-
56-
if cert.Expires.Time.Before(now) {
57-
expires += " (expired)"
58-
} else {
59-
// Ghetto solution
60-
expires += " (in"
61-
year := cert.Expires.Time.Year() - now.Year()
62-
month := cert.Expires.Time.Month() - now.Month()
63-
day := cert.Expires.Time.Day() - now.Day()
64-
65-
if year > 0 {
66-
expires += fmt.Sprintf(" %d year", year)
67-
if year > 1 {
68-
expires += "s"
69-
}
70-
} else if month > 0 {
71-
expires += fmt.Sprintf(" %d month", month)
72-
if month > 1 {
73-
expires += "s"
74-
}
75-
} else if day != 0 {
76-
// special handling on negative days
77-
if day < 0 {
78-
day *= -1
79-
}
80-
81-
expires += fmt.Sprintf(" %d day", day)
82-
if day > 1 {
83-
expires += "s"
49+
domains := strings.Join(cert.Domains, ",")
50+
san := strings.Join(cert.SubjectAltName, ",")
51+
52+
expires := "unknown"
53+
if cert.Expires.Time != nil {
54+
expires = cert.Expires.Format(dateFormat)
55+
56+
if cert.Expires.Time.Before(now) {
57+
expires += " (expired)"
58+
} else {
59+
// Ghetto solution
60+
expires += " (in"
61+
year := cert.Expires.Time.Year() - now.Year()
62+
month := cert.Expires.Time.Month() - now.Month()
63+
day := cert.Expires.Time.Day() - now.Day()
64+
65+
if year > 0 {
66+
expires += fmt.Sprintf(" %d year", year)
67+
if year > 1 {
68+
expires += "s"
69+
}
70+
} else if month > 0 {
71+
expires += fmt.Sprintf(" %d month", month)
72+
if month > 1 {
73+
expires += "s"
74+
}
75+
} else if day != 0 {
76+
expires += fmt.Sprintf(" %d day", day)
77+
if day > 1 {
78+
expires += "s"
79+
}
8480
}
81+
expires += ")"
8582
}
86-
expires += ")"
8783
}
8884

85+
created := safeGetTime(cert.Created)
86+
updated := safeGetTime(cert.Updated)
87+
8988
// show a shorter version of the fingerprint
90-
fingerprint := cert.Fingerprint[:5] + "[...]" + cert.Fingerprint[len(cert.Fingerprint)-5:]
89+
fingerprint := cert.Fingerprint
90+
if len(cert.Fingerprint) > 4 {
91+
fingerprint = cert.Fingerprint[:5] + "[...]" + cert.Fingerprint[len(cert.Fingerprint)-5:]
92+
}
9193

9294
table.Append([]string{cert.Name, cert.CommonName, san, expires, fingerprint, domains, updated, created})
9395
}
@@ -176,19 +178,24 @@ func (d DeisCmd) CertInfo(name string) error {
176178
san = "N/A"
177179
}
178180

181+
expires := safeGetTime(cert.Expires)
182+
starts := safeGetTime(cert.Starts)
183+
created := safeGetTime(cert.Created)
184+
updated := safeGetTime(cert.Updated)
185+
179186
d.Printf("=== %s Certificate\n", cert.Name)
180187
d.Println("Common Name(s): ", cert.CommonName)
181-
d.Println("Expires At: ", cert.Expires)
182-
d.Println("Starts At: ", cert.Starts)
188+
d.Println("Expires At: ", expires)
189+
d.Println("Starts At: ", starts)
183190
d.Println("Fingerprint: ", cert.Fingerprint)
184191
d.Println("Subject Alt Name: ", san)
185192
d.Println("Issuer: ", cert.Issuer)
186193
d.Println("Subject: ", cert.Subject)
187194
d.Println()
188195
d.Println("Connected Domains: ", domains)
189196
d.Println("Owner: ", cert.Owner)
190-
d.Println("Created: ", cert.Created)
191-
d.Println("Updated: ", cert.Updated)
197+
d.Println("Created: ", created)
198+
d.Println("Updated: ", updated)
192199

193200
return nil
194201
}
@@ -235,3 +242,12 @@ func (d DeisCmd) CertDetach(name, domain string) error {
235242
d.Println("done")
236243
return nil
237244
}
245+
246+
func safeGetTime(t dtime.Time) string {
247+
out := "unknown"
248+
if t.Time != nil {
249+
out = t.Format(dateFormat)
250+
}
251+
252+
return out
253+
}

0 commit comments

Comments
 (0)