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 }