Blame internal/osbuild2/oci_archive_stage_test.go

Packit Service 15f37d
package osbuild2
Packit Service 15f37d
Packit Service 15f37d
import (
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 TestOCIArchiveStage(t *testing.T) {
Packit Service 15f37d
	expectedStage := &Stage{
Packit Service 15f37d
		Type:    "org.osbuild.oci-archive",
Packit Service 15f37d
		Options: &OCIArchiveStageOptions{},
Packit Service 15f37d
		Inputs:  &OCIArchiveStageInputs{},
Packit Service 15f37d
	}
Packit Service 15f37d
	actualStage := NewOCIArchiveStage(&OCIArchiveStageOptions{}, &OCIArchiveStageInputs{})
Packit Service 15f37d
	assert.Equal(t, expectedStage, actualStage)
Packit Service 15f37d
}
Packit Service 15f37d
Packit Service 15f37d
func TestOCIArchiveInputs(t *testing.T) {
Packit Service 15f37d
	exp := `{
Packit Service 15f37d
		"base": {
Packit Service 15f37d
			"type": "org.osbuild.oci-archive",
Packit Service 15f37d
			"origin":"org.osbuild.pipeline",
Packit Service 15f37d
			"references": ["name:container-tree"]
Packit Service 15f37d
		},
Packit Service 15f37d
		"layer.1": {
Packit Service 15f37d
			"type": "org.osbuild.tree",
Packit Service 15f37d
			"origin": "org.osbuild.pipeline",
Packit Service 15f37d
			"references": ["name:container-ostree"]
Packit Service 15f37d
		},
Packit Service 15f37d
		"layer.2": {
Packit Service 15f37d
			"type": "org.osbuild.tree",
Packit Service 15f37d
			"origin": "org.osbuild.pipeline",
Packit Service 15f37d
			"references": ["name:container-ostree2"]
Packit Service 15f37d
		}
Packit Service 15f37d
	}`
Packit Service 15f37d
	inputs := new(OCIArchiveStageInputs)
Packit Service 15f37d
	base := &OCIArchiveStageInput{
Packit Service 15f37d
		References: []string{
Packit Service 15f37d
			"name:container-tree",
Packit Service 15f37d
		},
Packit Service 15f37d
	}
Packit Service 15f37d
	base.Type = "org.osbuild.oci-archive"
Packit Service 15f37d
	base.Origin = "org.osbuild.pipeline"
Packit Service 15f37d
Packit Service 15f37d
	layer1 := OCIArchiveStageInput{
Packit Service 15f37d
		References: []string{
Packit Service 15f37d
			"name:container-ostree",
Packit Service 15f37d
		},
Packit Service 15f37d
	}
Packit Service 15f37d
	layer1.Type = "org.osbuild.tree"
Packit Service 15f37d
	layer1.Origin = "org.osbuild.pipeline"
Packit Service 15f37d
	layer2 := OCIArchiveStageInput{
Packit Service 15f37d
		References: []string{
Packit Service 15f37d
			"name:container-ostree2",
Packit Service 15f37d
		},
Packit Service 15f37d
	}
Packit Service 15f37d
	layer2.Type = "org.osbuild.tree"
Packit Service 15f37d
	layer2.Origin = "org.osbuild.pipeline"
Packit Service 15f37d
Packit Service 15f37d
	inputs.Base = base
Packit Service 15f37d
	inputs.Layers = []OCIArchiveStageInput{layer1, layer2}
Packit Service 15f37d
Packit Service 15f37d
	data, err := json.Marshal(inputs)
Packit Service 15f37d
	assert.NoError(t, err)
Packit Service 15f37d
	assert.JSONEq(t, exp, string(data))
Packit Service 15f37d
Packit Service 15f37d
	inputsRead := new(OCIArchiveStageInputs)
Packit Service 15f37d
	err = json.Unmarshal([]byte(exp), inputsRead)
Packit Service 15f37d
	assert.NoError(t, err)
Packit Service 15f37d
	assert.Equal(t, inputs, inputsRead)
Packit Service 15f37d
}
Packit Service 15f37d
Packit Service 15f37d
func TestOCIArchiveInputsErrors(t *testing.T) {
Packit Service 15f37d
	noBase := `{
Packit Service 15f37d
		"layer.10": {
Packit Service 15f37d
			"type": "org.osbuild.tree",
Packit Service 15f37d
			"origin": "org.osbuild.pipeline",
Packit Service 15f37d
			"references": ["name:container-ostree"]
Packit Service 15f37d
		},
Packit Service 15f37d
		"layer.2": {
Packit Service 15f37d
			"type": "org.osbuild.tree",
Packit Service 15f37d
			"origin": "org.osbuild.pipeline",
Packit Service 15f37d
			"references": ["name:container-ostree2"]
Packit Service 15f37d
		}
Packit Service 15f37d
	}`
Packit Service 15f37d
Packit Service 15f37d
	inputsRead := new(OCIArchiveStageInputs)
Packit Service 15f37d
	assert.Error(t, json.Unmarshal([]byte(noBase), inputsRead))
Packit Service 15f37d
Packit Service 15f37d
	invalidKey := `{
Packit Service 15f37d
		"base": {
Packit Service 15f37d
			"type": "org.osbuild.oci-archive",
Packit Service 15f37d
			"origin":"org.osbuild.pipeline",
Packit Service 15f37d
			"references": ["name:container-tree"]
Packit Service 15f37d
		},
Packit Service 15f37d
		"not-a-layer": {
Packit Service 15f37d
			"type": "org.osbuild.tree",
Packit Service 15f37d
			"origin": "org.osbuild.pipeline",
Packit Service 15f37d
			"references": ["name:container-ostree2"]
Packit Service 15f37d
		}
Packit Service 15f37d
	}`
Packit Service 15f37d
	assert.Error(t, json.Unmarshal([]byte(invalidKey), inputsRead))
Packit Service 15f37d
}