Skip to content

Commit 7f923a6

Browse files
committed
test: cover nested object readback preservation
Refs: #1294
1 parent 29be0f7 commit 7f923a6

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

internal/generated/conversion_test.go

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -868,3 +868,80 @@ func TestDomainDeviceListFromXMLPreservesDiskOrderByTargetDev(t *testing.T) {
868868
t.Fatalf("unexpected second disk volume: %s/%s", secondVolume.Pool.ValueString(), secondVolume.Volume.ValueString())
869869
}
870870
}
871+
872+
func TestDomainSerialFromXMLPreservesPlannedAliasWhenXMLAliasIsOmitted(t *testing.T) {
873+
ctx := context.Background()
874+
875+
alias := DomainAliasModel{
876+
Name: types.StringValue("serial0"),
877+
}
878+
aliasObject, diags := types.ObjectValueFrom(ctx, DomainAliasAttributeTypes(), alias)
879+
if diags.HasError() {
880+
t.Fatalf("alias ObjectValueFrom failed: %s", diags.Errors()[0].Summary())
881+
}
882+
883+
plan := &DomainSerialModel{
884+
Source: types.ObjectNull(DomainChardevSourceAttributeTypes()),
885+
Protocol: types.ObjectNull(DomainChardevProtocolAttributeTypes()),
886+
Target: types.ObjectNull(DomainSerialTargetAttributeTypes()),
887+
Log: types.ObjectNull(DomainChardevLogAttributeTypes()),
888+
ACPI: types.ObjectNull(DomainDeviceACPIAttributeTypes()),
889+
Alias: aliasObject,
890+
Address: types.ObjectNull(DomainAddressAttributeTypes()),
891+
}
892+
893+
model, err := DomainSerialFromXML(ctx, &libvirtxml.DomainSerial{}, plan)
894+
if err != nil {
895+
t.Fatalf("DomainSerialFromXML failed: %v", err)
896+
}
897+
if model.Alias.IsNull() {
898+
t.Fatal("Alias should be preserved when planned and omitted from XML")
899+
}
900+
901+
var got DomainAliasModel
902+
if diags := model.Alias.As(ctx, &got, basetypes.ObjectAsOptions{}); diags.HasError() {
903+
t.Fatalf("alias As failed: %s", diags.Errors()[0].Summary())
904+
}
905+
if got.Name.IsNull() || got.Name.ValueString() != "serial0" {
906+
t.Fatalf("expected alias name serial0, got %v", got.Name)
907+
}
908+
}
909+
910+
func TestDomainConsoleFromXMLPreservesPlannedAliasWhenXMLAliasIsOmitted(t *testing.T) {
911+
ctx := context.Background()
912+
913+
alias := DomainAliasModel{
914+
Name: types.StringValue("serial0"),
915+
}
916+
aliasObject, diags := types.ObjectValueFrom(ctx, DomainAliasAttributeTypes(), alias)
917+
if diags.HasError() {
918+
t.Fatalf("alias ObjectValueFrom failed: %s", diags.Errors()[0].Summary())
919+
}
920+
921+
plan := &DomainConsoleModel{
922+
TTY: types.StringNull(),
923+
Source: types.ObjectNull(DomainChardevSourceAttributeTypes()),
924+
Protocol: types.ObjectNull(DomainChardevProtocolAttributeTypes()),
925+
Target: types.ObjectNull(DomainConsoleTargetAttributeTypes()),
926+
Log: types.ObjectNull(DomainChardevLogAttributeTypes()),
927+
ACPI: types.ObjectNull(DomainDeviceACPIAttributeTypes()),
928+
Alias: aliasObject,
929+
Address: types.ObjectNull(DomainAddressAttributeTypes()),
930+
}
931+
932+
model, err := DomainConsoleFromXML(ctx, &libvirtxml.DomainConsole{}, plan)
933+
if err != nil {
934+
t.Fatalf("DomainConsoleFromXML failed: %v", err)
935+
}
936+
if model.Alias.IsNull() {
937+
t.Fatal("Alias should be preserved when planned and omitted from XML")
938+
}
939+
940+
var got DomainAliasModel
941+
if diags := model.Alias.As(ctx, &got, basetypes.ObjectAsOptions{}); diags.HasError() {
942+
t.Fatalf("alias As failed: %s", diags.Errors()[0].Summary())
943+
}
944+
if got.Name.IsNull() || got.Name.ValueString() != "serial0" {
945+
t.Fatalf("expected alias name serial0, got %v", got.Name)
946+
}
947+
}

0 commit comments

Comments
 (0)