get-serial-by-id_test.go raw

   1  package database
   2  
   3  import (
   4  	"testing"
   5  )
   6  
   7  func TestGetSerialById(t *testing.T) {
   8  	// Use shared database (skips in short mode)
   9  	db, _ := GetSharedDB(t)
  10  	savedEvents := GetSharedEvents(t)
  11  
  12  	if len(savedEvents) < 4 {
  13  		t.Fatalf("Need at least 4 saved events, got %d", len(savedEvents))
  14  	}
  15  	testEvent := savedEvents[3]
  16  
  17  	// Get the serial by ID
  18  	serial, err := db.GetSerialById(testEvent.ID)
  19  	if err != nil {
  20  		t.Fatalf("Failed to get serial by ID: %v", err)
  21  	}
  22  
  23  	// Verify the serial is not nil
  24  	if serial == nil {
  25  		t.Fatal("Expected serial to be non-nil, but got nil")
  26  	}
  27  
  28  	// Test with a non-existent ID
  29  	nonExistentId := make([]byte, len(testEvent.ID))
  30  	// Ensure it's different from any real ID
  31  	for i := range nonExistentId {
  32  		nonExistentId[i] = ^testEvent.ID[i]
  33  	}
  34  
  35  	serial, err = db.GetSerialById(nonExistentId)
  36  	if err == nil {
  37  		t.Fatalf("Expected error for non-existent ID, but got none")
  38  	}
  39  
  40  	// For non-existent Ids, the function should return nil serial and an error
  41  	if serial != nil {
  42  		t.Fatalf("Expected nil serial for non-existent ID, but got: %v", serial)
  43  	}
  44  }
  45