MCPcopy Create free account
hub / github.com/cloudflare/cfssl / TestInsertValidCertificate

Function TestInsertValidCertificate

api/certadd/insert_test.go:143–209  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

141}
142
143func TestInsertValidCertificate(t *testing.T) {
144 dbAccessor, err := prepDB()
145 if err != nil {
146 t.Fatal(err)
147 }
148
149 serialNumber, cert, pemBytes, signer, err := makeCertificate()
150
151 if err != nil {
152 t.Fatal(err)
153 }
154
155 resp, body := makeRequest(t, dbAccessor, signer, map[string]interface{}{
156 "serial_number": serialNumber.Text(10),
157 "authority_key_identifier": hex.EncodeToString(cert.AuthorityKeyId),
158 "status": "good",
159 "pem": string(pemBytes),
160 "expiry": cert.NotAfter.UTC().Format(time.RFC3339),
161 })
162
163 if resp.StatusCode != http.StatusOK {
164 t.Fatal("Expected HTTP OK, got", resp.StatusCode, string(body))
165 }
166
167 var response map[string]interface{}
168 if err = json.Unmarshal(body, &response); err != nil {
169 t.Fatal("Could not parse response: ", err)
170 }
171 responseResult := response["result"].(map[string]interface{})
172 encodedOcsp := responseResult["ocsp_response"].(string)
173
174 rawOcsp, err := base64.StdEncoding.DecodeString(encodedOcsp)
175 if err != nil {
176 t.Fatal("Could not base64 decode response: ", err)
177 }
178 returnedOcsp, err := stdocsp.ParseResponse(rawOcsp, nil)
179 if err != nil {
180 t.Fatal("Could not parse returned OCSP response", err)
181 }
182
183 ocsps, err := dbAccessor.GetOCSP(serialNumber.Text(10), hex.EncodeToString(cert.AuthorityKeyId))
184 if err != nil {
185 t.Fatal(err)
186 }
187
188 if len(ocsps) != 1 {
189 t.Fatal("Expected 1 OCSP record to be inserted, but found ", len(ocsps))
190 }
191
192 parsedOcsp, err := stdocsp.ParseResponse([]byte(ocsps[0].Body), nil)
193 if err != nil {
194 t.Fatal(err)
195 }
196
197 if parsedOcsp.SerialNumber.Cmp(returnedOcsp.SerialNumber) != 0 {
198 t.Fatal("The returned and inserted OCSP response have different serial numbers: got ", returnedOcsp.SerialNumber, " but decoded ", parsedOcsp.SerialNumber)
199 }
200

Callers

nothing calls this directly

Calls 4

makeCertificateFunction · 0.85
makeRequestFunction · 0.85
prepDBFunction · 0.70
GetOCSPMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…