From 4824a2a5ca61535ea7decadee8f2b4864bf4b330 Mon Sep 17 00:00:00 2001 From: Matt Richardson Date: Mon, 6 Jul 2026 09:18:18 +1000 Subject: [PATCH] test: Add validation tests for Pack Package step --- ...topusPackPackageRunTypeValidationTest.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 octopus-server/src/test/java/octopus/teamcity/server/OctopusPackPackageRunTypeValidationTest.java diff --git a/octopus-server/src/test/java/octopus/teamcity/server/OctopusPackPackageRunTypeValidationTest.java b/octopus-server/src/test/java/octopus/teamcity/server/OctopusPackPackageRunTypeValidationTest.java new file mode 100644 index 00000000..6fd422c7 --- /dev/null +++ b/octopus-server/src/test/java/octopus/teamcity/server/OctopusPackPackageRunTypeValidationTest.java @@ -0,0 +1,66 @@ +package octopus.teamcity.server; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.mock; + +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Collectors; + +import jetbrains.buildServer.serverSide.InvalidProperty; +import jetbrains.buildServer.serverSide.RunTypeRegistry; +import jetbrains.buildServer.web.openapi.PluginDescriptor; +import octopus.teamcity.common.OctopusConstants; +import org.junit.jupiter.api.Test; + +class OctopusPackPackageRunTypeValidationTest { + private static final OctopusConstants CONSTANTS = new OctopusConstants(); + + private Collection validate(final Map properties) { + final OctopusPackPackageRunType runType = + new OctopusPackPackageRunType(mock(RunTypeRegistry.class), mock(PluginDescriptor.class)); + return runType.getRunnerPropertiesProcessor().process(properties).stream() + .map(InvalidProperty::getPropertyName) + .collect(Collectors.toList()); + } + + private Map withAllMandatoryFields(final Map properties) { + properties.put(CONSTANTS.getPackageIdKey(), "Acme.Web"); + properties.put(CONSTANTS.getPackageFormatKey(), "NuPkg"); + properties.put(CONSTANTS.getPackageVersionKey(), "1.0.0"); + properties.put(CONSTANTS.getPackageSourcePathKey(), "bin"); + properties.put(CONSTANTS.getPackageOutputPathKey(), "out"); + return properties; + } + + @Test + void allMandatoryFieldsIsValid() { + assertThat(validate(withAllMandatoryFields(new HashMap<>()))).isEmpty(); + } + + @Test + void emptyPropertiesReportsEveryMandatoryField() { + assertThat(validate(new HashMap<>())) + .containsExactlyInAnyOrder( + CONSTANTS.getPackageIdKey(), + CONSTANTS.getPackageFormatKey(), + CONSTANTS.getPackageVersionKey(), + CONSTANTS.getPackageSourcePathKey(), + CONSTANTS.getPackageOutputPathKey()); + } + + @Test + void missingPackageIdIsInvalid() { + final Map properties = withAllMandatoryFields(new HashMap<>()); + properties.remove(CONSTANTS.getPackageIdKey()); + assertThat(validate(properties)).containsExactly(CONSTANTS.getPackageIdKey()); + } + + @Test + void blankPackageVersionIsInvalid() { + final Map properties = withAllMandatoryFields(new HashMap<>()); + properties.put(CONSTANTS.getPackageVersionKey(), " "); + assertThat(validate(properties)).containsExactly(CONSTANTS.getPackageVersionKey()); + } +}