...
1 package rocsp
2
3 import (
4 "bytes"
5 "context"
6 "fmt"
7 "os"
8 "testing"
9 "time"
10
11 "github.com/jmhodges/clock"
12 "github.com/letsencrypt/boulder/cmd"
13 "github.com/letsencrypt/boulder/metrics"
14 "github.com/redis/go-redis/v9"
15 "golang.org/x/crypto/ocsp"
16 )
17
18 func makeClient() (*RWClient, clock.Clock) {
19 CACertFile := "../test/redis-tls/minica.pem"
20 CertFile := "../test/redis-tls/boulder/cert.pem"
21 KeyFile := "../test/redis-tls/boulder/key.pem"
22 tlsConfig := cmd.TLSConfig{
23 CACertFile: CACertFile,
24 CertFile: CertFile,
25 KeyFile: KeyFile,
26 }
27 tlsConfig2, err := tlsConfig.Load(metrics.NoopRegisterer)
28 if err != nil {
29 panic(err)
30 }
31
32 rdb := redis.NewRing(&redis.RingOptions{
33 Addrs: map[string]string{
34 "shard1": "10.33.33.2:4218",
35 "shard2": "10.33.33.3:4218",
36 },
37 Username: "unittest-rw",
38 Password: "824968fa490f4ecec1e52d5e34916bdb60d45f8d",
39 TLSConfig: tlsConfig2,
40 })
41 clk := clock.NewFake()
42 return NewWritingClient(rdb, 5*time.Second, clk, metrics.NoopRegisterer), clk
43 }
44
45 func TestSetAndGet(t *testing.T) {
46 client, _ := makeClient()
47 fmt.Println(client.Ping(context.Background()))
48
49 respBytes, err := os.ReadFile("testdata/ocsp.response")
50 if err != nil {
51 t.Fatal(err)
52 }
53
54 response, err := ocsp.ParseResponse(respBytes, nil)
55 if err != nil {
56 t.Fatal(err)
57 }
58 err = client.StoreResponse(context.Background(), response)
59 if err != nil {
60 t.Fatalf("storing response: %s", err)
61 }
62
63 serial := "ffaa13f9c34be80b8e2532b83afe063b59a6"
64 resp2, err := client.GetResponse(context.Background(), serial)
65 if err != nil {
66 t.Fatalf("getting response: %s", err)
67 }
68 if !bytes.Equal(resp2, respBytes) {
69 t.Errorf("response written and response retrieved were not equal")
70 }
71 }
72
View as plain text