Skip to content

Commit e8ec34e

Browse files
committed
ci: add tests for GetRemoteCerts
1 parent 018abb4 commit e8ec34e

2 files changed

Lines changed: 133 additions & 9 deletions

File tree

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
package certinfo
2+
3+
import (
4+
"testing"
5+
6+
"github.com/stretchr/testify/require"
7+
)
8+
9+
func TestCertinfo_GetRemoteCerts(t *testing.T) {
10+
tests := []struct {
11+
desc string
12+
srvCfg demoHTTPServerConfig
13+
caCertFile string
14+
insecure bool
15+
expectSrvHost string
16+
expectSrvPort string
17+
expectError bool
18+
expectMsg string
19+
}{
20+
{
21+
desc: "RSA Cert Success",
22+
srvCfg: demoHTTPServerConfig{
23+
serverAddr: "localhost:46301",
24+
serverName: "example.com",
25+
serverCertFile: RSASampleCertFile,
26+
serverKeyFile: RSASampleCertKeyFile,
27+
},
28+
caCertFile: RSACaCertFile,
29+
expectSrvHost: "localhost",
30+
expectSrvPort: "46301",
31+
},
32+
{
33+
desc: "Error Secure and No CA Cert",
34+
srvCfg: demoHTTPServerConfig{
35+
serverAddr: "localhost:46302",
36+
serverName: "example.com",
37+
serverCertFile: RSASampleCertFile,
38+
serverKeyFile: RSASampleCertKeyFile,
39+
},
40+
caCertFile: emptyString,
41+
expectError: true,
42+
expectMsg: "TLS handshake failed: tls: failed to verify certificate: x509: certificate signed by unknown authority",
43+
},
44+
45+
{
46+
desc: "Malfomed Server Certificate",
47+
srvCfg: demoHTTPServerConfig{
48+
serverAddr: "localhost:46303",
49+
serverName: "example.com",
50+
serverCertFile: RSASamplePKCS8Certificate,
51+
serverKeyFile: RSASamplePKCS8PlaintextPrivateKey,
52+
},
53+
caCertFile: RSACaCertFile,
54+
expectSrvHost: "localhost",
55+
expectSrvPort: "46303",
56+
expectError: true,
57+
expectMsg: "TLS handshake failed: tls: failed to verify certificate: x509: certificate relies on legacy Common Name field, use SANs instead",
58+
},
59+
{
60+
desc: "No CA Cert and Insecure",
61+
srvCfg: demoHTTPServerConfig{
62+
serverAddr: "localhost:46304",
63+
serverName: "example.com",
64+
serverCertFile: RSASampleCertFile,
65+
serverKeyFile: RSASampleCertKeyFile,
66+
},
67+
insecure: true,
68+
expectSrvHost: "localhost",
69+
expectSrvPort: "46304",
70+
caCertFile: emptyString,
71+
},
72+
{
73+
desc: "Wrong CA Cert and Secure",
74+
srvCfg: demoHTTPServerConfig{
75+
serverAddr: "localhost:46305",
76+
serverName: "example.com",
77+
serverCertFile: RSASampleCertFile,
78+
serverKeyFile: RSASampleCertKeyFile,
79+
},
80+
caCertFile: RSASamplePKCS8Certificate,
81+
expectSrvHost: "localhost",
82+
expectSrvPort: "46305",
83+
expectError: true,
84+
expectMsg: "TLS handshake failed: tls: failed to verify certificate: x509: certificate signed by unknown authority",
85+
},
86+
{
87+
desc: "Wrong CA Cert and Insecure",
88+
srvCfg: demoHTTPServerConfig{
89+
serverAddr: "localhost:46306",
90+
serverName: "example.com",
91+
serverCertFile: RSASampleCertFile,
92+
serverKeyFile: RSASampleCertKeyFile,
93+
},
94+
caCertFile: RSASamplePKCS8Certificate,
95+
insecure: true,
96+
expectSrvHost: "localhost",
97+
expectSrvPort: "46306",
98+
},
99+
}
100+
101+
for _, tc := range tests {
102+
tt := tc
103+
t.Run(tt.desc, func(t *testing.T) {
104+
t.Parallel()
105+
106+
ts, err := NewHTTPSTestServer(tt.srvCfg)
107+
require.NoError(t, err)
108+
109+
defer ts.Close()
110+
111+
cc, err := NewCertinfoConfig()
112+
require.NoError(t, err)
113+
114+
cc.SetTLSServerName(tt.srvCfg.serverName)
115+
cc.SetCaPoolFromFile(tt.caCertFile, inputReader)
116+
cc.SetTLSEndpoint(tt.srvCfg.serverAddr)
117+
cc.SetTLSInsecure(tt.insecure)
118+
119+
err = cc.GetRemoteCerts()
120+
if !tt.expectError {
121+
require.NoError(t, err, "check error not expected")
122+
require.Equal(t, tt.srvCfg.serverName, cc.TLSServerName, "check TLSServerName")
123+
require.Equal(t, tt.expectSrvHost, cc.TLSEndpointHost, "check TLSEndpointHost")
124+
require.Equal(t, tt.expectSrvPort, cc.TLSEndpointPort, "check TLSEndpointPort")
125+
require.Equal(t, tt.insecure, cc.TLSInsecure, "check TLSInsecure")
126+
127+
return
128+
}
129+
130+
require.EqualError(t, err, tt.expectMsg, "check error expected")
131+
})
132+
}
133+
}

internal/certinfo/certinfo_test.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,6 @@ import (
88
"github.com/stretchr/testify/require"
99
)
1010

11-
type mockReader struct {
12-
readError error
13-
}
14-
15-
func (mr mockReader) ReadFile(name string) ([]byte, error) {
16-
mr.readError = fmt.Errorf("unable to read file %s", name)
17-
return nil, mr.readError
18-
}
19-
2011
func TestNewCertinfoConfig(t *testing.T) {
2112
t.Run("NewCertinfoConfig", func(t *testing.T) {
2213
t.Parallel()

0 commit comments

Comments
 (0)