Files
2026-07-18 22:22:29 -05:00

50 lines
1.5 KiB
C#

using QuestionsApi.Models;
using Xunit;
namespace QuestionsApi.Tests;
public sealed class UserNotepadTests
{
[Fact]
public void ValidatorAcceptsPlainTextAtMaximumLength()
{
var request = new UpdateUserNotepadRequest
{
Content = new string('x', UserNotepadValidator.MaxContentLength),
ExpectedRevision = 0
};
Assert.Null(UserNotepadValidator.Validate(request));
}
[Fact]
public void ValidatorRejectsOversizedContentAndNegativeRevision()
{
var oversized = new UpdateUserNotepadRequest
{
Content = new string('x', UserNotepadValidator.MaxContentLength + 1),
ExpectedRevision = 0
};
Assert.Contains("characters or fewer", UserNotepadValidator.Validate(oversized));
var invalidRevision = new UpdateUserNotepadRequest { ExpectedRevision = -1 };
Assert.Contains("cannot be negative", UserNotepadValidator.Validate(invalidRevision));
}
[Fact]
public void ResponseDoesNotExposeUserOrMongoIdentifiers()
{
var response = UserNotepadResponse.FromModel(new UserNotepad
{
UserId = "private-user-id",
Content = "My notes",
Revision = 7
});
Assert.Equal("My notes", response.Content);
Assert.Equal(7, response.Revision);
Assert.Null(typeof(UserNotepadResponse).GetProperty(nameof(UserNotepad.UserId)));
Assert.Null(typeof(UserNotepadResponse).GetProperty(nameof(UserNotepad.Id)));
}
}