Blame internal/osbuild1/result_test.go

Packit Service 15f37d
package osbuild1
Packit Service 15f37d
Packit Service 15f37d
import (
Packit Service 15f37d
	"bytes"
Packit Service 15f37d
	"encoding/json"
Packit Service 15f37d
	"testing"
Packit Service 15f37d
Packit Service 15f37d
	"github.com/stretchr/testify/assert"
Packit Service 15f37d
)
Packit Service 15f37d
Packit Service 15f37d
func TestUnmarshal(t *testing.T) {
Packit Service 15f37d
	resultRaw := `{
Packit Service 15f37d
		"success": true,
Packit Service 15f37d
		"build": {
Packit Service 15f37d
		  "success": true,
Packit Service 15f37d
		  "stages": [
Packit Service 15f37d
			{
Packit Service 15f37d
			  "name": "org.osbuild.rpm",
Packit Service 15f37d
			  "id": "9eb0a6f6fd6e2995e107f5bcc6aa3b19643b02ec133bdc8a8ac614860b1bbf2d",
Packit Service 15f37d
			  "success": true,
Packit Service 15f37d
			  "output": "Building...",
Packit Service 15f37d
			  "metadata": {
Packit Service 15f37d
				"packages": [
Packit Service 15f37d
				  {
Packit Service 15f37d
					"name": "libgcc",
Packit Service 15f37d
					"version": "10.0.1",
Packit Service 15f37d
					"release": "0.11.fc32",
Packit Service 15f37d
					"epoch": null,
Packit Service 15f37d
					"arch": "x86_64",
Packit Service 15f37d
					"sigmd5": "84fc907a5047aeebaf8da1642925a417",
Packit Service 15f37d
					"sigpgp": null,
Packit Service 15f37d
					"siggpg": "883f0305005f2310139ec3e4c0f7e257e611023e11009f639c5fe64abaa76224dab3a9f70c2714a84c63bd009d1cc184fb4b428dfcd7c3556f4a5f860cc0187740"
Packit Service 15f37d
				  },
Packit Service 15f37d
				  {
Packit Service 15f37d
					"name": "whois-nls",
Packit Service 15f37d
					"version": "5.5.6",
Packit Service 15f37d
					"release": "1.fc32",
Packit Service 15f37d
					"epoch": null,
Packit Service 15f37d
					"arch": "noarch",
Packit Service 15f37d
					"sigmd5": "f868cd02046630c8ce3a9c48820e2437",
Packit Service 15f37d
					"sigpgp": "89023304000108001d162104963a2beb02009608fe67ea4249fd77499570ff3105025f5a272b000a091049fd77499570ff31ccdb0ffe38b95a55ebf3c021526b3cd4f2358c7e23f7767d1f5ce4b7cccef7b33653c6a96a23022313a818fbaf7abeb41837910f0d3ac15664e02838d5939d38ff459aa0076e248728a032d3ae09ddfaec955f941601081a2e3f9bbd49586fd65c1bc1b31685aeb0405687d1791471eab7359ccf00d5584ddef680e99ebc8a4846316391b9baa68ac8ed8ad696ee16fd625d847f8edd92517df3ea6920a46b77b4f119715a0f619f38835d25e0bd0eb5cfad08cd9c796eace6a2b28f4d3dee552e6068255d9748dc2a1906c951e0ba8aed9922ab24e1f659413a06083f8a0bfea56cfff14bddef23bced449f36bcd369da72f90ddf0512e7b0801ba5a0c8eaa8eb0582c630815e992192042cfb0a7c7239f76219197c2fdf18b6553260c105280806d4f037d7b04bdf3da9fd7e9a207db5c71f7e548f4288928f047c989c4cb9cbb8088eec7bd2fa5c252e693f51a3cfc660f666af6a255a5ca0fd2216d5ccd66cbd9c11afa61067d7f615ec8d0dc0c879b5fe633d8c9443f97285da597e4da8a3993af36f0be06acfa9b8058ec70bbc78b876e4c6c5d2108fb05c15a74ba48a3d7ded697cbc1748c228d77d1e0794a41fd5240fa67c3ed745fe47555a47c3d6163d8ce95fd6c2d0d6fa48f8e5b411e571e442109b1cb200d9a8117ee08bfe645f96aca34f7b7559622bbab75143dcad59f126ae0d319e6668ebba417e725638c4febf2e",
Packit Service 15f37d
					"siggpg": null
Packit Service 15f37d
				  }
Packit Service 15f37d
				]
Packit Service 15f37d
			  }
Packit Service 15f37d
			}
Packit Service 15f37d
		  ]
Packit Service 15f37d
		}
Packit Service 15f37d
	  }`
Packit Service 15f37d
Packit Service 15f37d
	var result Result
Packit Service 15f37d
	err := json.Unmarshal([]byte(resultRaw), &result)
Packit Service 15f37d
	assert.NoError(t, err)
Packit Service 15f37d
Packit Service 15f37d
	assert.Equal(t, result.Build.Stages[0].Name, "org.osbuild.rpm")
Packit Service 15f37d
	metadata, ok := result.Build.Stages[0].Metadata.(*RPMStageMetadata)
Packit Service 15f37d
	assert.True(t, ok)
Packit Service 15f37d
	package1 := metadata.Packages[0]
Packit Service 15f37d
	assert.Equal(t, package1.Name, "libgcc")
Packit Service 15f37d
	assert.Nil(t, package1.Epoch)
Packit Service 15f37d
	assert.Equal(t, package1.Version, "10.0.1")
Packit Service 15f37d
	assert.Equal(t, package1.Release, "0.11.fc32")
Packit Service 15f37d
	assert.Equal(t, package1.Arch, "x86_64")
Packit Service 15f37d
	assert.Equal(t, package1.SigMD5, "84fc907a5047aeebaf8da1642925a417")
Packit Service 15f37d
	assert.Empty(t, package1.SigPGP)
Packit Service 15f37d
	assert.Equal(t, package1.SigGPG, "883f0305005f2310139ec3e4c0f7e257e611023e11009f639c5fe64abaa76224dab3a9f70c2714a84c63bd009d1cc184fb4b428dfcd7c3556f4a5f860cc0187740")
Packit Service 15f37d
Packit Service 15f37d
	package2 := metadata.Packages[1]
Packit Service 15f37d
	assert.Equal(t, package2.SigPGP, "89023304000108001d162104963a2beb02009608fe67ea4249fd77499570ff3105025f5a272b000a091049fd77499570ff31ccdb0ffe38b95a55ebf3c021526b3cd4f2358c7e23f7767d1f5ce4b7cccef7b33653c6a96a23022313a818fbaf7abeb41837910f0d3ac15664e02838d5939d38ff459aa0076e248728a032d3ae09ddfaec955f941601081a2e3f9bbd49586fd65c1bc1b31685aeb0405687d1791471eab7359ccf00d5584ddef680e99ebc8a4846316391b9baa68ac8ed8ad696ee16fd625d847f8edd92517df3ea6920a46b77b4f119715a0f619f38835d25e0bd0eb5cfad08cd9c796eace6a2b28f4d3dee552e6068255d9748dc2a1906c951e0ba8aed9922ab24e1f659413a06083f8a0bfea56cfff14bddef23bced449f36bcd369da72f90ddf0512e7b0801ba5a0c8eaa8eb0582c630815e992192042cfb0a7c7239f76219197c2fdf18b6553260c105280806d4f037d7b04bdf3da9fd7e9a207db5c71f7e548f4288928f047c989c4cb9cbb8088eec7bd2fa5c252e693f51a3cfc660f666af6a255a5ca0fd2216d5ccd66cbd9c11afa61067d7f615ec8d0dc0c879b5fe633d8c9443f97285da597e4da8a3993af36f0be06acfa9b8058ec70bbc78b876e4c6c5d2108fb05c15a74ba48a3d7ded697cbc1748c228d77d1e0794a41fd5240fa67c3ed745fe47555a47c3d6163d8ce95fd6c2d0d6fa48f8e5b411e571e442109b1cb200d9a8117ee08bfe645f96aca34f7b7559622bbab75143dcad59f126ae0d319e6668ebba417e725638c4febf2e")
Packit Service 15f37d
	assert.Empty(t, package2.SigGPG)
Packit Service 15f37d
}
Packit Service 15f37d
Packit Service 217d88
func TestUnmarshalV1Success(t *testing.T) {
Packit Service 217d88
	var result Result
Packit Service 217d88
	err := json.Unmarshal([]byte(v1ResultSuccess), &result)
Packit Service 217d88
	assert.NoError(t, err)
Packit Service 217d88
Packit Service 217d88
	assert.True(t, result.Success)
Packit Service 217d88
Packit Service 217d88
	assert.True(t, result.Build.Success)
Packit Service 217d88
	assert.Len(t, result.Build.Stages, 2)
Packit Service 217d88
	assert.True(t, result.Build.Stages[1].Success)
Packit Service 217d88
	assert.Equal(t, "org.osbuild.rpm", result.Build.Stages[0].Name)
Packit Service 217d88
Packit Service 217d88
	assert.Len(t, result.Stages, 11)
Packit Service 217d88
	assert.True(t, result.Stages[10].Success)
Packit Service 217d88
	assert.Equal(t, result.Stages[0].Name, "org.osbuild.rpm")
Packit Service 217d88
Packit Service 217d88
	assert.True(t, result.Assembler.Success)
Packit Service 217d88
	assert.Equal(t, result.Assembler.Name, "org.osbuild.qemu")
Packit Service 217d88
}
Packit Service 217d88
Packit Service 217d88
func TestUnmarshalV1Failure(t *testing.T) {
Packit Service 217d88
	var result Result
Packit Service 217d88
	err := json.Unmarshal([]byte(v1ResultFailure), &result)
Packit Service 217d88
	assert.NoError(t, err)
Packit Service 217d88
Packit Service 217d88
	assert.False(t, result.Success)
Packit Service 217d88
Packit Service 217d88
	assert.True(t, result.Build.Success)
Packit Service 217d88
	assert.Len(t, result.Build.Stages, 2)
Packit Service 217d88
	assert.True(t, result.Build.Stages[1].Success)
Packit Service 217d88
	assert.Equal(t, "org.osbuild.rpm", result.Build.Stages[0].Name)
Packit Service 217d88
Packit Service 217d88
	assert.Len(t, result.Stages, 9)
Packit Service 217d88
	assert.False(t, result.Stages[8].Success)
Packit Service 217d88
	assert.Equal(t, result.Stages[0].Name, "org.osbuild.rpm")
Packit Service 217d88
Packit Service 217d88
	assert.Nil(t, result.Assembler)
Packit Service 217d88
}
Packit Service 217d88
Packit Service 217d88
func TestUnmarshalV2Success(t *testing.T) {
Packit Service 217d88
	var result Result
Packit Service 217d88
	err := json.Unmarshal([]byte(v2ResultSuccess), &result)
Packit Service 217d88
	assert.NoError(t, err)
Packit Service 217d88
Packit Service 217d88
	assert.True(t, result.Success)
Packit Service 217d88
Packit Service 217d88
	assert.Len(t, result.Stages, 16)
Packit Service 217d88
	assert.True(t, result.Stages[15].Success)
Packit Service 217d88
	assert.NotEmpty(t, result.Stages[0].Name)
Packit Service 217d88
}
Packit Service 217d88
Packit Service 217d88
func TestUnmarshalV2Failure(t *testing.T) {
Packit Service 217d88
	var result Result
Packit Service 217d88
	err := json.Unmarshal([]byte(v2ResultFailure), &result)
Packit Service 217d88
	assert.NoError(t, err)
Packit Service 217d88
Packit Service 217d88
	assert.False(t, result.Success)
Packit Service 217d88
Packit Service 217d88
	assert.Len(t, result.Stages, 7)
Packit Service 217d88
	assert.True(t, result.Stages[5].Success)
Packit Service 217d88
	assert.False(t, result.Stages[6].Success)
Packit Service 217d88
	assert.NotEmpty(t, result.Stages[0].Name)
Packit Service 217d88
}
Packit Service 217d88
Packit Service 15f37d
func TestWriteFull(t *testing.T) {
Packit Service 15f37d
Packit Service 15f37d
	const testOptions = `{"msg": "test"}`
Packit Service 15f37d
Packit Service 15f37d
	dnfStage := StageResult{
Packit Service 15f37d
		Name:    "org.osbuild.rpm",
Packit Service 15f37d
		Options: []byte(testOptions),
Packit Service 15f37d
		Success: true,
Packit Service 15f37d
		Output:  "Finished",
Packit Service 15f37d
		Metadata: RPMStageMetadata{
Packit Service 15f37d
			Packages: []RPMPackageMetadata{
Packit Service 15f37d
				{
Packit Service 15f37d
					Name:    "foobar",
Packit Service 15f37d
					Epoch:   nil,
Packit Service 15f37d
					Version: "1",
Packit Service 15f37d
					Release: "1",
Packit Service 15f37d
					Arch:    "noarch",
Packit Service 15f37d
					SigMD5:  "deadbeef",
Packit Service 15f37d
				},
Packit Service 15f37d
			},
Packit Service 15f37d
		},
Packit Service 15f37d
	}
Packit Service 15f37d
Packit Service 15f37d
	testStage := StageResult{
Packit Service 15f37d
		Name:    "org.osbuild.test",
Packit Service 15f37d
		Options: []byte(testOptions),
Packit Service 15f37d
		Success: true,
Packit Service 15f37d
		Output:  "Finished",
Packit Service 15f37d
	}
Packit Service 15f37d
Packit Service 15f37d
	testBuild := buildResult{
Packit Service 15f37d
		Stages:  []StageResult{testStage},
Packit Service 15f37d
		TreeID:  "treeID",
Packit Service 15f37d
		Success: true,
Packit Service 15f37d
	}
Packit Service 15f37d
Packit Service 15f37d
	testAssembler := rawAssemblerResult{
Packit Service 15f37d
		Name:    "testAssembler",
Packit Service 15f37d
		Options: []byte(testOptions),
Packit Service 15f37d
		Success: true,
Packit Service 15f37d
		Output:  "Done",
Packit Service 15f37d
	}
Packit Service 15f37d
Packit Service 15f37d
	testComposeResult := Result{
Packit Service 15f37d
		TreeID:    "TreeID",
Packit Service 15f37d
		OutputID:  "OutputID",
Packit Service 15f37d
		Build:     &testBuild,
Packit Service 15f37d
		Stages:    []StageResult{dnfStage},
Packit Service 15f37d
		Assembler: &testAssembler,
Packit Service 15f37d
		Success:   true,
Packit Service 15f37d
	}
Packit Service 15f37d
Packit Service 15f37d
	var b bytes.Buffer
Packit Service 15f37d
	assert.NoError(t, testComposeResult.Write(&b))
Packit Service 15f37d
	expectedMessage :=
Packit Service 15f37d
		`Build pipeline:
Packit Service 15f37d
Stage org.osbuild.test
Packit Service 15f37d
{
Packit Service 15f37d
  "msg": "test"
Packit Service 15f37d
}
Packit Service 15f37d
Packit Service 15f37d
Output:
Packit Service 15f37d
Finished
Packit Service 15f37d
Stages:
Packit Service 15f37d
Stage: org.osbuild.rpm
Packit Service 15f37d
{
Packit Service 15f37d
  "msg": "test"
Packit Service 15f37d
}
Packit Service 15f37d
Packit Service 15f37d
Output:
Packit Service 15f37d
Finished
Packit Service 15f37d
Assembler testAssembler:
Packit Service 15f37d
{
Packit Service 15f37d
  "msg": "test"
Packit Service 15f37d
}
Packit Service 15f37d
Packit Service 15f37d
Output:
Packit Service 15f37d
Done
Packit Service 15f37d
`
Packit Service 15f37d
	assert.Equal(t, expectedMessage, b.String())
Packit Service 15f37d
}
Packit Service 15f37d
Packit Service 15f37d
func TestWriteEmpty(t *testing.T) {
Packit Service 15f37d
Packit Service 15f37d
	testComposeResult := Result{}
Packit Service 15f37d
Packit Service 15f37d
	var b bytes.Buffer
Packit Service 15f37d
	assert.NoError(t, testComposeResult.Write(&b))
Packit Service 15f37d
	assert.Equal(t, "The compose result is empty.\n", b.String())
Packit Service 15f37d
Packit Service 15f37d
}