From 08996d564d576699f9a531df887e6b53ad936ac8 Mon Sep 17 00:00:00 2001 From: everettraven Date: Wed, 31 Jan 2024 12:56:56 -0500 Subject: [PATCH] update unit tests Signed-off-by: everettraven --- .../catalogmetadata/client/client_test.go | 29 +- .../clusterextension_controller.go | 4 +- .../clusterextension_controller_test.go | 332 ++++++++++++++++-- internal/controllers/suite_test.go | 2 +- internal/controllers/variables_test.go | 19 +- .../variablesources/installed_package_test.go | 109 ++++-- .../variablesources/required_package_test.go | 42 ++- test/util/fake_catalog_client.go | 14 +- 8 files changed, 437 insertions(+), 114 deletions(-) diff --git a/internal/catalogmetadata/client/client_test.go b/internal/catalogmetadata/client/client_test.go index 0490a0b12..0c4dc3a43 100644 --- a/internal/catalogmetadata/client/client_test.go +++ b/internal/catalogmetadata/client/client_test.go @@ -52,27 +52,6 @@ func TestClient(t *testing.T) { fetcher: &MockFetcher{shouldError: true}, wantErr: "error fetching catalog contents: mock cache error", }, - { - name: "channel has a ref to a missing bundle", - fakeCatalog: func() ([]client.Object, []*catalogmetadata.Bundle, map[string][]byte) { - objs, _, catalogContentMap := defaultFakeCatalog() - - catalogContentMap["catalog-1"] = append(catalogContentMap["catalog-1"], []byte(`{ - "schema": "olm.channel", - "name": "channel-with-missing-bundle", - "package": "fake1", - "entries": [ - { - "name": "fake1.v9.9.9" - } - ] - }`)...) - - return objs, nil, catalogContentMap - }, - wantErr: `bundle "fake1.v9.9.9" not found in catalog "catalog-1" (package "fake1", channel "channel-with-missing-bundle")`, - fetcher: &MockFetcher{}, - }, { name: "invalid meta", fakeCatalog: func() ([]client.Object, []*catalogmetadata.Bundle, map[string][]byte) { @@ -132,10 +111,10 @@ func TestClient(t *testing.T) { objs, bundles, catalogContentMap := defaultFakeCatalog() catalogContentMap["catalog-1"] = append(catalogContentMap["catalog-1"], - []byte(`{"schema": "olm.deprecations", "package":"fake1", "entries":[{"message": "fake1 is deprecated", "reference": {"schema": "olm.package"}}, {"message":"channel stable is deprecated", "reference": {"schema": "olm.channel", "name": "stable"}}, {"message": "bundle fake1.v1.0.0 is deprecated", "reference":{"schema":"olm.bundle", "name":"fake1.v1.0.0"}}]}`)...) + []byte(`{"schema": "olm.deprecations", "package":"fake1", "entries":[{"message": "bundle fake1.v1.0.0 is deprecated", "reference":{"schema":"olm.bundle", "name":"fake1.v1.0.0"}}]}`)...) for i := range bundles { - if bundles[i].Name == "fake1.v1.0.0" { + if bundles[i].Name == "fake1.v1.0.0" && bundles[i].Catalog == "catalog-1" { bundles[i].Deprecation = &declcfg.DeprecationEntry{ Reference: declcfg.PackageScopedReference{ Schema: "olm.bundle", @@ -161,10 +140,10 @@ func TestClient(t *testing.T) { tt.fetcher, ) - bundles, err := fakeCatalogClient.CatalogContents(ctx) + contents, err := fakeCatalogClient.CatalogContents(ctx) if tt.wantErr == "" { assert.NoError(t, err) - assert.Equal(t, expectedBundles, bundles) + assert.Equal(t, expectedBundles, contents.Bundles) } else { assert.EqualError(t, err, tt.wantErr) } diff --git a/internal/controllers/clusterextension_controller.go b/internal/controllers/clusterextension_controller.go index c3a56b85c..dafcc2289 100644 --- a/internal/controllers/clusterextension_controller.go +++ b/internal/controllers/clusterextension_controller.go @@ -338,7 +338,7 @@ func SetDeprecationStatus(ext *ocv1alpha1.ClusterExtension, bundle *catalogmetad }, ) if len(channels) > 0 { - if packages[0].IsDeprecated() { + if channels[0].IsDeprecated() { apimeta.SetStatusCondition(&ext.Status.Conditions, metav1.Condition{ Type: ocv1alpha1.TypeChannelDeprecated, Reason: ocv1alpha1.ReasonDeprecated, @@ -353,7 +353,7 @@ func SetDeprecationStatus(ext *ocv1alpha1.ClusterExtension, bundle *catalogmetad if bundle.IsDeprecated() { apimeta.SetStatusCondition(&ext.Status.Conditions, metav1.Condition{ - Type: ocv1alpha1.TypeChannelDeprecated, + Type: ocv1alpha1.TypeBundleDeprecated, Reason: ocv1alpha1.ReasonDeprecated, Status: metav1.ConditionTrue, Message: bundle.Deprecation.Message, diff --git a/internal/controllers/clusterextension_controller_test.go b/internal/controllers/clusterextension_controller_test.go index 4f97c4b11..095ff05eb 100644 --- a/internal/controllers/clusterextension_controller_test.go +++ b/internal/controllers/clusterextension_controller_test.go @@ -1613,6 +1613,10 @@ func TestSetDeprecationStatus(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Generation: 1, }, + Spec: ocv1alpha1.ClusterExtensionSpec{ + PackageName: "foo", + Channel: "stable", + }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{}, }, @@ -1621,6 +1625,10 @@ func TestSetDeprecationStatus(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Generation: 1, }, + Spec: ocv1alpha1.ClusterExtensionSpec{ + PackageName: "foo", + Channel: "stable", + }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{ { @@ -1650,7 +1658,32 @@ func TestSetDeprecationStatus(t *testing.T) { }, }, }, - bundle: &catalogmetadata.Bundle{}, + bundle: &catalogmetadata.Bundle{ + Bundle: declcfg.Bundle{ + Name: "foo.v1.0.0", + Package: "foo", + }, + Catalog: "bar", + }, + catalogContents: &catalogclient.Contents{ + Packages: []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "foo", + }, + Catalog: "bar", + }, + }, + Channels: []*catalogmetadata.Channel{ + { + Channel: declcfg.Channel{ + Name: "stable", + Package: "foo", + }, + Catalog: "bar", + }, + }, + }, }, { name: "non-deprecated bundle, olm.channel deprecations associated with bundle, no channel specified, all deprecation statuses set to False", @@ -1658,6 +1691,9 @@ func TestSetDeprecationStatus(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Generation: 1, }, + Spec: ocv1alpha1.ClusterExtensionSpec{ + PackageName: "foo", + }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{}, }, @@ -1666,6 +1702,9 @@ func TestSetDeprecationStatus(t *testing.T) { ObjectMeta: metav1.ObjectMeta{ Generation: 1, }, + Spec: ocv1alpha1.ClusterExtensionSpec{ + PackageName: "foo", + }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{ { @@ -1696,10 +1735,35 @@ func TestSetDeprecationStatus(t *testing.T) { }, }, bundle: &catalogmetadata.Bundle{ - Deprecation: &declcfg.DeprecationEntry{ - Reference: declcfg.PackageScopedReference{ - Schema: declcfg.SchemaChannel, - Name: "badchannel", + Bundle: declcfg.Bundle{ + Name: "foo.v1.0.0", + Package: "foo", + }, + Catalog: "bar", + }, + catalogContents: &catalogclient.Contents{ + Packages: []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "foo", + }, + Catalog: "bar", + }, + }, + Channels: []*catalogmetadata.Channel{ + { + Channel: declcfg.Channel{ + Name: "stable", + Package: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaChannel, + Name: "stable", + }, + Message: "stable channel deprecated", + }, }, }, }, @@ -1711,7 +1775,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "nondeprecated", + PackageName: "foo", + Channel: "nondeprecated", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{}, @@ -1722,7 +1787,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "nondeprecated", + PackageName: "foo", + Channel: "nondeprecated", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{ @@ -1754,10 +1820,42 @@ func TestSetDeprecationStatus(t *testing.T) { }, }, bundle: &catalogmetadata.Bundle{ - Deprecation: &declcfg.DeprecationEntry{ - Reference: declcfg.PackageScopedReference{ - Schema: declcfg.SchemaChannel, - Name: "badchannel", + Bundle: declcfg.Bundle{ + Name: "foo.v1.0.0", + Package: "foo", + }, + Catalog: "bar", + }, + catalogContents: &catalogclient.Contents{ + Packages: []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "foo", + }, + Catalog: "bar", + }, + }, + Channels: []*catalogmetadata.Channel{ + { + Channel: declcfg.Channel{ + Name: "stable", + Package: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaChannel, + Name: "stable", + }, + Message: "stable channel deprecated", + }, + }, + { + Channel: declcfg.Channel{ + Name: "nondeprecated", + Package: "foo", + }, + Catalog: "bar", }, }, }, @@ -1769,7 +1867,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{}, @@ -1780,7 +1879,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{ @@ -1812,12 +1912,36 @@ func TestSetDeprecationStatus(t *testing.T) { }, }, bundle: &catalogmetadata.Bundle{ - Deprecation: &declcfg.DeprecationEntry{ - Reference: declcfg.PackageScopedReference{ - Schema: declcfg.SchemaChannel, - Name: "badchannel", + Bundle: declcfg.Bundle{ + Name: "foo.v1.0.0", + Package: "foo", + }, + Catalog: "bar", + }, + catalogContents: &catalogclient.Contents{ + Packages: []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "foo", + }, + Catalog: "bar", + }, + }, + Channels: []*catalogmetadata.Channel{ + { + Channel: declcfg.Channel{ + Name: "stable", + Package: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaChannel, + Name: "stable", + }, + Message: "stable channel deprecated", + }, }, - Message: "bad channel!", }, }, }, @@ -1828,7 +1952,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{}, @@ -1839,7 +1964,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{ @@ -1871,12 +1997,49 @@ func TestSetDeprecationStatus(t *testing.T) { }, }, bundle: &catalogmetadata.Bundle{ + Bundle: declcfg.Bundle{ + Name: "foo.v1.0.0", + Package: "foo", + }, + Catalog: "bar", Deprecation: &declcfg.DeprecationEntry{ Reference: declcfg.PackageScopedReference{ Schema: declcfg.SchemaBundle, - Name: "badbundle", + Name: "foo.v1.0.0", + }, + Message: "foo.v1.0.0 deprecated", + }, + }, + catalogContents: &catalogclient.Contents{ + Packages: []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaPackage, + }, + Message: "foo package deprecated", + }, + }, + }, + Channels: []*catalogmetadata.Channel{ + { + Channel: declcfg.Channel{ + Name: "stable", + Package: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaChannel, + Name: "stable", + }, + Message: "stable channel deprecated", + }, }, - Message: "bad bundle!", }, }, }, @@ -1887,7 +2050,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{}, @@ -1898,7 +2062,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{ @@ -1930,12 +2095,43 @@ func TestSetDeprecationStatus(t *testing.T) { }, }, bundle: &catalogmetadata.Bundle{ + Bundle: declcfg.Bundle{ + Name: "foo.v1.0.0", + Package: "foo", + }, + Catalog: "bar", Deprecation: &declcfg.DeprecationEntry{ Reference: declcfg.PackageScopedReference{ Schema: declcfg.SchemaBundle, - Name: "badbundle", + Name: "foo.v1.0.0", + }, + Message: "foo.v1.0.0 deprecated", + }, + }, + catalogContents: &catalogclient.Contents{ + Packages: []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "foo", + }, + Catalog: "bar", + }, + }, + Channels: []*catalogmetadata.Channel{ + { + Channel: declcfg.Channel{ + Name: "stable", + Package: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaChannel, + Name: "stable", + }, + Message: "stable channel deprecated", + }, }, - Message: "bad bundle!", }, }, }, @@ -1946,7 +2142,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{}, @@ -1957,7 +2154,8 @@ func TestSetDeprecationStatus(t *testing.T) { Generation: 1, }, Spec: ocv1alpha1.ClusterExtensionSpec{ - Channel: "badchannel", + PackageName: "foo", + Channel: "stable", }, Status: ocv1alpha1.ClusterExtensionStatus{ Conditions: []metav1.Condition{ @@ -1988,7 +2186,45 @@ func TestSetDeprecationStatus(t *testing.T) { }, }, }, - bundle: &catalogmetadata.Bundle{}, + bundle: &catalogmetadata.Bundle{ + Bundle: declcfg.Bundle{ + Name: "foo.v1.0.0", + Package: "foo", + }, + Catalog: "bar", + }, + catalogContents: &catalogclient.Contents{ + Packages: []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaPackage, + }, + Message: "foo package deprecated", + }, + }, + }, + Channels: []*catalogmetadata.Channel{ + { + Channel: declcfg.Channel{ + Name: "stable", + Package: "foo", + }, + Catalog: "bar", + Deprecation: &declcfg.DeprecationEntry{ + Reference: declcfg.PackageScopedReference{ + Schema: declcfg.SchemaChannel, + Name: "stable", + }, + Message: "stable channel deprecated", + }, + }, + }, + }, }, } { t.Run(tc.name, func(t *testing.T) { @@ -2032,16 +2268,54 @@ var ( Channel: declcfg.Channel{ Name: "beta", Package: "plain", + Entries: []declcfg.ChannelEntry{ + { + Name: "operatorhub/plain/0.1.0", + }, + }, }, } badmediaBetaChannel = catalogmetadata.Channel{ Channel: declcfg.Channel{ Name: "beta", Package: "badmedia", + Entries: []declcfg.ChannelEntry{ + { + Name: "operatorhub/badmedia/0.1.0", + }, + }, }, } ) +var testPackageList = []*catalogmetadata.Package{ + { + Package: declcfg.Package{ + Name: "prometheus", + }, + Catalog: "fake-catalog", + }, + { + Package: declcfg.Package{ + Name: "plain", + }, + Catalog: "fake-catalog", + }, + { + Package: declcfg.Package{ + Name: "badmedia", + }, + Catalog: "fake-catalog", + }, +} + +var testChannelList = []*catalogmetadata.Channel{ + &prometheusAlphaChannel, + &prometheusBetaChannel, + &plainBetaChannel, + &badmediaBetaChannel, +} + var testBundleList = []*catalogmetadata.Bundle{ { Bundle: declcfg.Bundle{ diff --git a/internal/controllers/suite_test.go b/internal/controllers/suite_test.go index cfc7bc6d6..99e8ca366 100644 --- a/internal/controllers/suite_test.go +++ b/internal/controllers/suite_test.go @@ -49,7 +49,7 @@ func newClientAndReconciler(t *testing.T) (client.Client, *controllers.ClusterEx require.NoError(t, err) cl := newClient(t) - fakeCatalogClient := testutil.NewFakeCatalogClient(testBundleList) + fakeCatalogClient := testutil.NewFakeCatalogClient(testBundleList, testChannelList, testPackageList) reconciler := &controllers.ClusterExtensionReconciler{ Client: cl, CatalogProvider: &fakeCatalogClient, diff --git a/internal/controllers/variables_test.go b/internal/controllers/variables_test.go index d2579dea2..29526aed3 100644 --- a/internal/controllers/variables_test.go +++ b/internal/controllers/variables_test.go @@ -32,14 +32,15 @@ func TestVariableSource(t *testing.T) { utilruntime.Must(ocv1alpha1.AddToScheme(sch)) utilruntime.Must(rukpakv1alpha2.AddToScheme(sch)) - // stableChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ - // Name: "stable", - // Entries: []declcfg.ChannelEntry{ - // { - // Name: "packageA.v2.0.0", - // }, - // }, - // }} + stableChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ + Name: "stable", + Package: "packageA", + Entries: []declcfg.ChannelEntry{ + { + Name: "packageA.v2.0.0", + }, + }, + }} bundleSet := map[string]*catalogmetadata.Bundle{ "packageA.v2.0.0": { Bundle: declcfg.Bundle{ @@ -94,7 +95,7 @@ func TestVariableSource(t *testing.T) { }, } - vars, err := controllers.GenerateVariables(&client.Contents{Bundles: allBundles}, []ocv1alpha1.ClusterExtension{clusterExtension}, []rukpakv1alpha2.BundleDeployment{bd}) + vars, err := controllers.GenerateVariables(&client.Contents{Bundles: allBundles, Channels: []*catalogmetadata.Channel{&stableChannel}}, []ocv1alpha1.ClusterExtension{clusterExtension}, []rukpakv1alpha2.BundleDeployment{bd}) require.NoError(t, err) expectedVars := []deppy.Variable{ diff --git a/internal/resolution/variablesources/installed_package_test.go b/internal/resolution/variablesources/installed_package_test.go index 2125713d7..b2513c9c5 100644 --- a/internal/resolution/variablesources/installed_package_test.go +++ b/internal/resolution/variablesources/installed_package_test.go @@ -26,14 +26,51 @@ func TestMakeInstalledPackageVariablesWithForceSemverUpgradeConstraintsEnabled(t defer featuregatetesting.SetFeatureGateDuringTest(t, features.OperatorControllerFeatureGate, features.ForceSemverUpgradeConstraints, true)() const testPackageName = "test-package" - // someOtherPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ - // Name: "stable", - // Package: "some-other-package", - // }} - // testPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ - // Name: "stable", - // Package: testPackageName, - // }} + someOtherPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ + Name: "stable", + Package: "some-other-package", + Entries: []declcfg.ChannelEntry{ + { + Name: "some-other-package.v2.3.0", + }, + }, + }} + testPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ + Name: "stable", + Package: testPackageName, + Entries: []declcfg.ChannelEntry{ + { + Name: "test-package.v0.0.1", + }, + { + Name: "test-package.v0.0.2", + }, + { + Name: "test-package.v0.1.0", + }, + { + Name: "test-package.v0.1.1", + }, + { + Name: "test-package.v0.1.2", + }, + { + Name: "test-package.v0.2.0", + }, + { + Name: "test-package.v2.0.0", + }, + { + Name: "test-package.v2.1.0", + }, + { + Name: "test-package.v2.2.0", + }, + { + Name: "test-package.v3.0.0", + }, + }, + }} bundleSet := map[string]*catalogmetadata.Bundle{ // Major version zero is for initial development and // has different update behaviour than versions >= 1.0.0: @@ -244,7 +281,7 @@ func TestMakeInstalledPackageVariablesWithForceSemverUpgradeConstraintsEnabled(t installedPackages, err := variablesources.MakeInstalledPackageVariables( allBundles, - []*catalogmetadata.Channel{}, + []*catalogmetadata.Channel{&testPackageChannel, &someOtherPackageChannel}, []ocv1alpha1.ClusterExtension{fakeOwnerClusterExtension}, bundleDeployments, ) @@ -271,32 +308,32 @@ func TestMakeInstalledPackageVariablesWithForceSemverUpgradeConstraintsDisabled( defer featuregatetesting.SetFeatureGateDuringTest(t, features.OperatorControllerFeatureGate, features.ForceSemverUpgradeConstraints, false)() const testPackageName = "test-package" - // someOtherPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ - // Name: "stable", - // Package: "some-other-package", - // Entries: []declcfg.ChannelEntry{ - // { - // Name: "some-other-package.v2.3.0", - // }, - // }, - // }} - // testPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ - // Name: "stable", - // Package: testPackageName, - // Entries: []declcfg.ChannelEntry{ - // { - // Name: "test-package.v2.0.0", - // }, - // { - // Name: "test-package.v2.1.0", - // Replaces: "test-package.v2.0.0", - // }, - // { - // Name: "test-package.v2.2.0", - // Replaces: "test-package.v2.1.0", - // }, - // }, - // }} + someOtherPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ + Name: "stable", + Package: "some-other-package", + Entries: []declcfg.ChannelEntry{ + { + Name: "some-other-package.v2.3.0", + }, + }, + }} + testPackageChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ + Name: "stable", + Package: testPackageName, + Entries: []declcfg.ChannelEntry{ + { + Name: "test-package.v2.0.0", + }, + { + Name: "test-package.v2.1.0", + Replaces: "test-package.v2.0.0", + }, + { + Name: "test-package.v2.2.0", + Replaces: "test-package.v2.1.0", + }, + }, + }} bundleSet := map[string]*catalogmetadata.Bundle{ "test-package.v2.0.0": { Bundle: declcfg.Bundle{ @@ -403,7 +440,7 @@ func TestMakeInstalledPackageVariablesWithForceSemverUpgradeConstraintsDisabled( installedPackages, err := variablesources.MakeInstalledPackageVariables( allBundles, - []*catalogmetadata.Channel{}, + []*catalogmetadata.Channel{&testPackageChannel, &someOtherPackageChannel}, []ocv1alpha1.ClusterExtension{fakeOwnerClusterExtension}, bundleDeployments, ) diff --git a/internal/resolution/variablesources/required_package_test.go b/internal/resolution/variablesources/required_package_test.go index bebfdb0ab..92cbc86d7 100644 --- a/internal/resolution/variablesources/required_package_test.go +++ b/internal/resolution/variablesources/required_package_test.go @@ -23,12 +23,39 @@ import ( ) func TestMakeRequiredPackageVariables(t *testing.T) { - // stableChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ - // Name: "stable", - // }} - // betaChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ - // Name: "beta", - // }} + stableChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ + Name: "stable", + Package: "test-package", + Entries: []declcfg.ChannelEntry{ + { + Name: "test-package.v1.0.0", + }, + { + Name: "test-package.v2.0.0", + }, + { + Name: "test-package.v3.0.0", + }, + { + Name: "test-package.v4.0.0", + }, + { + Name: "test-package.v4.1.0", + }, + { + Name: "test-package.v5.0.0", + }, + }, + }} + betaChannel := catalogmetadata.Channel{Channel: declcfg.Channel{ + Name: "beta", + Package: "test-package", + Entries: []declcfg.ChannelEntry{ + { + Name: "test-package.v3.0.0", + }, + }, + }} bundleSet := map[string]*catalogmetadata.Bundle{ // Bundles which belong to test-package we will be using // to assert wether the testable function filters out the data @@ -220,7 +247,8 @@ func TestMakeRequiredPackageVariables(t *testing.T) { }, } { t.Run(tt.name, func(t *testing.T) { - vars, err := variablesources.MakeRequiredPackageVariables(allBundles, []*catalogmetadata.Channel{}, tt.clusterExtensions) + channels := []*catalogmetadata.Channel{&stableChannel, &betaChannel} + vars, err := variablesources.MakeRequiredPackageVariables(allBundles, channels, tt.clusterExtensions) if tt.expectedError == "" { assert.NoError(t, err) } else { diff --git a/test/util/fake_catalog_client.go b/test/util/fake_catalog_client.go index 2968478df..3478bf9a7 100644 --- a/test/util/fake_catalog_client.go +++ b/test/util/fake_catalog_client.go @@ -8,13 +8,17 @@ import ( ) type FakeCatalogClient struct { - bundles []*catalogmetadata.Bundle - err error + bundles []*catalogmetadata.Bundle + channels []*catalogmetadata.Channel + packages []*catalogmetadata.Package + err error } -func NewFakeCatalogClient(b []*catalogmetadata.Bundle) FakeCatalogClient { +func NewFakeCatalogClient(b []*catalogmetadata.Bundle, c []*catalogmetadata.Channel, p []*catalogmetadata.Package) FakeCatalogClient { return FakeCatalogClient{ - bundles: b, + bundles: b, + channels: c, + packages: p, } } @@ -28,5 +32,5 @@ func (c *FakeCatalogClient) CatalogContents(_ context.Context) (*client.Contents if c.err != nil { return nil, c.err } - return &client.Contents{Bundles: c.bundles}, nil + return &client.Contents{Bundles: c.bundles, Channels: c.channels, Packages: c.packages}, nil }