This commit is contained in:
biss committed 2026-07-28 15:41:28 +08:00
1 parent a61dacff1a
commit 2dae303cf1
17 files changed
+6796 -90

No files matched your search

@@ -0,0 +1,42 @@
using Jiaowu.Api.Infrastructure.Teaching;
namespace Jiaowu.Api.Tests;
public sealed class AttendanceCheckInChallengeTests
{
[Fact]
public void Challenge_IsBoundToSheetSecretAndTwentySecondLifetime()
{
var sheetId = Guid.NewGuid();
var issuedAt = new DateTime(2026, 7, 28, 8, 0, 0, DateTimeKind.Utc);
var challenge = AttendanceCheckInChallenge.Create(
sheetId,
"sheet-secret",
issuedAt);
Assert.True(AttendanceCheckInChallenge.TryReadSheetId(
challenge.Token,
out var parsedSheetId));
Assert.Equal(sheetId, parsedSheetId);
Assert.True(AttendanceCheckInChallenge.IsValid(
challenge.Token,
sheetId,
"sheet-secret",
issuedAt.AddSeconds(20)));
Assert.False(AttendanceCheckInChallenge.IsValid(
challenge.Token,
sheetId,
"sheet-secret",
issuedAt.AddSeconds(21)));
Assert.False(AttendanceCheckInChallenge.IsValid(
challenge.Token,
Guid.NewGuid(),
"sheet-secret",
issuedAt));
Assert.False(AttendanceCheckInChallenge.IsValid(
challenge.Token,
sheetId,
"different-secret",
issuedAt));
}
}