Oeffentliche Rueckwaerts-Quelle: Reverse-Lookup gegen dasoertliche.de (inoffiziell, ToS-Risiko dokumentiert)

This commit is contained in:
dimedtec 2026-09-07 00:07:14 +02:00
parent 5f7edf13f5
commit c4b0148121
5 changed files with 118 additions and 47 deletions

View file

@ -0,0 +1,49 @@
using Anrufmonitor.Contacts;
using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.Options;
using Xunit;
namespace Anrufmonitor.Tests;
/// <summary>
/// Integrationstest gegen die echte dasoertliche.de-Seite (kein Mock) - stellt sicher, dass
/// die HTML-Extraktion (siehe PublicDirectoryLookupProvider) noch funktioniert. Nutzt die
/// oeffentlich bekannte, garantiert gelistete Nummer der Stadtverwaltung Frankfurt.
/// Faellt dieser Test irgendwann aus, hat sich vermutlich die Seitenstruktur geaendert.
/// </summary>
public class PublicDirectoryLookupProviderTests
{
[Fact]
public async Task LookupAsync_FindsKnownPublicEntry()
{
var options = Options.Create(new ContactsOptions
{
PublicDirectory = new PublicDirectoryOptions { Enabled = true, TimeoutMilliseconds = 5000 },
});
using var httpClient = new HttpClient();
var provider = new PublicDirectoryLookupProvider(options, httpClient, NullLogger<PublicDirectoryLookupProvider>.Instance);
var result = await provider.LookupAsync("4969212 01".Replace(" ", ""), CancellationToken.None);
Assert.NotNull(result);
Assert.Contains("Frankfurt", result!.DisplayName, StringComparison.OrdinalIgnoreCase);
}
[Fact]
public async Task LookupAsync_UnknownNumber_ReturnsNull()
{
var options = Options.Create(new ContactsOptions
{
PublicDirectory = new PublicDirectoryOptions { Enabled = true, TimeoutMilliseconds = 5000 },
});
using var httpClient = new HttpClient();
var provider = new PublicDirectoryLookupProvider(options, httpClient, NullLogger<PublicDirectoryLookupProvider>.Instance);
// Ungueltige/nicht existierende Nummer
var result = await provider.LookupAsync("491511234567", CancellationToken.None);
Assert.Null(result);
}
}