debian-forge-composer/internal/osbuild/files_input_test.go
2022-07-14 16:54:00 +02:00

101 lines
2.4 KiB
Go

package osbuild
import (
"bytes"
"encoding/json"
"fmt"
"reflect"
"testing"
"github.com/stretchr/testify/assert"
)
func TestNewFilesInputs(t *testing.T) {
inputFilename := "image.raw"
pipeline := "os"
expectedInput := &FilesInputs{
File: &FilesInput{
inputCommon: inputCommon{
Type: InputTypeFiles,
Origin: InputOriginPipeline,
},
References: &FilesInputReferencesPipeline{
fmt.Sprintf("name:%s", pipeline): FileReference{File: inputFilename},
},
},
}
actualInput := NewFilesInputs(NewFilesInputReferencesPipeline(pipeline, inputFilename))
assert.Equal(t, expectedInput, actualInput)
}
func TestFilesInput_UnmarshalJSON(t *testing.T) {
type fields struct {
Type string
Origin string
References FilesInputReferences
}
type args struct {
data []byte
}
tests := []struct {
name string
fields fields
args args
wantErr bool
}{
{
name: "pipeline-origin",
fields: fields{
Type: InputTypeFiles,
Origin: InputOriginPipeline,
References: NewFilesInputReferencesPipeline("os", "image.raw"),
},
args: args{
data: []byte(`{"type":"org.osbuild.files","origin":"org.osbuild.pipeline","references":{"name:os":{"file":"image.raw"}}}`),
},
},
{
name: "unknown-origin",
fields: fields{
Type: InputTypeFiles,
Origin: InputOriginSource,
References: nil,
},
wantErr: true,
},
}
for idx, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
input := &FilesInput{
inputCommon: inputCommon{
Type: tt.fields.Type,
Origin: tt.fields.Origin,
},
References: tt.fields.References,
}
var gotInput FilesInput
if err := json.Unmarshal(tt.args.data, &gotInput); (err != nil) != tt.wantErr {
println("data: ", string(tt.args.data))
t.Errorf("FilesInput.UnmarshalJSON() error = %v, wantErr %v [idx: %d]", err, tt.wantErr, idx)
}
if tt.wantErr {
return
}
gotBytes, err := json.Marshal(input)
if err != nil {
t.Errorf("Could not marshal FilesInput: %v", err)
}
if !bytes.Equal(gotBytes, tt.args.data) {
t.Errorf("Expected `%v`, got `%v` [idx: %d]", string(tt.args.data), string(gotBytes), idx)
}
if !reflect.DeepEqual(&gotInput, input) {
t.Errorf("got {%v, %v, %v}, expected {%v, %v, %v} [%d]", gotInput.Type, gotInput.Origin, gotInput.References, input.Type, input.Origin, input.References, idx)
}
})
}
}