@@ -2,6 +2,8 @@ package replicasync_test
2
2
3
3
import (
4
4
"context"
5
+ "crypto/tls"
6
+ "crypto/x509"
5
7
"net/http"
6
8
"net/http/httptest"
7
9
"sync"
@@ -112,6 +114,48 @@ func TestReplica(t *testing.T) {
112
114
require .False (t , server .Self ().Error .Valid )
113
115
_ = server .Close ()
114
116
})
117
+ t .Run ("ConnectsToPeerReplicaTLS" , func (t * testing.T ) {
118
+ // Ensures that the replica reports a successful status for
119
+ // accessing all of its peers.
120
+ t .Parallel ()
121
+ rawCert := testutil .GenerateTLSCertificate (t , "hello.org" )
122
+ certificate , err := x509 .ParseCertificate (rawCert .Certificate [0 ])
123
+ require .NoError (t , err )
124
+ pool := x509 .NewCertPool ()
125
+ pool .AddCert (certificate )
126
+ // nolint:gosec
127
+ tlsConfig := & tls.Config {
128
+ Certificates : []tls.Certificate {rawCert },
129
+ ServerName : "hello.org" ,
130
+ RootCAs : pool ,
131
+ }
132
+ srv := httptest .NewUnstartedServer (http .HandlerFunc (func (w http.ResponseWriter , r * http.Request ) {
133
+ w .WriteHeader (http .StatusOK )
134
+ }))
135
+ srv .TLS = tlsConfig
136
+ srv .StartTLS ()
137
+ defer srv .Close ()
138
+ db , pubsub := dbtestutil .NewDB (t )
139
+ peer , err := db .InsertReplica (context .Background (), database.InsertReplicaParams {
140
+ ID : uuid .New (),
141
+ CreatedAt : database .Now (),
142
+ StartedAt : database .Now (),
143
+ UpdatedAt : database .Now (),
144
+ Hostname : "something" ,
145
+ RelayAddress : srv .URL ,
146
+ })
147
+ require .NoError (t , err )
148
+ server , err := replicasync .New (context .Background (), slogtest .Make (t , nil ), db , pubsub , replicasync.Options {
149
+ ID : uuid .New (),
150
+ RelayAddress : "http://169.254.169.254" ,
151
+ TLSConfig : tlsConfig ,
152
+ })
153
+ require .NoError (t , err )
154
+ require .Len (t , server .Regional (), 1 )
155
+ require .Equal (t , peer .ID , server .Regional ()[0 ].ID )
156
+ require .False (t , server .Self ().Error .Valid )
157
+ _ = server .Close ()
158
+ })
115
159
t .Run ("ConnectsToFakePeerWithError" , func (t * testing.T ) {
116
160
t .Parallel ()
117
161
db , pubsub := dbtestutil .NewDB (t )
0 commit comments