From e82ec431c7b6eb8d01ad28b0fe397eb320714088 Mon Sep 17 00:00:00 2001 From: Jean-Christophe Sirot Date: Wed, 13 Nov 2019 11:24:48 +0100 Subject: [PATCH] Add tests for remove App by id Signed-off-by: Jean-Christophe Sirot --- internal/store/bundle.go | 2 +- internal/store/bundle_test.go | 38 +++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/internal/store/bundle.go b/internal/store/bundle.go index d5425ce3d..645e98c93 100644 --- a/internal/store/bundle.go +++ b/internal/store/bundle.go @@ -116,7 +116,7 @@ func (b *bundleStore) Remove(ref reference.Reference) error { if len(b.refsMap[id]) == 0 { return fmt.Errorf("no such image %q", reference.FamiliarString(ref)) } else if len(b.refsMap[id]) > 1 { - return fmt.Errorf("unable to delete %s - App is referenced in multiple repositories", reference.FamiliarString(ref)) + return fmt.Errorf("unable to delete %q - App is referenced in multiple repositories", reference.FamiliarString(ref)) } ref = b.refsMap[id][0] } diff --git a/internal/store/bundle_test.go b/internal/store/bundle_test.go index 20f090766..4f9014db7 100644 --- a/internal/store/bundle_test.go +++ b/internal/store/bundle_test.go @@ -295,6 +295,44 @@ func TestRemove(t *testing.T) { }) } +func TestRemoveById(t *testing.T) { + dockerConfigDir := fs.NewDir(t, t.Name(), fs.WithMode(0755)) + defer dockerConfigDir.Remove() + appstore, err := NewApplicationStore(dockerConfigDir.Path()) + assert.NilError(t, err) + bundleStore, err := appstore.BundleStore() + assert.NilError(t, err) + + t.Run("error on multiple repositories", func(t *testing.T) { + bndl := relocated.FromBundle(&bundle.Bundle{Name: "bundle-name"}) + idRef, err := FromBundle(bndl) + assert.NilError(t, err) + _, err = bundleStore.Store(idRef, bndl) + assert.NilError(t, err) + _, err = bundleStore.Store(parseRefOrDie(t, "my-repo/a-bundle:my-tag"), bndl) + assert.NilError(t, err) + + err = bundleStore.Remove(idRef) + assert.Equal(t, err.Error(), fmt.Sprintf("unable to delete %q - App is referenced in multiple repositories", reference.FamiliarString(idRef))) + }) + + t.Run("success when only one reference exists", func(t *testing.T) { + bndl := relocated.FromBundle(&bundle.Bundle{Name: "other-bundle-name"}) + ref := parseRefOrDie(t, "my-repo/other-bundle:my-tag") + _, err = bundleStore.Store(ref, bndl) + + idRef, err := FromBundle(bndl) + assert.NilError(t, err) + + err = bundleStore.Remove(idRef) + assert.NilError(t, err) + bundles, err := bundleStore.List() + assert.NilError(t, err) + for _, bref := range bundles { + assert.Equal(t, bref == ref, false) + } + }) +} func TestLookUp(t *testing.T) { dockerConfigDir := fs.NewDir(t, t.Name(), fs.WithMode(0755)) defer dockerConfigDir.Remove()