cloudflare/cfssl_trust

Public

mirrored fromhttps://github.com/cloudflare/cfssl_trustAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
trust-store-2026.1.2

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

info/info_test.go

123lines · modecode

1package info
2
3import (
4 "bytes"
5 "crypto/x509"
6 "encoding/pem"
7 "strings"
8 "testing"
9
10 "github.com/cloudflare/cfssl_trust/model/certdb"
11
12 sqlmock "gopkg.in/DATA-DOG/go-sqlmock.v1"
13)
14
15var (
16 testCert1PEM = `-----BEGIN CERTIFICATE-----
17MIIEujCCAqKgAwIBAgIUE88us8tr5RRFX4RlooTtDDKao5owDQYJKoZIhvcNAQEN
18BQAwZDELMAkGA1UEBhMCVVMxKDAmBgNVBAsTH0Ryb3Bzb25kZSBDZXJ0aWZpY2F0
19ZSBBdXRob3JpdHkxFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEzARBgNVBAgTCkNh
20bGlmb3JuaWEwHhcNMTcwMzIyMjEyNDAwWhcNMTgwMzIyMjEyNDAwWjA7MQswCQYD
21VQQGEwJVUzEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEUMBIGA1UEChMLRXhhbXBs
22ZSBPcmcwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDS8xbhnhoS9S8h
23fOoyS5UEpRa/qxqe8+CrQ/hlLmND3p9igSaMpmDzz6rhgadPSOAhU4eNkuXU+0gL
24c2qUny8TMZllS3bUzEVydRerDlz4ILsm0Pm/vvvOQxg+wAidKTpq6Mt9TjoXhqZW
25FyZzYArGecIQhofl8Z0aHhBQx3vSLCl6i+5FdBHLbrE6WKSo5nWN+lImOVBOUDoe
26KQvp9q3pX1WSzB02IEymBlMUfYuPx/Ak7q/ipgEcgQ9EkUQBR5G1fuuNzW/1WT8b
27RdduT7quEOEOTB672g4zY+DG+oo3UjgvZNSkxS9MuAHD/vC0quTKSWYqOUFsW4wO
28w+ymWO3dAgMBAAGjgYwwgYkwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsG
29AQUFBwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFDg3gWdPbhl4INGDMdU/RCig
301PrXMB8GA1UdIwQYMBaAFJs7c+/33EDkoip7EOnUrU1dDOw9MBQGA1UdEQQNMAuC
31CWxvY2FsaG9zdDANBgkqhkiG9w0BAQ0FAAOCAgEA3aqTKWrTgD3cZVuBTSz7nWRG
32k5LyVYA1wlAD1o/msPwtO1eJ/doSc+gTUyzIYoUD3wyAkTrA3UJosYiY6BYdJvsh
33AC5B/Kr+qwUjqqiE8ejPW/UzPjJldSa1zrhOMPDVDjnD+GMm9hLtxB7Mw0EWM3jn
34+noiPjz6RFsbo4jhZigWrHmR1FKBoCWKEAJEzE0k5n0RljzyCk2nH6jfE1tHLaoe
35njJ6XVu3RpW9RBJJcIyfyprhrG96ch8eet0VjV3Dn746sTKYY4yDMnvTc51aXc88
36CeV6RxiqYObVbfyH8jX5v3rdJUA5FTTQU1IXx8Lt80L12Zhh+NqODlqJnnKVFAen
37KpGINr31d0x2QE5C4uhb03OUgcQDT9pOu/VyLqZo7HUPZ/0HCUhPyvZrdiCAQCkQ
38zjdxJ7iTVJibIjXjblURGsZnJ0TX1XdGcMOzQHsguNpZcDCE5lri+MlMX5Q7UVc8
392AOP0tNzvDb/dtaKJOYHC5vF+A8mC7ypoWqIPRpgl4Q1fNor92tlAXv+EbUQ+X4s
405IsbInK07y3bWprTUXCl9h2C3ZvZpnTDOhcwA2LppN7HRa0z86yrxMtTKXrRwzp7
41cykDEvBNRzSMW4/JLLxWXX8xkgyof0FLOvKn6Vpa8yj3PO3LKPDYKXkMzMkyquAA
42XHXWOlG/EIvvGpRRLGA=
43-----END CERTIFICATE-----`
44 testCert1X509 *x509.Certificate
45 testCert1 *certdb.Certificate
46 release = &certdb.Release{
47 Bundle: "ca",
48 Version: "2017.3.0",
49 ReleasedAt: 1490827656,
50 }
51)
52
53func mustParseCertificate(in string) *x509.Certificate {
54 p, rest := pem.Decode([]byte(in))
55 if len(rest) != 0 || p == nil {
56 panic("couldn't parse certificate")
57 }
58
59 if p.Type != "CERTIFICATE" {
60 panic("invalid certificate")
61 }
62
63 cert, err := x509.ParseCertificate(p.Bytes)
64 if err != nil {
65 panic(err.Error())
66 }
67
68 return cert
69}
70
71func init() {
72 testCert1X509 = mustParseCertificate(testCert1PEM)
73 testCert1 = certdb.NewCertificate(testCert1X509)
74}
75
76func TestWriteTestCert1(t *testing.T) {
77 db, mock, err := sqlmock.New()
78 if err != nil {
79 t.Fatal(err)
80 }
81
82 columns := []string{"release"}
83 mock.ExpectBegin()
84 mock.ExpectQuery("SELECT (.+) FROM roots (.+)").
85 WithArgs(testCert1.SKI, testCert1.Serial).
86 WillReturnRows(sqlmock.NewRows(columns).AddRow(release.Version))
87 mock.ExpectQuery("SELECT (.+) FROM intermediates (.+)").
88 WithArgs(testCert1.SKI, testCert1.Serial).
89 WillReturnRows(sqlmock.NewRows(columns))
90 mock.ExpectQuery("SELECT (.+) FROM root_releases (.+)").
91 WithArgs(release.Version).
92 WillReturnRows(sqlmock.NewRows(columns).AddRow(release.ReleasedAt))
93 mock.ExpectCommit()
94
95 buf := &bytes.Buffer{}
96 err = WriteCertificateInformation(buf, db, testCert1)
97 if err != nil {
98 t.Fatal(err)
99 }
100
101 err = mock.ExpectationsWereMet()
102 if err != nil {
103 t.Fatal(err)
104 }
105
106 expected := `Subject: /C=US/O=Example Org/L=San Francisco
107Issuer: /C=US/OU=Dropsonde Certificate Authority/L=San Francisco/ST=California
108 Not Before: 2017-03-22T21:24:00+0000
109 Not After: 2018-03-22T21:24:00+0000
110Releases:
111 - 2017.3.0 ca (2017-03-29T22:47:36+0000)`
112 out := strings.TrimSpace(buf.String())
113
114 if out != expected {
115 t.Fatalf(`certificate information wrote unexpected information:
116expected:
117%s
118
119have:
120%s
121`, expected, out)
122 }
123}
124