diff --git a/src/pkg/errs/err.go b/src/pkg/errs/err.go index fe53a218c..e00ef8abf 100644 --- a/src/pkg/errs/err.go +++ b/src/pkg/errs/err.go @@ -29,6 +29,11 @@ var internalToExternal = map[errEnum][]error{ ResourceOwnerNotFound: {graph.ErrResourceOwnerNotFound}, } +// Internal returns the internal errors which match to the public error category. +func Internal(enum errEnum) []error { + return internalToExternal[enum] +} + // Is checks if the provided error contains an internal error that matches // the public error category. func Is(err error, enum errEnum) bool { diff --git a/src/pkg/errs/errs_test.go b/src/pkg/errs/errs_test.go index 43d718f7c..1ec787efd 100644 --- a/src/pkg/errs/errs_test.go +++ b/src/pkg/errs/errs_test.go @@ -19,6 +19,23 @@ func TestErrUnitSuite(t *testing.T) { suite.Run(t, &ErrUnitSuite{Suite: tester.NewUnitSuite(t)}) } +func (suite *ErrUnitSuite) TestInternal() { + table := []struct { + get errEnum + expect []error + }{ + {RepoAlreadyExists, []error{repository.ErrorRepoAlreadyExists}}, + {BackupNotFound, []error{repository.ErrorBackupNotFound}}, + {ServiceNotEnabled, []error{graph.ErrServiceNotEnabled}}, + {ResourceOwnerNotFound, []error{graph.ErrResourceOwnerNotFound}}, + } + for _, test := range table { + suite.Run(string(test.get), func() { + assert.ElementsMatch(suite.T(), test.expect, Internal(test.get)) + }) + } +} + func (suite *ErrUnitSuite) TestIs() { table := []struct { is errEnum