test(suite): cover version validation entry points

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
This commit is contained in:
XiaoSeS 2026-09-10 09:13:41 +08:00
parent 83ff64d76a
commit 24f07913ac

View file

@ -129,15 +129,23 @@ class SkillSuiteDraftServiceTest {
}
@Test
void rejectsSuiteVersionsThatCannotBeUsedSafelyAcrossCliShells() {
void rejectsUnsafeSuiteVersionsAtEveryDraftWriteEntryPoint() {
Namespace namespace = new Namespace("team", "Team", "owner");
setId(namespace, 1L);
SkillSuite suite = new SkillSuite(1L, "writers", "Writers", "author");
setId(suite, 10L);
when(namespaceRepository.findById(1L)).thenReturn(Optional.of(namespace));
when(suiteRepository.findById(10L)).thenReturn(Optional.of(suite));
SkillSuiteActionContext context = new SkillSuiteActionContext(
"author", Map.of(1L, NamespaceRole.MEMBER), Set.of(),
"request-3", "127.0.0.1", "test");
for (String version : List.of("1.0.0; touch pwned", "a".repeat(65))) {
SkillSuiteVersion existingVersion = new SkillSuiteVersion(
10L, version, SkillVisibility.PUBLIC, "author");
setId(existingVersion, 20L);
when(versionRepository.findByIdForDefinitionUpdate(20L))
.thenReturn(Optional.of(existingVersion));
CreateSkillSuiteDraftCommand command = new CreateSkillSuiteDraftCommand(
1L, "writers", "Writers", "Summary", null, version,
SkillVisibility.PUBLIC, null, 40L,
@ -147,6 +155,12 @@ class SkillSuiteDraftServiceTest {
assertThatThrownBy(() -> service.create(command, context))
.isInstanceOf(DomainBadRequestException.class)
.hasMessage("error.suite.version.invalid");
assertThatThrownBy(() -> service.createVersion(10L, command, context))
.isInstanceOf(DomainBadRequestException.class)
.hasMessage("error.suite.version.invalid");
assertThatThrownBy(() -> service.updateDraft(10L, 20L, command, context))
.isInstanceOf(DomainBadRequestException.class)
.hasMessage("error.suite.version.invalid");
}
}