|
Packit Service |
4d2de5 |
package osbuild
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
import (
|
|
Packit Service |
4d2de5 |
"encoding/json"
|
|
Packit Service |
4d2de5 |
"testing"
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
"github.com/google/uuid"
|
|
Packit Service |
4d2de5 |
"github.com/stretchr/testify/assert"
|
|
Packit Service |
4d2de5 |
)
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestAssembler_UnmarshalJSON(t *testing.T) {
|
|
Packit Service |
4d2de5 |
tests := []struct {
|
|
Packit Service |
4d2de5 |
name string
|
|
Packit Service |
4d2de5 |
assembler Assembler
|
|
Packit Service |
4d2de5 |
data []byte
|
|
Packit Service |
4d2de5 |
errorExpected bool
|
|
Packit Service |
4d2de5 |
}{
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
// invalid JSON - note the missing brace at the end of the string
|
|
Packit Service |
4d2de5 |
name: "invalid json",
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.tar","options":{"filename":""}`),
|
|
Packit Service |
4d2de5 |
errorExpected: true,
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
// valid JSON, but with an unknown assembler (org.osbuild.foo)
|
|
Packit Service |
4d2de5 |
name: "unknown assembler",
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.foo","options":{"bar":null}}`),
|
|
Packit Service |
4d2de5 |
errorExpected: true,
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "missing options",
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.rawfs"`),
|
|
Packit Service |
4d2de5 |
errorExpected: true,
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "missing name",
|
|
Packit Service |
4d2de5 |
data: []byte(`{"options":{"bar":null}}`),
|
|
Packit Service |
4d2de5 |
errorExpected: true,
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "qemu assembler empty",
|
|
Packit Service |
4d2de5 |
assembler: Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.qemu",
|
|
Packit Service |
4d2de5 |
Options: &QEMUAssemblerOptions{},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.qemu","options":{"format":"","filename":"","size":0,"ptuuid":"","pttype":"","partitions":null}}`),
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "qemu assembler full",
|
|
Packit Service |
4d2de5 |
assembler: Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.qemu",
|
|
Packit Service |
4d2de5 |
Options: &QEMUAssemblerOptions{
|
|
Packit Service |
4d2de5 |
Format: "qcow2",
|
|
Packit Service |
4d2de5 |
Filename: "disk.qcow2",
|
|
Packit Service |
4d2de5 |
Size: 2147483648,
|
|
Packit Service |
4d2de5 |
PTUUID: "0x14fc63d2",
|
|
Packit Service |
4d2de5 |
PTType: "mbr",
|
|
Packit Service |
4d2de5 |
Partitions: []QEMUPartition{QEMUPartition{
|
|
Packit Service |
4d2de5 |
Start: 2048,
|
|
Packit Service |
4d2de5 |
Bootable: true,
|
|
Packit Service |
4d2de5 |
Filesystem: &QEMUFilesystem{
|
|
Packit Service |
4d2de5 |
Type: "ext4",
|
|
Packit Service |
4d2de5 |
UUID: "76a22bf4-f153-4541-b6c7-0332c0dfaeac",
|
|
Packit Service |
4d2de5 |
Label: "root",
|
|
Packit Service |
4d2de5 |
Mountpoint: "/",
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
}},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.qemu","options":{"format":"qcow2","filename":"disk.qcow2","size":2147483648,"ptuuid":"0x14fc63d2","pttype":"mbr","partitions":[{"start":2048,"bootable":true,"filesystem":{"type":"ext4","uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","label":"root","mountpoint":"/"}}]}}`),
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "tar assembler empty",
|
|
Packit Service |
4d2de5 |
assembler: Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.tar",
|
|
Packit Service |
4d2de5 |
Options: &TarAssemblerOptions{},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.tar","options":{"filename":""}}`),
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "tar assembler full",
|
|
Packit Service |
4d2de5 |
assembler: Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.tar",
|
|
Packit Service |
4d2de5 |
Options: &TarAssemblerOptions{
|
|
Packit Service |
4d2de5 |
Filename: "root.tar.xz",
|
|
Packit Service |
4d2de5 |
Compression: "xz",
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.tar","options":{"filename":"root.tar.xz","compression":"xz"}}`),
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "rawfs assembler empty",
|
|
Packit Service |
4d2de5 |
assembler: Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.rawfs",
|
|
Packit Service |
4d2de5 |
Options: &RawFSAssemblerOptions{},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.rawfs","options":{"filename":"","root_fs_uuid":"00000000-0000-0000-0000-000000000000","size":0}}`),
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "rawfs assembler full",
|
|
Packit Service |
4d2de5 |
assembler: Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.rawfs",
|
|
Packit Service |
4d2de5 |
Options: &RawFSAssemblerOptions{
|
|
Packit Service |
4d2de5 |
Filename: "filesystem.img",
|
|
Packit Service |
4d2de5 |
RootFilesystemUUID: uuid.MustParse("76a22bf4-f153-4541-b6c7-0332c0dfaeac"),
|
|
Packit Service |
4d2de5 |
Size: 2147483648,
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.rawfs","options":{"filename":"filesystem.img","root_fs_uuid":"76a22bf4-f153-4541-b6c7-0332c0dfaeac","size":2147483648}}`),
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
{
|
|
Packit Service |
4d2de5 |
name: "ostree commit assembler",
|
|
Packit Service |
4d2de5 |
assembler: Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.ostree.commit",
|
|
Packit Service |
4d2de5 |
Options: &OSTreeCommitAssemblerOptions{
|
|
Packit Service |
4d2de5 |
Ref: "foo",
|
|
Packit Service |
4d2de5 |
Tar: OSTreeCommitAssemblerTarOptions{
|
|
Packit Service |
4d2de5 |
Filename: "foo.tar",
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
data: []byte(`{"name":"org.osbuild.ostree.commit","options":{"ref":"foo","tar":{"filename":"foo.tar"}}}`),
|
|
Packit Service |
4d2de5 |
},
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
assert := assert.New(t)
|
|
Packit Service |
4d2de5 |
for _, tt := range tests {
|
|
Packit Service |
4d2de5 |
t.Run(tt.name, func(t *testing.T) {
|
|
Packit Service |
4d2de5 |
assembler := &tt.assembler
|
|
Packit Service |
4d2de5 |
var gotAssembler Assembler
|
|
Packit Service |
4d2de5 |
err := gotAssembler.UnmarshalJSON(tt.data)
|
|
Packit Service |
4d2de5 |
if tt.errorExpected {
|
|
Packit Service |
4d2de5 |
assert.NotNil(err)
|
|
Packit Service |
4d2de5 |
return
|
|
Packit Service |
4d2de5 |
} else {
|
|
Packit Service |
4d2de5 |
assert.Nil(err)
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
gotBytes, err := json.Marshal(assembler)
|
|
Packit Service |
4d2de5 |
assert.Nilf(err, "Could not marshal assembler: %v", err)
|
|
Packit Service |
4d2de5 |
assert.Equal(tt.data, gotBytes)
|
|
Packit Service |
4d2de5 |
assert.Equal(&gotAssembler, assembler)
|
|
Packit Service |
4d2de5 |
})
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestNewQEMUAssembler(t *testing.T) {
|
|
Packit Service |
4d2de5 |
options := &QEMUAssemblerOptions{}
|
|
Packit Service |
4d2de5 |
expectedAssembler := &Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.qemu",
|
|
Packit Service |
4d2de5 |
Options: &QEMUAssemblerOptions{},
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
assert.Equal(t, expectedAssembler, NewQEMUAssembler(options))
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestNewTarAssembler(t *testing.T) {
|
|
Packit Service |
4d2de5 |
options := &TarAssemblerOptions{}
|
|
Packit Service |
4d2de5 |
expectedAssembler := &Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.tar",
|
|
Packit Service |
4d2de5 |
Options: &TarAssemblerOptions{},
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
assert.Equal(t, expectedAssembler, NewTarAssembler(options))
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
|
|
Packit Service |
4d2de5 |
func TestNewRawFSAssembler(t *testing.T) {
|
|
Packit Service |
4d2de5 |
options := &RawFSAssemblerOptions{}
|
|
Packit Service |
4d2de5 |
expectedAssembler := &Assembler{
|
|
Packit Service |
4d2de5 |
Name: "org.osbuild.rawfs",
|
|
Packit Service |
4d2de5 |
Options: &RawFSAssemblerOptions{},
|
|
Packit Service |
4d2de5 |
}
|
|
Packit Service |
4d2de5 |
assert.Equal(t, expectedAssembler, NewRawFSAssembler(options))
|
|
Packit Service |
4d2de5 |
}
|