From dce3e1de9edf7a91fa86923d0f869ae24d0d33de Mon Sep 17 00:00:00 2001 From: Achilleas Koutsou Date: Tue, 22 Jun 2021 14:14:22 +0200 Subject: [PATCH] distro: test manifest version detection --- internal/distro/distro_test.go | 80 ++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/internal/distro/distro_test.go b/internal/distro/distro_test.go index c94003912..f2dcdcb35 100644 --- a/internal/distro/distro_test.go +++ b/internal/distro/distro_test.go @@ -3,8 +3,10 @@ package distro_test import ( "testing" + "github.com/osbuild/osbuild-composer/internal/distro" "github.com/osbuild/osbuild-composer/internal/distro/distro_test_common" "github.com/osbuild/osbuild-composer/internal/distroregistry" + "github.com/stretchr/testify/require" ) func TestDistro_Manifest(t *testing.T) { @@ -16,3 +18,81 @@ func TestDistro_Manifest(t *testing.T) { distroregistry.NewDefault(), ) } + +var ( + v1manifests = []string{ + `{}`, + ` +{ + "sources": { + "org.osbuild.files": { + "urls": {} + } + }, + "pipeline": { + "build": { + "pipeline": { + "stages": [] + }, + "runner": "org.osbuild.rhel84" + }, + "stages": [], + "assembler": { + "name": "org.osbuild.qemu", + "options": {} + } + } +}`, + } + + v2manifests = []string{ + `{"version": "2"}`, + ` +{ + "version": "2", + "pipelines": [ + { + "name": "build", + "runner": "org.osbuild.rhel84", + "stages": [] + } + ], + "sources": { + "org.osbuild.curl": { + "items": {} + } + } +}`, + } +) + +func TestDistro_Version(t *testing.T) { + require := require.New(t) + expectedVersion := "1" + for idx, rawManifest := range v1manifests { + manifest := distro.Manifest(rawManifest) + detectedVersion, err := manifest.Version() + require.NoError(err, "Could not detect Manifest version for %d: %v", idx, err) + require.Equal(expectedVersion, detectedVersion, "in manifest %d", idx) + } + + expectedVersion = "2" + for idx, rawManifest := range v2manifests { + manifest := distro.Manifest(rawManifest) + detectedVersion, err := manifest.Version() + require.NoError(err, "Could not detect Manifest version for %d: %v", idx, err) + require.Equal(expectedVersion, detectedVersion, "in manifest %d", idx) + } + + { + manifest := distro.Manifest("") + _, err := manifest.Version() + require.Error(err, "Empty manifest did not return an error") + } + + { + manifest := distro.Manifest("{") + _, err := manifest.Version() + require.Error(err, "Invalid manifest did not return an error") + } +}