...
1
2
3
4
5
6
7
8
9
10 package ocsp
11
12 import (
13 "context"
14 "crypto/x509"
15 "net"
16 "testing"
17 "time"
18
19 "go.mongodb.org/mongo-driver/internal/assert"
20 "go.mongodb.org/mongo-driver/internal/httputil"
21 )
22
23 func TestContactResponders(t *testing.T) {
24 t.Run("context cancellation is honored", func(t *testing.T) {
25 t.Parallel()
26
27 ctx, cancel := context.WithCancel(context.Background())
28 cancel()
29
30 serverCert := &x509.Certificate{
31 OCSPServer: []string{"https://localhost:5000"},
32 }
33 cfg := config{
34 serverCert: serverCert,
35 issuer: &x509.Certificate{},
36 cache: NewCache(),
37 httpClient: httputil.DefaultHTTPClient,
38 }
39
40 res := contactResponders(ctx, cfg)
41 assert.Nil(t, res, "expected nil response details, but got %v", res)
42 })
43 t.Run("context timeout is honored", func(t *testing.T) {
44 t.Parallel()
45
46 ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond)
47 defer cancel()
48
49
50
51 l, err := net.Listen("tcp", "localhost:0")
52 assert.Nil(t, err, "tls.Listen() error: %v", err)
53 defer l.Close()
54
55 serverCert := &x509.Certificate{
56 OCSPServer: []string{"https://" + l.Addr().String()},
57 }
58 cfg := config{
59 serverCert: serverCert,
60 issuer: &x509.Certificate{},
61 cache: NewCache(),
62 httpClient: httputil.DefaultHTTPClient,
63 }
64
65
66
67 start := time.Now()
68 res := contactResponders(ctx, cfg)
69 duration := time.Since(start)
70 assert.Nil(t, res, "expected nil response, but got: %v", res)
71 assert.True(t, duration <= 5*time.Second, "expected duration to be <= 5s, but was %v", duration)
72 })
73 }
74
View as plain text