diff --git a/server/tests/Flaro.Api.Tests/StreamTests.cs b/server/tests/Flaro.Api.Tests/StreamTests.cs
index 6f3e298..93986f0 100644
--- a/server/tests/Flaro.Api.Tests/StreamTests.cs
+++ b/server/tests/Flaro.Api.Tests/StreamTests.cs
@@ -558,4 +558,40 @@ public class StreamTests
Assume.That(strom.Method, Is.EqualTo("direct"));
Assert.That(strom.MasterUrl, Is.Null);
}
+
+ /// Was die App bestellt, lässt sich auch abholen.
+ ///
+ ///
+ /// Die App schickt keine Codec-Listen — dann nimmt der Server
+ /// Apples Profil, und das ist hier richtig: dieses Gerät ist Apple. Der
+ /// Weg danach ist aber ein anderer als der des Browsers, und genau dort
+ /// kam eine 500 heraus. Diese Prüfung geht ihn ganz ab: bestellen,
+ /// Hauptliste holen, Medienliste holen, erstes Stück holen.
+ ///
+ [Test]
+ public async Task Der_Weg_der_App_fuehrt_bis_zum_ersten_Stueck()
+ {
+ FilmMitUntertitel("Wie die App (2020)");
+ var (client, datei) = await Eingelesen();
+
+ var strom = await Strom(client, datei.Id, new StreamRequest(
+ Containers: null, VideoCodecs: null, AudioCodecs: null, StartSeconds: 0));
+
+ Assert.That(strom.MasterUrl, Is.Not.Null, "Eine MKV ist für Apple nichts zum Durchreichen.");
+
+ var haupt = await client.GetAsync(strom.MasterUrl!);
+ Assert.That(haupt.StatusCode, Is.EqualTo(HttpStatusCode.OK),
+ await haupt.Content.ReadAsStringAsync());
+
+ var medien = await client.GetAsync(strom.Url);
+ Assert.That(medien.StatusCode, Is.EqualTo(HttpStatusCode.OK),
+ await medien.Content.ReadAsStringAsync());
+
+ var liste = await medien.Content.ReadAsStringAsync();
+ var stueck = liste.Split('\n').FirstOrDefault(z => z.Length > 0 && !z.StartsWith('#'));
+ Assert.That(stueck, Is.Not.Null, liste);
+
+ var teil = await client.GetAsync($"/api/v1/stream/{strom.SessionId}/{stueck}");
+ Assert.That(teil.StatusCode, Is.EqualTo(HttpStatusCode.OK));
+ }
}