Untis API Integration

This commit is contained in:
2026-08-24 21:52:00 +02:00
parent 5841d96c5b
commit 0f10f754d0
26 changed files with 1237 additions and 58 deletions
@@ -84,6 +84,49 @@ public sealed class WebUntisClientTests
await client.DisposeAsync();
}
[Fact]
public async Task VollstaendigeLoginUrl_TrenntRegionalenServerUndSchulkennung()
{
var handler = new QueueHandler(
Json("{\"result\":{\"sessionId\":\"s\"}}"),
Json("{\"result\":[{\"id\":1,\"name\":\"2026/27\",\"startDate\":20260801,\"endDate\":20270731}]}"),
Json("{\"result\":{}}"));
var client = new WebUntisClient(new HttpClient(handler), Options.Create(new WebUntisOptions
{
School = "https://arche.webuntis.com/WebUntis/?school=bk-ostvest#/basic/login",
Username = "api-user",
Password = "secret",
}));
await client.GetSchoolYearsAsync(CancellationToken.None);
Assert.StartsWith("https://arche.webuntis.com/WebUntis/jsonrpc.do", handler.Requests[0].Uri);
Assert.Contains("school=bk-ostvest", handler.Requests[0].Uri);
await client.DisposeAsync();
}
[Fact]
public async Task VollstaendigeServerUrl_WirdOhnePfadVerwendet()
{
var handler = new QueueHandler(
Json("{\"result\":{\"sessionId\":\"s\"}}"),
Json("{\"result\":[{\"id\":1,\"name\":\"2026/27\",\"startDate\":20260801,\"endDate\":20270731}]}"),
Json("{\"result\":{}}"));
var client = new WebUntisClient(new HttpClient(handler), Options.Create(new WebUntisOptions
{
School = "bk-ostvest",
Host = "https://arche.webuntis.com/WebUntis/?school=bk-ostvest#/basic/login",
Username = "api-user",
Password = "secret",
}));
await client.GetSchoolYearsAsync(CancellationToken.None);
Assert.StartsWith("https://arche.webuntis.com/WebUntis/jsonrpc.do", handler.Requests[0].Uri);
Assert.Contains("school=bk-ostvest", handler.Requests[0].Uri);
await client.DisposeAsync();
}
[Fact]
public async Task FehlzeitenUndKlassenbuch_WerdenNachSchuelerAbgerufenUndTypisiert()
{