@@ -63,8 +63,8 @@ func (f *fixedTimeSource) Now() time.Time {
63
63
return f .fakeTime
64
64
}
65
65
66
- // setupTestServer creates a test TesseraCT server with a single endpoint at path .
67
- func setupTestServer (t * testing.T , path string ) * httptest. Server {
66
+ // setupTestLog creates test TesseraCT log using a POSIX backend .
67
+ func setupTestLog (t * testing.T ) * log {
68
68
t .Helper ()
69
69
70
70
signer , err := setupSigner (fakeSignature )
@@ -76,16 +76,24 @@ func setupTestServer(t *testing.T, path string) *httptest.Server {
76
76
if err := roots .AppendCertsFromPEMFile (testRootPath ); err != nil {
77
77
t .Fatalf ("failed to read trusted roots: %v" , err )
78
78
}
79
+
79
80
cvOpts := ChainValidationOpts {
80
81
trustedRoots : roots ,
81
82
rejectExpired : false ,
82
83
rejectUnexpired : false ,
83
84
}
85
+
84
86
log , err := NewLog (t .Context (), origin , signer , cvOpts , newPosixStorageFunc (t ), newFixedTimeSource (fakeTime ))
85
87
if err != nil {
86
88
t .Fatalf ("newLog(): %v" , err )
87
89
}
88
90
91
+ return log
92
+ }
93
+
94
+ // setupTestServer creates a test TesseraCT server with a single endpoint at path.
95
+ func setupTestServer (t * testing.T , log * log , path string ) * httptest.Server {
96
+ t .Helper ()
89
97
opts := & HandlerOptions {
90
98
Deadline : time .Millisecond * 500 ,
91
99
RequestLog : & DefaultRequestLog {},
@@ -144,24 +152,30 @@ func newPosixStorageFunc(t *testing.T) storage.CreateStorage {
144
152
}
145
153
146
154
func TestGetRoots (t * testing.T ) {
155
+ log := setupTestLog (t )
156
+ server := setupTestServer (t , log , path .Join (prefix , "ct/v1/get-roots" ))
157
+ defer server .Close ()
158
+
147
159
t .Run ("get-roots" , func (t * testing.T ) {
148
- server := setupTestServer (t , path .Join (prefix , "ct/v1/get-roots" ))
149
- defer server .Close ()
150
160
resp , err := http .Get (server .URL + path .Join (prefix , "ct/v1/get-roots" ))
151
161
if err != nil {
152
162
t .Fatalf ("Failed to get roots: %v" , err )
153
163
}
164
+
154
165
if resp .StatusCode != http .StatusOK {
155
166
t .Errorf ("Unexpected status code: %v" , resp .StatusCode )
156
167
}
168
+
157
169
var roots types.GetRootsResponse
158
170
err = json .NewDecoder (resp .Body ).Decode (& roots )
159
171
if err != nil {
160
172
t .Errorf ("Failed to decode response: %v" , err )
161
173
}
174
+
162
175
if got , want := len (roots .Certificates ), 1 ; got != want {
163
176
t .Errorf ("Unexpected number of certificates: got %d, want %d" , got , want )
164
177
}
178
+
165
179
got , err := base64 .StdEncoding .DecodeString (roots .Certificates [0 ])
166
180
if err != nil {
167
181
t .Errorf ("Failed to decode certificate: %v" , err )
0 commit comments