using System.Reflection; using JobTrackerApi.Controllers; using JobTrackerApi.Services; using Xunit; namespace JobTrackerApi.Tests; public sealed class OwnershipGuardTests { [Fact] public void Attachments_controller_has_owned_attachment_lookup_helper() { var method = typeof(AttachmentsController).GetMethod("FindOwnedAttachmentAsync", BindingFlags.NonPublic | BindingFlags.Instance); Assert.NotNull(method); } [Fact] public void Correspondence_controller_has_owned_message_lookup_helper() { var method = typeof(CorrespondenceController).GetMethod("FindOwnedMessageAsync", BindingFlags.NonPublic | BindingFlags.Instance); Assert.NotNull(method); } [Fact] public void Summarizer_service_uses_sha256_cache_key_builder() { var method = typeof(SummarizerService).GetMethod("BuildCacheKey", BindingFlags.NonPublic | BindingFlags.Static); Assert.NotNull(method); var first = (string)method!.Invoke(null, new object[] { "example text", 150, 30 })!; var second = (string)method.Invoke(null, new object[] { "example text", 150, 30 })!; var different = (string)method.Invoke(null, new object[] { "different text", 150, 30 })!; Assert.Equal(first, second); Assert.StartsWith("summ:", first); Assert.NotEqual(first, different); } }