@@ -10,12 +10,21 @@ import (
1010 "github.com/docker/distribution/reference"
1111)
1212
13+ func parseRefOrDie (t * testing.T , ref string ) reference.Named {
14+ t .Helper ()
15+ named , err := reference .ParseNormalizedNamed (ref )
16+ assert .NilError (t , err )
17+ return named
18+ }
19+
1320type bundleStoreStub struct {
1421 ReadBundle * bundle.Bundle
1522 ReadError error
1623 StoredBundle string
1724 StoredError error
1825 StoredID reference.Digested
26+ LookUpRef reference.Reference
27+ LookUpError error
1928}
2029
2130func (b * bundleStoreStub ) Store (ref reference.Reference , bndle * bundle.Bundle ) (reference.Digested , error ) {
@@ -44,15 +53,25 @@ func (b *bundleStoreStub) Remove(ref reference.Reference) error {
4453 return nil
4554}
4655
56+ func (b * bundleStoreStub ) LookUp (refOrID string ) (reference.Reference , error ) {
57+ defer func () {
58+ b .LookUpRef = nil
59+ b .LookUpError = nil
60+ }()
61+ return b .LookUpRef , b .LookUpError
62+ }
63+
4764var mockedBundleStore = & bundleStoreStub {}
4865
4966func TestInvalidSourceReference (t * testing.T ) {
5067 // given a bad source image reference
5168 const badRef = "b@d reference"
69+ // and given bundle store will return an error on LookUp
70+ mockedBundleStore .LookUpError = fmt .Errorf ("error from bundleStore.LookUp" )
5271
5372 err := runTag (mockedBundleStore , badRef , "" )
5473
55- assert .ErrorContains (t , err , fmt . Sprintf ( "could not parse '%s' as a valid reference" , badRef ) )
74+ assert .Assert (t , err != nil )
5675}
5776
5877func TestUnexistingSource (t * testing.T ) {
@@ -67,18 +86,20 @@ func TestUnexistingSource(t *testing.T) {
6786}
6887
6988func TestInvalidDestinationReference (t * testing.T ) {
70- // given a bundle is returned by bundleStore.Read
89+ // given a reference and a bundle is returned by bundleStore.LookUp and bundleStore.Read
90+ mockedBundleStore .LookUpRef = parseRefOrDie (t , "ref" )
7191 mockedBundleStore .ReadBundle = & bundle.Bundle {}
7292 // and given a bad destination reference
7393 const badRef = "b@d reference"
7494
7595 err := runTag (mockedBundleStore , "ref" , badRef )
7696
77- assert .ErrorContains (t , err , fmt .Sprintf ("could not parse '%s' as a valid reference" , badRef ))
97+ assert .ErrorContains (t , err , fmt .Sprintf ("invalid reference format" ))
7898}
7999
80100func TestBundleNotStored (t * testing.T ) {
81- // given a bundle is returned by bundleStore.Read
101+ // given a reference and a bundle is returned by bundleStore.LookUp and bundleStore.Read
102+ mockedBundleStore .LookUpRef = parseRefOrDie (t , "src-app" )
82103 mockedBundleStore .ReadBundle = & bundle.Bundle {}
83104 // and given bundleStore.Store will return an error
84105 mockedBundleStore .StoredError = fmt .Errorf ("error from bundleStore.Store" )
@@ -89,7 +110,8 @@ func TestBundleNotStored(t *testing.T) {
89110}
90111
91112func TestSuccessfulyTag (t * testing.T ) {
92- // given a bundle is returned by bundleStore.Read
113+ // given a reference and a bundle is returned by bundleStore.LookUp and bundleStore.Read
114+ mockedBundleStore .LookUpRef = parseRefOrDie (t , "src-app" )
93115 mockedBundleStore .ReadBundle = & bundle.Bundle {}
94116 // and given valid source and output references
95117 const (
0 commit comments