fix(worker): Base-URL ohne Schema laesst die Ticket-Anbindung scheitern
Ein blanker Hostname ist eine relative URI; HttpClient lehnt sie mit InvalidOperationException ab. Die lief an dem zu engen catch-Filter vorbei, flog roh aus dem Hub und wurde von TryInvokeAsync zu null verschluckt - die UI meldete "Worker not reachable", obwohl der Worker lief und die Ursache eine Eingabe war. - TicketSystemConfig ergaenzt fehlendes http:// - BandelTicketClient uebersetzt jede Transport-Exception in eine lesbare TicketApiException - TestTicketConnection faengt alles und antwortet mit dem Grund - GetTicketSettings liefert die effektive URL, damit die Ergaenzung sichtbar ist
This commit is contained in:
@@ -36,6 +36,23 @@ public sealed class TicketSystemConfigTests : IDisposable
|
||||
public void Base_url_trailing_slash_is_trimmed()
|
||||
=> Assert.Equal("http://api.local", Make("http://api.local/", "tsp_x").BaseUrl);
|
||||
|
||||
// Ein blanker Hostname ist das, was man in ein Feld namens "API base URL" tippt. Ohne Schema
|
||||
// ist das eine RELATIVE URI, und HttpClient lehnt sie mit InvalidOperationException ab —
|
||||
// genau daran ist die erste Einrichtung gescheitert.
|
||||
[Theory]
|
||||
[InlineData("bandelapis.fb-tuning.local", "http://bandelapis.fb-tuning.local")]
|
||||
[InlineData("bandelapis.fb-tuning.local/", "http://bandelapis.fb-tuning.local")]
|
||||
[InlineData(" bandelapis.fb-tuning.local ", "http://bandelapis.fb-tuning.local")]
|
||||
[InlineData("api.local:8080", "http://api.local:8080")]
|
||||
public void Missing_scheme_defaults_to_http(string entered, string expected)
|
||||
=> Assert.Equal(expected, Make(entered, "tsp_x").BaseUrl);
|
||||
|
||||
[Theory]
|
||||
[InlineData("https://api.local")]
|
||||
[InlineData("http://api.local")]
|
||||
public void Explicit_scheme_is_left_alone(string entered)
|
||||
=> Assert.Equal(entered, Make(entered, "tsp_x").BaseUrl);
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (Directory.Exists(_dir)) Directory.Delete(_dir, recursive: true);
|
||||
|
||||
Reference in New Issue
Block a user