@@ -227,7 +227,53 @@ func TestPopulateAttemptedFieldsBadJSON(t *testing.T) {
227227 }
228228}
229229
230- func TestCerficatesTableContainsDuplicateSerials (t * testing.T ) {
230+ func TestScanCertStatusMetadataRow (t * testing.T ) {
231+ sa , _ , cleanUp := initSA (t )
232+ defer cleanUp ()
233+
234+ inputStatus := core.CertificateStatus {
235+ Serial : "ff00ff00" ,
236+ Status : "good" ,
237+ }
238+ err := sa .dbMap .Insert (& inputStatus )
239+ test .AssertNotError (t , err , "couldn't insert certificateStatus" )
240+
241+ rows , err := sa .dbMap .Query ("SELECT serial, status, ocspLastUpdated FROM certificateStatus" )
242+ test .AssertNotError (t , err , "selecting" )
243+
244+ if ! rows .Next () {
245+ t .Fatal ("got no rows" )
246+ }
247+ var certStatus CertStatusMetadata
248+ err = ScanCertStatusMetadataRow (rows , & certStatus )
249+
250+ if err == nil {
251+ t .Fatal ("expected error, got none" )
252+ }
253+ expected := "incorrect number of columns in scanned rows: got 3, expected 10"
254+ if err .Error () != expected {
255+ t .Errorf ("wrong error: got %q, expected %q" , err , expected )
256+ }
257+
258+ rows , err = sa .dbMap .Query ("SELECT id, status, serial, ocspLastUpdated, revokedDate, revokedReason, lastExpirationNagSent, notAfter, isExpired, issuerID FROM certificateStatus" )
259+ test .AssertNotError (t , err , "selecting" )
260+
261+ if ! rows .Next () {
262+ t .Fatal ("got no rows" )
263+ }
264+
265+ err = ScanCertStatusMetadataRow (rows , & certStatus )
266+
267+ if err == nil {
268+ t .Fatal ("expected error, got none" )
269+ }
270+ expected = "incorrect column 1 in scanned rows: got \" status\" , expected \" serial\" "
271+ if err .Error () != expected {
272+ t .Errorf ("wrong error: got %q, expected %q" , err , expected )
273+ }
274+ }
275+
276+ func TestCertificatesTableContainsDuplicateSerials (t * testing.T ) {
231277 sa , fc , cleanUp := initSA (t )
232278 defer cleanUp ()
233279
0 commit comments