zotregistry.io/zot@v1.4.4-0.20231124084042-02a8ed785457/pkg/storage/cache/boltdb_internal_test.go (about)

     1  package cache
     2  
     3  import (
     4  	"path/filepath"
     5  	"testing"
     6  
     7  	"github.com/opencontainers/go-digest"
     8  	. "github.com/smartystreets/goconvey/convey"
     9  	"go.etcd.io/bbolt"
    10  
    11  	"zotregistry.io/zot/pkg/storage/constants"
    12  )
    13  
    14  func TestBoltDriverErrors(t *testing.T) {
    15  	Convey("Make a new cache", t, func() {
    16  		tmpDir := t.TempDir()
    17  
    18  		boltDB, err := bbolt.Open(filepath.Join(tmpDir, "bolt.db"), 0o644, bbolt.DefaultOptions)
    19  		So(err, ShouldBeNil)
    20  
    21  		driver := BoltDBDriver{
    22  			db: boltDB,
    23  		}
    24  
    25  		Convey("Empty boltdb", func() {
    26  			// bucket not found
    27  			err = driver.PutBlob(digest.FromString("s"), "path")
    28  			So(err, ShouldNotBeNil)
    29  
    30  			_, err = driver.GetBlob(digest.FromString("s"))
    31  			So(err, ShouldNotBeNil)
    32  
    33  			has := driver.HasBlob(digest.FromString("s"), "blob")
    34  			So(has, ShouldBeFalse)
    35  
    36  			err = driver.DeleteBlob(digest.FromString("s"), "blob")
    37  			So(err, ShouldNotBeNil)
    38  		})
    39  
    40  		Convey("cache miss", func() {
    41  			goodDigest := digest.FromString("s")
    42  
    43  			err := driver.db.Update(func(tx *bbolt.Tx) error {
    44  				buck, err := tx.CreateBucketIfNotExists([]byte(constants.BlobsCache))
    45  				So(err, ShouldBeNil)
    46  
    47  				_, err = buck.CreateBucket([]byte(goodDigest))
    48  				So(err, ShouldBeNil)
    49  
    50  				return nil
    51  			})
    52  			So(err, ShouldBeNil)
    53  
    54  			// digest bucket not found
    55  			err = driver.DeleteBlob(digest.FromString("bad-digest"), "path")
    56  			So(err, ShouldNotBeNil)
    57  
    58  			// duplicate bucket not exist
    59  			err = driver.DeleteBlob(goodDigest, "path")
    60  			So(err, ShouldNotBeNil)
    61  		})
    62  	})
    63  }