github.com/letsencrypt/boulder@v0.20251208.0/crl/updater/batch_test.go (about) 1 package updater 2 3 import ( 4 "context" 5 "errors" 6 "testing" 7 "time" 8 9 "github.com/jmhodges/clock" 10 11 "github.com/letsencrypt/boulder/issuance" 12 blog "github.com/letsencrypt/boulder/log" 13 "github.com/letsencrypt/boulder/metrics" 14 "github.com/letsencrypt/boulder/test" 15 ) 16 17 func TestRunOnce(t *testing.T) { 18 e1, err := issuance.LoadCertificate("../../test/hierarchy/int-e1.cert.pem") 19 test.AssertNotError(t, err, "loading test issuer") 20 r3, err := issuance.LoadCertificate("../../test/hierarchy/int-r3.cert.pem") 21 test.AssertNotError(t, err, "loading test issuer") 22 23 mockLog := blog.NewMock() 24 clk := clock.NewFake() 25 clk.Set(time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC)) 26 cu, err := NewUpdater( 27 []*issuance.Certificate{e1, r3}, 28 2, 18*time.Hour, 24*time.Hour, 29 6*time.Hour, time.Minute, 1, 1, 30 "stale-if-error=60", 31 5*time.Minute, 32 &fakeSAC{revokedCerts: revokedCertsStream{err: errors.New("db no worky")}, maxNotAfter: clk.Now().Add(90 * 24 * time.Hour)}, 33 &fakeCA{gcc: generateCRLStream{}}, 34 &fakeStorer{uploaderStream: &noopUploader{}}, 35 metrics.NoopRegisterer, mockLog, clk, 36 ) 37 test.AssertNotError(t, err, "building test crlUpdater") 38 39 // An error that affects all issuers should have every issuer reflected in the 40 // combined error message. 41 err = cu.RunOnce(context.Background()) 42 test.AssertError(t, err, "database error") 43 test.AssertContains(t, err.Error(), "one or more errors") 44 test.AssertEquals(t, len(mockLog.GetAllMatching("Generating CRL failed:")), 4) 45 cu.tickHistogram.Reset() 46 }