Added user and password input they are now directly fields on the connection configuration and no longer a seperate entity.

Because as long as I have no clear plan for how to manage multiple users per server it is better to keep it simple.

Also some other tweaks to make edits appear in the list.
This commit is contained in:
eelke 2025-08-31 19:34:27 +02:00
parent 747358297b
commit 18e737e865
11 changed files with 90 additions and 77 deletions

View file

@ -13,7 +13,7 @@ public class EditServerConfigurationWindowTests
public void Parse_and_Generate_roundtrip_via_UI_bindings()
{
// Arrange: initialize Avalonia headless app once for the test
var vm = new EditServerConfigurationViewModel(new ServerConfigurationEntity());
var vm = new EditServerConfigurationViewModel(new(new ServerConfigurationEntity()));
var window = new EditServerConfigurationWindow(vm);
// Act: set an URL input, auto mode, then parse
@ -25,8 +25,8 @@ public class EditServerConfigurationWindowTests
Assert.Equal("localhost", vm.Configuration.Host);
Assert.Equal((ushort)5433, vm.Configuration.Port);
Assert.Equal("mydb", vm.Configuration.InitialDatabase);
Assert.Equal("user", vm.Configuration.User.Name);
Assert.Equal("pass", vm.Configuration.User.Password);
Assert.Equal("user", vm.Configuration.UserName);
Assert.Equal("pass", vm.Configuration.Password);
Assert.Equal(Npgsql.SslMode.Require, vm.Configuration.DefaultSslMode);
// Generate back as libpq and validate
@ -46,7 +46,7 @@ public class EditServerConfigurationWindowTests
[AvaloniaFact]
public void Forced_format_overrides_auto_detection()
{
var vm = new EditServerConfigurationViewModel(new ServerConfigurationEntity());
var vm = new EditServerConfigurationViewModel(new(new ServerConfigurationEntity()));
// Use a string with quoted values that libpq would struggle with due to incorrect quoting
vm.InputConnectionString = "Host=\"server with spaces\";Username=\"bob\";Password=\"secret\";Database=\"db1\"";
@ -63,13 +63,13 @@ public class EditServerConfigurationWindowTests
vm.ParseConnectionStringCommand.Execute().Subscribe();
Assert.Equal("server with spaces", vm.Configuration.Host);
Assert.Equal("db1", vm.Configuration.InitialDatabase);
Assert.Equal("bob", vm.Configuration.User.Name);
Assert.Equal("bob", vm.Configuration.UserName);
}
[AvaloniaFact]
public void Parse_Npgsql_with_inline_host_port_updates_all_fields()
{
var vm = new EditServerConfigurationViewModel(new ServerConfigurationEntity());
var vm = new EditServerConfigurationViewModel(new(new ServerConfigurationEntity()));
vm.InputConnectionString = "Host=host.docker.internal:5432;Database=kms_quartz;Username=postgres;Password=admin;Trust Server Certificate=true";
vm.ForcedFormat = EditServerConfigurationViewModel.ForcedFormatOption.Auto;
vm.ParseConnectionStringCommand.Execute().Subscribe();
@ -77,7 +77,7 @@ public class EditServerConfigurationWindowTests
Assert.Equal("host.docker.internal", vm.Configuration.Host);
Assert.Equal((ushort)5432, vm.Configuration.Port);
Assert.Equal("kms_quartz", vm.Configuration.InitialDatabase);
Assert.Equal("postgres", vm.Configuration.User.Name);
Assert.Equal("admin", vm.Configuration.User.Password);
Assert.Equal("postgres", vm.Configuration.UserName);
Assert.Equal("admin", vm.Configuration.Password);
}
}