Skip to content

Commit d7d5091

Browse files
add tests to increase test coverage
Signed-off-by: Rashmi Gottipati <rgottipa@redhat.com>
1 parent 8644489 commit d7d5091

2 files changed

Lines changed: 98 additions & 0 deletions

File tree

internal/operator-controller/bundleutil/bundle_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -290,3 +290,52 @@ func TestMetadataFor(t *testing.T) {
290290
})
291291
})
292292
}
293+
294+
func TestGetVersionAndRelease_Errors(t *testing.T) {
295+
t.Run("invalid JSON for release field detection", func(t *testing.T) {
296+
// Enable gate for this test
297+
prevEnabled := features.OperatorControllerFeatureGate.Enabled(features.BundleReleaseSupport)
298+
require.NoError(t, features.OperatorControllerFeatureGate.Set("BundleReleaseSupport=true"))
299+
t.Cleanup(func() {
300+
require.NoError(t, features.OperatorControllerFeatureGate.Set(fmt.Sprintf("BundleReleaseSupport=%t", prevEnabled)))
301+
})
302+
303+
// Malformed JSON that can't be unmarshalled for release detection
304+
bundle := declcfg.Bundle{
305+
Name: "test-bundle",
306+
Properties: []property.Property{
307+
{
308+
Type: property.TypePackage,
309+
Value: json.RawMessage(`{"version": "1.0.0", "release": invalid}`),
310+
},
311+
},
312+
}
313+
314+
_, err := bundleutil.GetVersionAndRelease(bundle)
315+
require.Error(t, err)
316+
require.Contains(t, err.Error(), "error unmarshalling package")
317+
})
318+
319+
t.Run("invalid version in explicit release path", func(t *testing.T) {
320+
// Enable gate for this test
321+
prevEnabled := features.OperatorControllerFeatureGate.Enabled(features.BundleReleaseSupport)
322+
require.NoError(t, features.OperatorControllerFeatureGate.Set("BundleReleaseSupport=true"))
323+
t.Cleanup(func() {
324+
require.NoError(t, features.OperatorControllerFeatureGate.Set(fmt.Sprintf("BundleReleaseSupport=%t", prevEnabled)))
325+
})
326+
327+
bundle := declcfg.Bundle{
328+
Name: "test-bundle",
329+
Properties: []property.Property{
330+
{
331+
Type: property.TypePackage,
332+
Value: json.RawMessage(`{"version": "not-a-version", "release": "1"}`),
333+
},
334+
},
335+
}
336+
337+
_, err := bundleutil.GetVersionAndRelease(bundle)
338+
require.Error(t, err)
339+
require.Contains(t, err.Error(), "error parsing version")
340+
})
341+
}

internal/operator-controller/catalogmetadata/filter/successors_test.go

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,3 +272,52 @@ func TestLegacySuccessor(t *testing.T) {
272272
assert.True(t, f(b5))
273273
assert.False(t, f(emptyBundle))
274274
}
275+
276+
func stringPtr(s string) *string {
277+
return &s
278+
}
279+
280+
func TestParseInstalledBundleVersionRelease_Errors(t *testing.T) {
281+
t.Run("invalid version - legacy format", func(t *testing.T) {
282+
installedBundle := ocv1.BundleMetadata{
283+
Name: "test",
284+
Version: "invalid-version",
285+
}
286+
_, err := parseInstalledBundleVersionRelease(installedBundle)
287+
require.Error(t, err)
288+
require.Contains(t, err.Error(), "failed to get version and release")
289+
})
290+
291+
t.Run("invalid version - explicit release format", func(t *testing.T) {
292+
installedBundle := ocv1.BundleMetadata{
293+
Name: "test",
294+
Version: "invalid-version",
295+
Release: stringPtr("1"),
296+
}
297+
_, err := parseInstalledBundleVersionRelease(installedBundle)
298+
require.Error(t, err)
299+
require.Contains(t, err.Error(), "failed to parse installed bundle version")
300+
})
301+
302+
t.Run("invalid release - explicit release format", func(t *testing.T) {
303+
installedBundle := ocv1.BundleMetadata{
304+
Name: "test",
305+
Version: "1.0.0",
306+
Release: stringPtr("001"),
307+
}
308+
_, err := parseInstalledBundleVersionRelease(installedBundle)
309+
require.Error(t, err)
310+
require.Contains(t, err.Error(), "failed to parse installed bundle release")
311+
})
312+
}
313+
314+
func TestSuccessorsOf_Errors(t *testing.T) {
315+
t.Run("invalid installed bundle version", func(t *testing.T) {
316+
installedBundle := ocv1.BundleMetadata{
317+
Name: "test",
318+
Version: "invalid",
319+
}
320+
_, err := SuccessorsOf(installedBundle)
321+
require.Error(t, err)
322+
})
323+
}

0 commit comments

Comments
 (0)