From 24f07913ac12b08a195f09075f2d7087a2f17093 Mon Sep 17 00:00:00 2001 From: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com> Date: Thu, 10 Sep 2026 09:13:41 +0800 Subject: [PATCH] test(suite): cover version validation entry points Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com> --- .../domain/suite/SkillSuiteDraftServiceTest.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/suite/SkillSuiteDraftServiceTest.java b/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/suite/SkillSuiteDraftServiceTest.java index 579d0277..104c26b5 100644 --- a/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/suite/SkillSuiteDraftServiceTest.java +++ b/server/skillhub-domain/src/test/java/com/iflytek/skillhub/domain/suite/SkillSuiteDraftServiceTest.java @@ -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"); } }