Skip to content

Commit c18537e

Browse files
committed
Fix flaky tests
Signed-off-by: Guilherme Carvalho <[email protected]>
1 parent dceafe0 commit c18537e

File tree

1 file changed

+29
-15
lines changed

1 file changed

+29
-15
lines changed

support/oidc-discovery-provider/cert_manager_test.go

Lines changed: 29 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -156,8 +156,19 @@ func TestTLSConfig(t *testing.T) {
156156
})
157157
writeFile(t, certFilePath, oidcServerCertUpdatedPem)
158158

159-
clk.Add(20 * time.Millisecond)
159+
clk.Add(5 * time.Millisecond)
160160

161+
// Certificate is not updated yet
162+
cert, err := tlsConfig.GetCertificate(chInfo)
163+
require.NoError(t, err)
164+
require.Len(t, cert.Certificate, 1)
165+
x509Cert, err := x509.ParseCertificate(cert.Certificate[0])
166+
require.NoError(t, err)
167+
require.Equal(t, oidcServerCert, x509Cert)
168+
169+
clk.Add(10 * time.Millisecond)
170+
171+
// Assert certificate is updated
161172
require.Eventuallyf(t, func() bool {
162173
cert, err := tlsConfig.GetCertificate(chInfo)
163174
if err != nil {
@@ -203,7 +214,7 @@ func TestTLSConfig(t *testing.T) {
203214
writeFile(t, certFilePath, []byte("invalid-cert"))
204215

205216
for i := 0; i < 5; i++ {
206-
clk.Add(11 * time.Millisecond)
217+
clk.Add(10 * time.Millisecond)
207218
}
208219

209220
errLogs := map[time.Time]struct{}{}
@@ -306,28 +317,31 @@ func TestTLSConfig(t *testing.T) {
306317

307318
// Assert error logs that will keep triggering until the cert is created again.
308319
errLogs = map[time.Time]struct{}{}
309-
for _, entry := range logHook.AllEntries() {
310-
if entry.Level == logrus.ErrorLevel && strings.Contains(entry.Message, fmt.Sprintf("Failed to get file info, file path %q does not exist anymore; please check if the path is correct", certFilePath)) {
311-
errLogs[entry.Time] = struct{}{}
320+
require.Eventuallyf(t, func() bool {
321+
for _, entry := range logHook.AllEntries() {
322+
if entry.Level == logrus.ErrorLevel && strings.Contains(entry.Message, fmt.Sprintf("Failed to get file info, file path %q does not exist anymore; please check if the path is correct", certFilePath)) {
323+
errLogs[entry.Time] = struct{}{}
324+
}
312325
}
313-
}
314-
315-
require.Len(t, errLogs, 5)
326+
return len(errLogs) == 5
327+
}, 10*time.Second, 10*time.Millisecond, "Failed to assert error logs")
316328

317329
writeFile(t, keyFilePath, oidcServerKeyPem)
318330

319331
writeFile(t, certFilePath, oidcServerCertPem)
320332

321333
clk.Add(10 * time.Millisecond)
322334

323-
require.Equal(t, "Loaded provided certificate with success", logHook.LastEntry().Message)
335+
require.Eventuallyf(t, func() bool {
336+
cert, err := tlsConfig.GetCertificate(chInfo)
337+
require.NoError(t, err)
338+
require.Len(t, cert.Certificate, 1)
339+
x509Cert, err := x509.ParseCertificate(cert.Certificate[0])
340+
require.NoError(t, err)
341+
require.Equal(t, oidcServerCert, x509Cert)
324342

325-
cert, err := tlsConfig.GetCertificate(chInfo)
326-
require.NoError(t, err)
327-
require.Len(t, cert.Certificate, 1)
328-
x509Cert, err := x509.ParseCertificate(cert.Certificate[0])
329-
require.NoError(t, err)
330-
require.Equal(t, oidcServerCert, x509Cert)
343+
return reflect.DeepEqual(oidcServerCert, x509Cert) && logHook.LastEntry().Message == "Loaded provided certificate with success"
344+
}, 10*time.Second, 10*time.Millisecond, "Failed to assert error logs")
331345
})
332346

333347
t.Run("stop file watcher when context is canceled", func(t *testing.T) {

0 commit comments

Comments
 (0)