From 7c4644a47515426d352cc96149c69a32e85416b1 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 13 Feb 2024 11:30:05 +0100 Subject: [PATCH 01/35] add JasyptUrlUpdater to UpdateManager --- .../java/com/devonfw/tools/ide/url/updater/UpdateManager.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java b/cli/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java index 637feca26..59cf7de87 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java +++ b/cli/src/main/java/com/devonfw/tools/ide/url/updater/UpdateManager.java @@ -44,6 +44,7 @@ import com.devonfw.tools.ide.tool.tomcat.TomcatUrlUpdater; import com.devonfw.tools.ide.tool.vscode.VsCodeUrlUpdater; import com.devonfw.tools.ide.url.model.folder.UrlRepository; +import com.devonfw.tools.ide.tool.jasypt.JasyptUrlUpdater; /** * The {@code UpdateManager} class manages the update process for various tools by using a list of @@ -65,7 +66,8 @@ public class UpdateManager extends AbstractProcessorWithTimeout { new JenkinsUrlUpdater(), new JmcUrlUpdater(), new KotlincUrlUpdater(), new KotlincNativeUrlUpdater(), new LazyDockerUrlUpdater(), new MvnUrlUpdater(), new NodeUrlUpdater(), new NpmUrlUpdater(), new OcUrlUpdater(), new PipUrlUpdater(), new PythonUrlUpdater(), new QuarkusUrlUpdater(), new DockerRancherDesktopUrlUpdater(), - new SonarUrlUpdater(), new TerraformUrlUpdater(), new TomcatUrlUpdater(), new VsCodeUrlUpdater()); + new SonarUrlUpdater(), new TerraformUrlUpdater(), new TomcatUrlUpdater(), new VsCodeUrlUpdater(), + new JasyptUrlUpdater()); /** * The constructor. From db09dce0a8ad3423fbeb3fd156a0bb79cb22489d Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 14 Feb 2024 18:18:39 +0100 Subject: [PATCH 02/35] commandlet initialized --- .../ide/commandlet/CommandletManagerImpl.java | 2 + .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 87 +++++++++++++++++++ cli/src/main/resources/nls/Ide.properties | 1 + cli/src/main/resources/nls/Ide_de.properties | 1 + 4 files changed, 91 insertions(+) create mode 100644 cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java diff --git a/cli/src/main/java/com/devonfw/tools/ide/commandlet/CommandletManagerImpl.java b/cli/src/main/java/com/devonfw/tools/ide/commandlet/CommandletManagerImpl.java index 15c5cdbe0..3ca68ff2d 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/commandlet/CommandletManagerImpl.java +++ b/cli/src/main/java/com/devonfw/tools/ide/commandlet/CommandletManagerImpl.java @@ -27,6 +27,7 @@ import com.devonfw.tools.ide.tool.quarkus.Quarkus; import com.devonfw.tools.ide.tool.terraform.Terraform; import com.devonfw.tools.ide.tool.vscode.Vscode; +import com.devonfw.tools.ide.tool.jasypt.Jasypt; /** * Implementation of {@link CommandletManager}. @@ -83,6 +84,7 @@ public CommandletManagerImpl(IdeContext context) { add(new Aws(context)); add(new Cobigen(context)); add(new Jmc(context)); + add(new Jasypt(context)); } private void add(Commandlet commandlet) { diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java new file mode 100644 index 000000000..c5ea38319 --- /dev/null +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -0,0 +1,87 @@ +package com.devonfw.tools.ide.tool.jasypt; + +import java.nio.file.Path; +import java.util.Scanner; +import java.util.Set; + +import com.devonfw.tools.ide.common.Tag; +import com.devonfw.tools.ide.context.IdeContext; +import com.devonfw.tools.ide.context.IdeContextConsole; +import com.devonfw.tools.ide.tool.LocalToolCommandlet; +import com.devonfw.tools.ide.tool.java.Java; +import java.nio.file.Paths; + +public class Jasypt extends LocalToolCommandlet { + + public Jasypt(IdeContext context) { + + super(context, "jasypt", Set.of(Tag.JAVA)); +/* Scanner scanner = new Scanner(System.in); + + // Prompt the user to enter input + System.out.println("Please enter your input:"); + + // Read input from stdin + String input = scanner.nextLine(); + + // Print the input back to the user + System.out.println("You entered: " + input); + + // Close the scanner + scanner.close(); + System.out.println("hello jasypt " + input);*/ + } + + @Override + public boolean doInstall(boolean silent) { + + getCommandlet(Java.class).install(); + return super.doInstall(silent); + } + + @Override + public void run() { + String[] arguments = this.arguments.asArray(); + System.out.println("arguments are: " + arguments); + + Path m2Repo = context.getVariables().getPath("M2_REPO"); + + // Assuming getInstalledVersion() returns the installed version dynamically + String installedVersion = getInstalledVersion().toString(); + + // Append the installed version and the JAR file to the path + Path jasyptJar = m2Repo.resolve(Paths.get("org", "jasypt", "jasypt", installedVersion, "jasypt-" + installedVersion + ".jar")); + System.out.println("jar file is is :" + jasyptJar); + System.out.println("version :" + this.getInstalledVersion() + "edition :" + this.getInstalledEdition()); + + // Define the master password and secret + String masterPassword = "marco"; + String secret = "bello"; + + // Create an array of strings to represent the command arguments + String[] commandArgs = { + "-cp", + jasyptJar.toString(), + "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI", + "algorithm=PBEWITHHMACSHA512ANDAES_256", + "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator", + "password=" + masterPassword, + "input=" + secret + }; + + // Print the command arguments + for (String arg : commandArgs) { + System.out.println(arg); + } + + + + + Java java = getCommandlet(Java.class); + + java.runTool(null, commandArgs); + + } +} + + diff --git a/cli/src/main/resources/nls/Ide.properties b/cli/src/main/resources/nls/Ide.properties index ef6b3eda7..1bfd961d3 100644 --- a/cli/src/main/resources/nls/Ide.properties +++ b/cli/src/main/resources/nls/Ide.properties @@ -32,6 +32,7 @@ cmd-shell=Commandlet to start built-in shell with advanced auto-completion. cmd-terraform=Tool commandlet for Terraform cmd-vscode=Tool commandlet for Visual Studio Code (IDE) cmd-cobigen=Tool commandlet for Cobigen +cmd-jasypt=Tool commandlet for Jasypt val-args=The commandline arguments to pass to the tool. val-edition=The tool edition. val-tool=The tool commandlet to select. diff --git a/cli/src/main/resources/nls/Ide_de.properties b/cli/src/main/resources/nls/Ide_de.properties index 688bd923a..2eec42931 100644 --- a/cli/src/main/resources/nls/Ide_de.properties +++ b/cli/src/main/resources/nls/Ide_de.properties @@ -29,6 +29,7 @@ cmd-set-version=Setzt die Version des selektierten Werkzeugs. cmd-terraform=Werkzeug Kommando für Terraform. cmd-vscode=Werkzeug Kommando für Visual Studio Code (IDE) cmd-cobigen=Werkzeug Kommando für Cobigen. +cmd-jasypt=Werkzeug Kommando für Jasypt val-args=Die Kommandozeilen-Argumente zur Übergabe an das Werkzeug. val-edition=Die Werkzeug Edition. val-tool=Das zu selektierende Werkzeug Kommando. From 92def9c75a9a9dac0e11738efba83e2b1db2696f Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Thu, 15 Feb 2024 14:33:21 +0100 Subject: [PATCH 03/35] add function doJasypt() to handle encryption and decriptyon, run() function implemented --- .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 86 ++++++++----------- 1 file changed, 34 insertions(+), 52 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index c5ea38319..4448e3203 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -1,35 +1,20 @@ package com.devonfw.tools.ide.tool.jasypt; -import java.nio.file.Path; -import java.util.Scanner; -import java.util.Set; - import com.devonfw.tools.ide.common.Tag; import com.devonfw.tools.ide.context.IdeContext; -import com.devonfw.tools.ide.context.IdeContextConsole; import com.devonfw.tools.ide.tool.LocalToolCommandlet; import com.devonfw.tools.ide.tool.java.Java; + +import java.nio.file.Path; import java.nio.file.Paths; +import java.util.Scanner; +import java.util.Set; public class Jasypt extends LocalToolCommandlet { public Jasypt(IdeContext context) { super(context, "jasypt", Set.of(Tag.JAVA)); -/* Scanner scanner = new Scanner(System.in); - - // Prompt the user to enter input - System.out.println("Please enter your input:"); - - // Read input from stdin - String input = scanner.nextLine(); - - // Print the input back to the user - System.out.println("You entered: " + input); - - // Close the scanner - scanner.close(); - System.out.println("hello jasypt " + input);*/ } @Override @@ -39,48 +24,45 @@ public boolean doInstall(boolean silent) { return super.doInstall(silent); } - @Override - public void run() { - String[] arguments = this.arguments.asArray(); - System.out.println("arguments are: " + arguments); + private void doJasypt(String className, String[] args) { - Path m2Repo = context.getVariables().getPath("M2_REPO"); + Scanner scanner = new Scanner(System.in); + this.context.info("Enter masterpassword: "); + String masterpassword = scanner.nextLine(); + this.context.info("Enter secret to encrypt/decrypt: "); + String secret = scanner.nextLine(); + scanner.close(); - // Assuming getInstalledVersion() returns the installed version dynamically + Path m2Repo = context.getVariables().getPath("M2_REPO"); String installedVersion = getInstalledVersion().toString(); + Path jasyptJar = m2Repo.resolve( + Paths.get("org", "jasypt", "jasypt", installedVersion, "jasypt-" + installedVersion + ".jar")); - // Append the installed version and the JAR file to the path - Path jasyptJar = m2Repo.resolve(Paths.get("org", "jasypt", "jasypt", installedVersion, "jasypt-" + installedVersion + ".jar")); - System.out.println("jar file is is :" + jasyptJar); - System.out.println("version :" + this.getInstalledVersion() + "edition :" + this.getInstalledEdition()); - - // Define the master password and secret - String masterPassword = "marco"; - String secret = "bello"; - - // Create an array of strings to represent the command arguments - String[] commandArgs = { - "-cp", - jasyptJar.toString(), - "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI", - "algorithm=PBEWITHHMACSHA512ANDAES_256", - "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator", - "password=" + masterPassword, - "input=" + secret - }; - - // Print the command arguments - for (String arg : commandArgs) { - System.out.println(arg); - } - - - + String[] commandArgs = { "-cp", jasyptJar.toString(), className, "algorithm=PBEWITHHMACSHA512ANDAES_256", + "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator", "password=" + masterpassword, "input=" + secret }; Java java = getCommandlet(Java.class); java.runTool(null, commandArgs); + } + + @Override + public void run() { + String[] args = this.arguments.asArray(); + + if (args.length == 0) { + this.context.info("Jasypt encryption tool"); + this.context.info("Arguments:"); + this.context.info(" encrypt encrypt a secret with a master-password"); + this.context.info(" decrypt decrypt an encrypted secret with a master-password"); + } else if (args[0].equals("encrypt")) { + doJasypt("org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI", args); + } else if (args[0].equals("decrypt")) { + doJasypt("org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI", args); + } else { + this.context.warning("Unknown argument " + args[0]); + } } } From 2cc0020ba41a4a4fea81c535716734c4d527236e Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Mon, 19 Feb 2024 12:47:47 +0100 Subject: [PATCH 04/35] use Path instead of Paths --- .../main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 4448e3203..a9d7ef9d9 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -6,7 +6,6 @@ import com.devonfw.tools.ide.tool.java.Java; import java.nio.file.Path; -import java.nio.file.Paths; import java.util.Scanner; import java.util.Set; @@ -35,8 +34,8 @@ private void doJasypt(String className, String[] args) { Path m2Repo = context.getVariables().getPath("M2_REPO"); String installedVersion = getInstalledVersion().toString(); - Path jasyptJar = m2Repo.resolve( - Paths.get("org", "jasypt", "jasypt", installedVersion, "jasypt-" + installedVersion + ".jar")); + Path jasyptJar = m2Repo.resolve("org").resolve("jasypt").resolve("jasypt").resolve(installedVersion) + .resolve("jasypt-" + installedVersion + ".jar"); String[] commandArgs = { "-cp", jasyptJar.toString(), className, "algorithm=PBEWITHHMACSHA512ANDAES_256", "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator", "password=" + masterpassword, "input=" + secret }; From ed1fb3da293c1bebc1e6eff4fb824e21980c5608 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 20 Feb 2024 10:27:37 +0100 Subject: [PATCH 05/35] initialize mvn command for artifact download --- .../main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index a9d7ef9d9..f9b567d02 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -4,6 +4,7 @@ import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.tool.LocalToolCommandlet; import com.devonfw.tools.ide.tool.java.Java; +import com.devonfw.tools.ide.tool.mvn.Mvn; import java.nio.file.Path; import java.util.Scanner; @@ -20,6 +21,11 @@ public Jasypt(IdeContext context) { public boolean doInstall(boolean silent) { getCommandlet(Java.class).install(); + Mvn mvn = getCommandlet(Mvn.class); + mvn.install(); + String[] commandArgs = {"org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get", "-Dartifact=org.jasypt:jasypt:" + getInstalledVersion().toString()}; + mvn.runTool(null, commandArgs); + return super.doInstall(silent); } From ec072eac81162e522bf2a676beb482a1160ff47d Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 20 Feb 2024 16:31:50 +0100 Subject: [PATCH 06/35] refactor code Jasypt --- .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 97 ++++++++++++------- 1 file changed, 60 insertions(+), 37 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index f9b567d02..1b4758b50 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -3,72 +3,95 @@ import com.devonfw.tools.ide.common.Tag; import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.tool.LocalToolCommandlet; +import com.devonfw.tools.ide.tool.ToolCommandlet; import com.devonfw.tools.ide.tool.java.Java; import com.devonfw.tools.ide.tool.mvn.Mvn; +import java.nio.file.Files; import java.nio.file.Path; -import java.util.Scanner; import java.util.Set; +/** + * {@link ToolCommandlet} for Jasypt, The java library which allows to add basic + * encryption capabilities with minimum effort. + */ public class Jasypt extends LocalToolCommandlet { + private static final String USAGE_INFO = """ + Jasypt encryption tool + Usage: + encrypt encrypt a secret with a master-password + decrypt decrypt an encrypted secret with a master-password + """; + + public static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; + + public static final String CLASS_NAME_DECRYPTION = "org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI"; + + public static final String ALGORITHM = "algorithm=PBEWITHHMACSHA512ANDAES_256"; + + public static final String GENERATOR_CLASS_NAME = "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator"; + + /** + * The constructor. + * + * @param context the {@link IdeContext}. + */ public Jasypt(IdeContext context) { super(context, "jasypt", Set.of(Tag.JAVA)); } + @Override + public void run() { + + String[] args = this.arguments.asArray(); + + if (args.length == 0) { + this.context.info(USAGE_INFO); + } else if (args.length == 3 && args[0].equals("encrypt")) { + doJasypt(CLASS_NAME_ENCRYPTION, args); + } else if (args.length == 3 && args[0].equals("decrypt")) { + doJasypt(CLASS_NAME_DECRYPTION, args); + } else { + this.context.warning("Unknown arguments "); + this.context.info(USAGE_INFO); + } + } + @Override public boolean doInstall(boolean silent) { getCommandlet(Java.class).install(); + if (Files.notExists(resolveJasyptJarPath())) { + installJasyptArtifact(); + } + return super.doInstall(silent); + } + + private void installJasyptArtifact() { + Mvn mvn = getCommandlet(Mvn.class); mvn.install(); - String[] commandArgs = {"org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get", "-Dartifact=org.jasypt:jasypt:" + getInstalledVersion().toString()}; - mvn.runTool(null, commandArgs); - - return super.doInstall(silent); + mvn.runTool(null, "org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get", + "-Dartifact=org.jasypt:jasypt:" + getInstalledVersion().toString()); } private void doJasypt(String className, String[] args) { - Scanner scanner = new Scanner(System.in); - this.context.info("Enter masterpassword: "); - String masterpassword = scanner.nextLine(); - this.context.info("Enter secret to encrypt/decrypt: "); - String secret = scanner.nextLine(); - scanner.close(); + Java java = getCommandlet(Java.class); + java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, ALGORITHM, GENERATOR_CLASS_NAME, + "password=" + args[1], "input=" + args[2]); + } + + private Path resolveJasyptJarPath() { Path m2Repo = context.getVariables().getPath("M2_REPO"); String installedVersion = getInstalledVersion().toString(); - Path jasyptJar = m2Repo.resolve("org").resolve("jasypt").resolve("jasypt").resolve(installedVersion) + return m2Repo.resolve("org").resolve("jasypt").resolve("jasypt").resolve(installedVersion) .resolve("jasypt-" + installedVersion + ".jar"); - - String[] commandArgs = { "-cp", jasyptJar.toString(), className, "algorithm=PBEWITHHMACSHA512ANDAES_256", - "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator", "password=" + masterpassword, "input=" + secret }; - - Java java = getCommandlet(Java.class); - - java.runTool(null, commandArgs); } - @Override - public void run() { - - String[] args = this.arguments.asArray(); - - if (args.length == 0) { - this.context.info("Jasypt encryption tool"); - this.context.info("Arguments:"); - this.context.info(" encrypt encrypt a secret with a master-password"); - this.context.info(" decrypt decrypt an encrypted secret with a master-password"); - } else if (args[0].equals("encrypt")) { - doJasypt("org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI", args); - } else if (args[0].equals("decrypt")) { - doJasypt("org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI", args); - } else { - this.context.warning("Unknown argument " + args[0]); - } - } } From 6ac0e73d1397465706c42d86990a623c373e7f11 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 21 Feb 2024 11:20:42 +0100 Subject: [PATCH 07/35] postInstall() method added to install the jasypt artifact --- .../com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 1b4758b50..831178bca 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -63,10 +63,20 @@ public void run() { public boolean doInstall(boolean silent) { getCommandlet(Java.class).install(); + /* if (Files.notExists(resolveJasyptJarPath())) { + installJasyptArtifact(); + }*/ + return super.doInstall(silent); + } + + @Override + public void postInstall() { + + super.postInstall(); + if (Files.notExists(resolveJasyptJarPath())) { installJasyptArtifact(); } - return super.doInstall(silent); } private void installJasyptArtifact() { From 1ba57b137d905c4577b1ef816ba1283770692ab6 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 21 Feb 2024 13:07:23 +0100 Subject: [PATCH 08/35] debug print postinstall --- cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 831178bca..5fcc895b6 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -76,7 +76,9 @@ public void postInstall() { if (Files.notExists(resolveJasyptJarPath())) { installJasyptArtifact(); + this.context.debug("installing jasypt artifact at:"); } + this.context.debug("post install "); } private void installJasyptArtifact() { From 4efe32a2697b134ab69512715d03edb6a0d9418b Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 21 Feb 2024 15:47:12 +0100 Subject: [PATCH 09/35] Different executable priority lists depending from os --- .../com/devonfw/tools/ide/common/SystemPath.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java b/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java index a3b5415af..3f609eeb9 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java +++ b/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java @@ -28,7 +28,8 @@ public class SystemPath { private final IdeContext context; - private static final List EXTENSION_PRIORITY = List.of(".exe", ".cmd", ".bat", ".msi", ".ps1", ""); + private static final List EXTENSION_PRIORITY_WIN = List.of(".exe", ".cmd", ".bat", ".msi", ".ps1", ""); + private static final List EXTENSION_PRIORITY_UNIX = List.of(".exe", "", ".cmd", ".bat", ".msi", ".ps1"); /** * The constructor. @@ -116,7 +117,16 @@ private static String getTool(Path path, Path softwarePath) { private Path findBinaryInOrder(Path path, String tool) { - for (String extension : EXTENSION_PRIORITY) { + List extensionPriority; + + if (this.context.getSystemInfo().isWindows()) { + extensionPriority = EXTENSION_PRIORITY_WIN; + } + else { + extensionPriority = EXTENSION_PRIORITY_UNIX; + } + + for (String extension : extensionPriority) { Path fileToExecute = path.resolve(tool + extension); From 4f24b0bc752148d48f73a39cc5308651d3354caa Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 21 Feb 2024 16:00:46 +0100 Subject: [PATCH 10/35] formatting check --- .../devonfw/tools/ide/common/SystemPath.java | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java b/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java index 3f609eeb9..47b696d4b 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java +++ b/cli/src/main/java/com/devonfw/tools/ide/common/SystemPath.java @@ -1,5 +1,7 @@ package com.devonfw.tools.ide.common; +import com.devonfw.tools.ide.context.IdeContext; + import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -11,8 +13,6 @@ import java.util.Map; import java.util.stream.Stream; -import com.devonfw.tools.ide.context.IdeContext; - /** * Represents the PATH variable in a structured way. */ @@ -29,6 +29,7 @@ public class SystemPath { private final IdeContext context; private static final List EXTENSION_PRIORITY_WIN = List.of(".exe", ".cmd", ".bat", ".msi", ".ps1", ""); + private static final List EXTENSION_PRIORITY_UNIX = List.of(".exe", "", ".cmd", ".bat", ".msi", ".ps1"); /** @@ -68,7 +69,8 @@ public SystemPath(String envPath, Path softwarePath, char pathSeparator, IdeCont } else { Path duplicate = this.tool2pathMap.putIfAbsent(tool, path); if (duplicate != null) { - context.warning("Duplicated tool path for tool: {} at path: {} with duplicated path: {}.", tool, path, duplicate); + context.warning("Duplicated tool path for tool: {} at path: {} with duplicated path: {}.", tool, path, + duplicate); } } } @@ -121,8 +123,7 @@ private Path findBinaryInOrder(Path path, String tool) { if (this.context.getSystemInfo().isWindows()) { extensionPriority = EXTENSION_PRIORITY_WIN; - } - else { + } else { extensionPriority = EXTENSION_PRIORITY_UNIX; } @@ -141,7 +142,7 @@ private Path findBinaryInOrder(Path path, String tool) { /** * @param toolPath the {@link Path} to the tool installation. * @return the {@link Path} to the binary executable of the tool. E.g. is "software/mvn" is given - * "software/mvn/bin/mvn" could be returned. + * "software/mvn/bin/mvn" could be returned. */ public Path findBinary(Path toolPath) { @@ -168,7 +169,7 @@ public Path findBinary(Path toolPath) { /** * @param tool the name of the tool. * @return the {@link Path} to the directory of the tool where the binaries can be found or {@code null} if the tool - * is not installed. + * is not installed. */ public Path getPath(String tool) { @@ -192,7 +193,7 @@ public String toString() { /** * @param bash - {@code true} to convert the PATH to bash syntax (relevant for git-bash or cygwin on windows), - * {@code false} otherwise. + * {@code false} otherwise. * @return this {@link SystemPath} as {@link String} for the PATH environment variable. */ public String toString(boolean bash) { From 570e0ef330d9b66199335a10dad183d9251b7247 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Fri, 23 Feb 2024 12:40:40 +0100 Subject: [PATCH 11/35] Return statement in backup() functions in case of symlinks --- cli/src/main/java/com/devonfw/tools/ide/io/FileAccessImpl.java | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/src/main/java/com/devonfw/tools/ide/io/FileAccessImpl.java b/cli/src/main/java/com/devonfw/tools/ide/io/FileAccessImpl.java index 057e55158..3906a64ba 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/io/FileAccessImpl.java +++ b/cli/src/main/java/com/devonfw/tools/ide/io/FileAccessImpl.java @@ -225,6 +225,7 @@ public void backup(Path fileOrFolder) { if (Files.isSymbolicLink(fileOrFolder)) { delete(fileOrFolder); + return; } Path backupPath = this.context.getIdeHome().resolve(IdeContext.FOLDER_UPDATES).resolve(IdeContext.FOLDER_BACKUPS); LocalDateTime now = LocalDateTime.now(); From b41c4d37cabaf6b75daaf7a48ae20c0c4e8bd449 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Fri, 23 Feb 2024 16:49:51 +0100 Subject: [PATCH 12/35] adds documentation --- documentation/jasypt.asciidoc | 76 +++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 documentation/jasypt.asciidoc diff --git a/documentation/jasypt.asciidoc b/documentation/jasypt.asciidoc new file mode 100644 index 000000000..4f706c7f1 --- /dev/null +++ b/documentation/jasypt.asciidoc @@ -0,0 +1,76 @@ +:toc: +toc::[] + += jasypt + +The `jasypt` commandlet allows to install http://www.jasypt.org/[jasypt] and encrypt or decrypt secrets using strong encryption given a secure masterpassword. See also https://github.com/devonfw/devon4j/blob/master/documentation/guide-configuration.asciidoc#password-encryption[devon4j password encryption guide] for further details. + +The arguments (`devon jasypt «args»`) are explained by the following table: + +.Usage of `devon jasypt` +[options="header"] +|======================= +|*Argument(s)* |*Meaning* +|`install jasypt` |setup jasypt (install and verify), link:configuration.asciidoc[configurable] via `JASYPT_VERSION` +|`jasypt encrypt ` |Encrypt a secret with a masterpassword +|`jasypt decrypt ` |Decrypt an encrypted secret with a masterpassword +|======================= + +== example + +* `jasypt encrypt secret master` + +``` +----ENVIRONMENT----------------- + +Runtime: Eclipse Adoptium OpenJDK 64-Bit Server VM 17.0.10+7 + + + +----ARGUMENTS------------------- + +input: secret +password: master +ivGeneratorClassName: org.jasypt.iv.RandomIvGenerator +algorithm: PBEWITHHMACSHA512ANDAES_256 + + + +----OUTPUT---------------------- + +cHdhiWKZURfFazkbScBehzy46JXXXlEN7VaSMV2UdeHMr9WzB7Xx6aEdG3u+2gGm + + + +Process finished with exit code 0 +``` + +* `jasypt decrypt secret cHdhiWKZURfFazkbScBehzy46JXXXlEN7VaSMV2UdeHMr9WzB7Xx6aEdG3u+2gGm` + +``` +----ENVIRONMENT----------------- + +Runtime: Eclipse Adoptium OpenJDK 64-Bit Server VM 17.0.10+7 + + + +----ARGUMENTS------------------- + +input: cHdhiWKZURfFazkbScBehzy46JXXXlEN7VaSMV2UdeHMr9WzB7Xx6aEdG3u+2gGm +password: master +ivGeneratorClassName: org.jasypt.iv.RandomIvGenerator +algorithm: PBEWITHHMACSHA512ANDAES_256 + + + +----OUTPUT---------------------- + +secret + + + +Process finished with exit code 0 +``` + + + From 41821a33cd77aca7b22961fb0bc92f64146cc220 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 5 Mar 2024 13:55:37 +0100 Subject: [PATCH 13/35] test jasypt initialized --- .../tools/ide/tool/jasypt/JasyptTest.java | 86 +++++++++++++++++++ .../urls/java/java/17.0.6/linux_x64.sha256 | 1 + .../_ide/urls/java/java/17.0.6/linux_x64.urls | 1 + .../_ide/urls/java/java/17.0.6/mac_x64.sha256 | 1 + .../_ide/urls/java/java/17.0.6/mac_x64.urls | 1 + .../_ide/urls/java/java/17.0.6/status.json | 20 +++++ .../urls/java/java/17.0.6/windows_x64.urls | 1 + .../java/java/17.0.6/windows_x64.urls.sha256 | 1 + .../_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 | 1 + .../_ide/urls/jmc/jmc/8.3.0/linux_x64.urls | 1 + .../_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 | 1 + .../_ide/urls/jmc/jmc/8.3.0/mac_x64.urls | 1 + .../_ide/urls/jmc/jmc/8.3.0/status.json | 20 +++++ .../_ide/urls/jmc/jmc/8.3.0/windows_x64.urls | 1 + .../jmc/jmc/8.3.0/windows_x64.urls.sha256 | 1 + .../ide-projects/jasypt/_ide/urls/readme | 1 + .../jasypt/project/home/.ide/ide.properties | 0 .../ide-projects/jasypt/project/home/readme | 1 + .../ide-projects/jasypt/project/readme | 1 + .../jasypt/project/settings/ide.properties | 2 + .../jasypt/project/workspaces/main/readme | 1 + .../test/resources/ide-projects/jasypt/readme | 1 + .../repository/java/java/default/bin/java | 2 + .../repository/java/java/default/bin/java.cmd | 2 + .../jmc/jmc/default/linux/InstallTest.txt | 1 + .../linux/JDK Mission Control/HelloWorld.txt | 1 + .../jmc/default/linux/JDK Mission Control/jmc | 3 + .../jmc/jmc/default/mac/InstallTest.txt | 1 + .../Contents/MacOS/jmc | 3 + .../Contents/Resources/mission_control.icns | 0 .../jmc/jmc/default/mac/legal/legal.txt | 1 + .../jmc/jmc/default/windows/InstallTest.txt | 1 + .../JDK Mission Control/HelloWorld.txt | 1 + .../default/windows/JDK Mission Control/jmc | 3 + .../windows/JDK Mission Control/jmc.cmd | 3 + 35 files changed, 167 insertions(+) create mode 100644 cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/readme create mode 100644 cli/src/test/resources/ide-projects/jasypt/project/home/.ide/ide.properties create mode 100644 cli/src/test/resources/ide-projects/jasypt/project/home/readme create mode 100644 cli/src/test/resources/ide-projects/jasypt/project/readme create mode 100644 cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties create mode 100644 cli/src/test/resources/ide-projects/jasypt/project/workspaces/main/readme create mode 100644 cli/src/test/resources/ide-projects/jasypt/readme create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/Resources/mission_control.icns create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java new file mode 100644 index 000000000..866011450 --- /dev/null +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -0,0 +1,86 @@ +package com.devonfw.tools.ide.tool.jasypt; + +import java.io.IOException; +import java.util.List; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import com.devonfw.tools.ide.commandlet.InstallCommandlet; +import com.devonfw.tools.ide.context.AbstractIdeContextTest; +import com.devonfw.tools.ide.context.IdeTestContext; +import com.devonfw.tools.ide.log.IdeLogLevel; +import com.devonfw.tools.ide.os.SystemInfo; +import com.devonfw.tools.ide.os.SystemInfoMock; + +/** + * Integration test of {@link Jasypt}. + */ +public class JasyptTest extends AbstractIdeContextTest { + + private static final String PROJECT_JMC = "jasypt"; + + @Test + public void testJasyptInstallCommandlet() throws IOException { + + // arrange + IdeTestContext context = newContext(PROJECT_JMC); + InstallCommandlet install = context.getCommandletManager().getCommandlet(InstallCommandlet.class); + install.tool.setValueAsString("jasypt", context); + // act + install.run(); + + // assert + checkInstallation(context); + } + + @Test + public void testJasyptInstall() { + + // arrange + IdeTestContext context = newContext(PROJECT_JMC); + + Jasypt commandlet = new Jasypt(context); + + // act + commandlet.install(); + + // assert + checkInstallation(context); + } + + @ParameterizedTest + @ValueSource(strings = { "windows", "mac", "linux" }) + public void testJasyptRun(String os) { + + // arrange + IdeTestContext context = newContext(PROJECT_JMC); + SystemInfo systemInfo = SystemInfoMock.of(os); + context.setSystemInfo(systemInfo); + Jasypt commandlet = new Jasypt(context); + commandlet.arguments.setValue(List.of("foo", "bar")); + // act + commandlet.run(); + + // assert + assertLogMessage(context, IdeLogLevel.INFO, "java jasypt"); + assertLogMessage(context, IdeLogLevel.INFO, "jasypt " + os + " foo bar"); + checkInstallation(context); + } + + private void checkInstallation(IdeTestContext context) { + + assertThat(context.getSoftwarePath().resolve("java/bin/java")).exists(); + + if (context.getSystemInfo().isWindows() || context.getSystemInfo().isLinux()) { + assertThat(context.getSoftwarePath().resolve("jasypt/HelloWorld.txt")).hasContent("Hello World!"); + assertThat(context.getSoftwarePath().resolve("jasypt/JDK Mission Control")).doesNotExist(); + } else if (context.getSystemInfo().isMac()) { + assertThat(context.getSoftwarePath().resolve("jasypt/jasypt")).exists(); + } + assertThat(context.getSoftwarePath().resolve("jasypt/.ide.software.version")).exists().hasContent("8.3.0"); + assertLogMessage(context, IdeLogLevel.SUCCESS, "Successfully installed jasypt in version 8.3.0"); + } + +} diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 new file mode 100644 index 000000000..438dd2a03 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 @@ -0,0 +1 @@ +c2de7dfbd9f8faaa21b4cdd8518f826dd558c9ab24a0616b3ed28437a674a97b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls new file mode 100644 index 000000000..11266bb8a --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls @@ -0,0 +1 @@ +http://localhost:1112/installTest/linux \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 new file mode 100644 index 000000000..438dd2a03 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 @@ -0,0 +1 @@ +c2de7dfbd9f8faaa21b4cdd8518f826dd558c9ab24a0616b3ed28437a674a97b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls new file mode 100644 index 000000000..2d8af8437 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls @@ -0,0 +1 @@ +http://localhost:1112/installTest/macOS \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json new file mode 100644 index 000000000..b58452d90 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json @@ -0,0 +1,20 @@ +{ + "manual" : true, + "urls" : { + "-680270697" : { + "success" : { + "timestamp" : "2023-04-28T16:27:32.819394600Z" + } + }, + "-896197542" : { + "success" : { + "timestamp" : "2023-04-28T16:27:47.658175400Z" + } + }, + "-310367019" : { + "success" : { + "timestamp" : "2023-04-28T16:28:02.221367500Z" + } + } + } +} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls new file mode 100644 index 000000000..79fd6654e --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls @@ -0,0 +1 @@ +http://localhost:1112/installTest/windows \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 new file mode 100644 index 000000000..fe3cecaad --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 @@ -0,0 +1 @@ +aa64bee5f7ba56fbbd60d766f3a652600f81571ae5e996804694c69bf731af8b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 new file mode 100644 index 000000000..ba966d272 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 @@ -0,0 +1 @@ +cf666655da9bc097a7413af6cc5e9d930bc1f9267410613707f5e4aa724e3bf9 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls new file mode 100644 index 000000000..57920ab67 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls @@ -0,0 +1 @@ +http://localhost:1112/jmcTest/linux \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 new file mode 100644 index 000000000..628ce170c --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 @@ -0,0 +1 @@ +44036f764b9b3ac0e788499ab9f3746bfac47ed09f4c464423a582f5698cabc8 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls new file mode 100644 index 000000000..9d3d0a85c --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls @@ -0,0 +1 @@ +http://localhost:1112/jmcTest/macOS \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json new file mode 100644 index 000000000..b58452d90 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json @@ -0,0 +1,20 @@ +{ + "manual" : true, + "urls" : { + "-680270697" : { + "success" : { + "timestamp" : "2023-04-28T16:27:32.819394600Z" + } + }, + "-896197542" : { + "success" : { + "timestamp" : "2023-04-28T16:27:47.658175400Z" + } + }, + "-310367019" : { + "success" : { + "timestamp" : "2023-04-28T16:28:02.221367500Z" + } + } + } +} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls new file mode 100644 index 000000000..520aaac8d --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls @@ -0,0 +1 @@ +http://localhost:1112/jmcTest/windows \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 new file mode 100644 index 000000000..83cc5866b --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 @@ -0,0 +1 @@ +5cbb836ceb159788f03aed5d2da9debb8fa269139dc0e1f6ffff671ac5367e6b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/readme b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/readme new file mode 100644 index 000000000..befcdfa75 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/readme @@ -0,0 +1 @@ +this is the download metadata \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/project/home/.ide/ide.properties b/cli/src/test/resources/ide-projects/jasypt/project/home/.ide/ide.properties new file mode 100644 index 000000000..e69de29bb diff --git a/cli/src/test/resources/ide-projects/jasypt/project/home/readme b/cli/src/test/resources/ide-projects/jasypt/project/home/readme new file mode 100644 index 000000000..5e8bc178c --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/project/home/readme @@ -0,0 +1 @@ +this is the users HOME directory \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/project/readme b/cli/src/test/resources/ide-projects/jasypt/project/readme new file mode 100644 index 000000000..256f5732c --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/project/readme @@ -0,0 +1 @@ +this is the IDE_HOME directory \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties b/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties new file mode 100644 index 000000000..31d77e550 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties @@ -0,0 +1,2 @@ +JAVA_VERSION=17.0.10_7 +JMC_VERSION=8.3.0 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/project/workspaces/main/readme b/cli/src/test/resources/ide-projects/jasypt/project/workspaces/main/readme new file mode 100644 index 000000000..f04b5be39 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/project/workspaces/main/readme @@ -0,0 +1 @@ +this is the main workspace of jmc test case \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/readme b/cli/src/test/resources/ide-projects/jasypt/readme new file mode 100644 index 000000000..15b91829e --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/readme @@ -0,0 +1 @@ +this is the IDE_ROOT directory \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java new file mode 100644 index 000000000..0aa8af9dc --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java @@ -0,0 +1,2 @@ +#!/bin/bash +echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd new file mode 100644 index 000000000..bbaac3802 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd @@ -0,0 +1,2 @@ +@echo off +echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt new file mode 100644 index 000000000..6de7b8c69 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt @@ -0,0 +1 @@ +This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt new file mode 100644 index 000000000..980a0d5f1 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt @@ -0,0 +1 @@ +Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc new file mode 100644 index 000000000..40d7ae899 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc @@ -0,0 +1,3 @@ +#!/bin/bash +java "jmc" +echo "jmc linux $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt new file mode 100644 index 000000000..6de7b8c69 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt @@ -0,0 +1 @@ +This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc new file mode 100644 index 000000000..a9eae8124 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc @@ -0,0 +1,3 @@ +#!/bin/bash +java "jmc" +echo "jmc mac $*" diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/Resources/mission_control.icns b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/Resources/mission_control.icns new file mode 100644 index 000000000..e69de29bb diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt new file mode 100644 index 000000000..6308c936c --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt @@ -0,0 +1 @@ +legal \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt new file mode 100644 index 000000000..6de7b8c69 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt @@ -0,0 +1 @@ +This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt new file mode 100644 index 000000000..980a0d5f1 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt @@ -0,0 +1 @@ +Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc new file mode 100644 index 000000000..4312a5cd6 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc @@ -0,0 +1,3 @@ +#!/bin/bash +java "jmc" +echo "jmc windows $*" diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd new file mode 100644 index 000000000..3f7cae498 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd @@ -0,0 +1,3 @@ +@echo off +call java jmc +echo jmc windows %* \ No newline at end of file From df57163574e5383816a17d373dfa6eae36d108f5 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 5 Mar 2024 15:05:17 +0100 Subject: [PATCH 14/35] Tests implemented and working --- .../tools/ide/tool/jasypt/JasyptTest.java | 47 +++++++++---------- .../_ide/urls/jasypt/jasypt/1.9.3/status.json | 10 ++++ .../jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls | 1 + .../_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 | 1 + .../_ide/urls/mvn/mvn/3.9.6/status.json | 10 ++++ .../jasypt/_ide/urls/mvn/mvn/3.9.6/urls | 1 + .../_ide/urls/mvn/mvn/3.9.6/urls.sha256 | 1 + .../jasypt/project/settings/ide.properties | 6 ++- .../jasypt/jasypt/default/InstallTest.txt | 1 + .../jasypt/default/META-INF/HelloWorld.txt | 1 + .../jasypt/jasypt/default/org/HelloWorld.txt | 1 + .../jasypt/repository/mvn/mvn/default/bin/mvn | 2 + .../repository/mvn/mvn/default/bin/mvn.cmd | 2 + 13 files changed, 58 insertions(+), 26 deletions(-) create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index 866011450..1ec8ade26 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -1,31 +1,30 @@ package com.devonfw.tools.ide.tool.jasypt; -import java.io.IOException; -import java.util.List; - -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - import com.devonfw.tools.ide.commandlet.InstallCommandlet; import com.devonfw.tools.ide.context.AbstractIdeContextTest; import com.devonfw.tools.ide.context.IdeTestContext; import com.devonfw.tools.ide.log.IdeLogLevel; import com.devonfw.tools.ide.os.SystemInfo; import com.devonfw.tools.ide.os.SystemInfoMock; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + +import java.io.IOException; +import java.util.List; /** * Integration test of {@link Jasypt}. */ public class JasyptTest extends AbstractIdeContextTest { - private static final String PROJECT_JMC = "jasypt"; + private static final String PROJECT_JASYPT = "jasypt"; @Test public void testJasyptInstallCommandlet() throws IOException { // arrange - IdeTestContext context = newContext(PROJECT_JMC); + IdeTestContext context = newContext(PROJECT_JASYPT); InstallCommandlet install = context.getCommandletManager().getCommandlet(InstallCommandlet.class); install.tool.setValueAsString("jasypt", context); // act @@ -39,7 +38,7 @@ public void testJasyptInstallCommandlet() throws IOException { public void testJasyptInstall() { // arrange - IdeTestContext context = newContext(PROJECT_JMC); + IdeTestContext context = newContext(PROJECT_JASYPT); Jasypt commandlet = new Jasypt(context); @@ -50,14 +49,13 @@ public void testJasyptInstall() { checkInstallation(context); } - @ParameterizedTest - @ValueSource(strings = { "windows", "mac", "linux" }) - public void testJasyptRun(String os) { + @Test + public void testJasyptRun() { // arrange - IdeTestContext context = newContext(PROJECT_JMC); - SystemInfo systemInfo = SystemInfoMock.of(os); - context.setSystemInfo(systemInfo); + IdeTestContext context = newContext(PROJECT_JASYPT); + //SystemInfo systemInfo = SystemInfoMock.of(os); + // context.setSystemInfo(systemInfo); Jasypt commandlet = new Jasypt(context); commandlet.arguments.setValue(List.of("foo", "bar")); // act @@ -65,22 +63,21 @@ public void testJasyptRun(String os) { // assert assertLogMessage(context, IdeLogLevel.INFO, "java jasypt"); - assertLogMessage(context, IdeLogLevel.INFO, "jasypt " + os + " foo bar"); + //assertLogMessage(context, IdeLogLevel.INFO, "jasypt " + os + " foo bar"); checkInstallation(context); } private void checkInstallation(IdeTestContext context) { assertThat(context.getSoftwarePath().resolve("java/bin/java")).exists(); + assertThat(context.getSoftwarePath().resolve("mvn/bin/mvn")).exists(); + + assertThat(context.getSoftwarePath().resolve("jasypt/META-INF/HelloWorld.txt")).hasContent("Hello World!"); + assertThat(context.getSoftwarePath().resolve("jasypt/org/HelloWorld.txt")).hasContent("Hello World!"); + assertThat(context.getSoftwarePath().resolve("jasypt/JDK Mission Control")).doesNotExist(); - if (context.getSystemInfo().isWindows() || context.getSystemInfo().isLinux()) { - assertThat(context.getSoftwarePath().resolve("jasypt/HelloWorld.txt")).hasContent("Hello World!"); - assertThat(context.getSoftwarePath().resolve("jasypt/JDK Mission Control")).doesNotExist(); - } else if (context.getSystemInfo().isMac()) { - assertThat(context.getSoftwarePath().resolve("jasypt/jasypt")).exists(); - } - assertThat(context.getSoftwarePath().resolve("jasypt/.ide.software.version")).exists().hasContent("8.3.0"); - assertLogMessage(context, IdeLogLevel.SUCCESS, "Successfully installed jasypt in version 8.3.0"); + assertThat(context.getSoftwarePath().resolve("jasypt/.ide.software.version")).exists().hasContent("1.9.3"); + assertLogMessage(context, IdeLogLevel.SUCCESS, "Successfully installed jasypt in version 1.9.3"); } } diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json new file mode 100644 index 000000000..a5cf607b9 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json @@ -0,0 +1,10 @@ +{ + "manual" : false, + "urls" : { + "55042423" : { + "success" : { + "timestamp" : "2024-02-13T17:38:27.770091500Z" + } + } + } +} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls new file mode 100644 index 000000000..33e3e6cc0 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls @@ -0,0 +1 @@ +https://repo1.maven.org/maven2/org/jasypt/jasypt/1.9.3/jasypt-1.9.3.jar diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 new file mode 100644 index 000000000..e215f2c24 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 @@ -0,0 +1 @@ +f481fbb8dd8ce754bfde7552af4fcbe8c5e303d53663bb3d8ce9d4338e0e55aa diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json new file mode 100644 index 000000000..b4f50bcdf --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json @@ -0,0 +1,10 @@ +{ + "manual" : false, + "urls" : { + "1199796863" : { + "success" : { + "timestamp" : "2023-12-02T03:34:21.698982214Z" + } + } + } +} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls new file mode 100644 index 000000000..b817f3b13 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls @@ -0,0 +1 @@ +https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 new file mode 100644 index 000000000..1e15cf448 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 @@ -0,0 +1 @@ +6eedd2cae3626d6ad3a5c9ee324bd265853d64297f07f033430755bd0e0c3a4b diff --git a/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties b/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties index 31d77e550..5f2fdcbf8 100644 --- a/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties +++ b/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties @@ -1,2 +1,6 @@ JAVA_VERSION=17.0.10_7 -JMC_VERSION=8.3.0 \ No newline at end of file +JASYPT_VERSION=1.9.3 +JMC_VERSION=8.3.0 +MVN_VERSION=3.9.6 + +M2_REPO=~/.m2/repository \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt new file mode 100644 index 000000000..6de7b8c69 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt @@ -0,0 +1 @@ +This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt new file mode 100644 index 000000000..980a0d5f1 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt @@ -0,0 +1 @@ +Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt new file mode 100644 index 000000000..980a0d5f1 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt @@ -0,0 +1 @@ +Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn new file mode 100644 index 000000000..6ff946514 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn @@ -0,0 +1,2 @@ +#!/bin/bash +echo "mvn $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd new file mode 100644 index 000000000..f61dc95c8 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd @@ -0,0 +1,2 @@ +@echo off +echo mvn %* \ No newline at end of file From 8bc5f165d4b355818d500c9a66904db15d3671bf Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 5 Mar 2024 16:51:31 +0100 Subject: [PATCH 15/35] tests correctly implemented --- .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 2 +- .../tools/ide/tool/jasypt/JasyptTest.java | 71 +++++++++---------- .../repository/java/java/default/bin/java | 1 + .../repository/java/java/default/bin/java.cmd | 1 + .../jasypt/repository/mvn/mvn/default/bin/mvn | 1 + .../repository/mvn/mvn/default/bin/mvn.cmd | 1 + 6 files changed, 38 insertions(+), 39 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 5fcc895b6..50162d20a 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -54,7 +54,7 @@ public void run() { } else if (args.length == 3 && args[0].equals("decrypt")) { doJasypt(CLASS_NAME_DECRYPTION, args); } else { - this.context.warning("Unknown arguments "); + this.context.warning("Unknown arguments"); this.context.info(USAGE_INFO); } } diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index 1ec8ade26..92f50c413 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -1,16 +1,10 @@ package com.devonfw.tools.ide.tool.jasypt; -import com.devonfw.tools.ide.commandlet.InstallCommandlet; import com.devonfw.tools.ide.context.AbstractIdeContextTest; import com.devonfw.tools.ide.context.IdeTestContext; import com.devonfw.tools.ide.log.IdeLogLevel; -import com.devonfw.tools.ide.os.SystemInfo; -import com.devonfw.tools.ide.os.SystemInfoMock; import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; -import java.io.IOException; import java.util.List; /** @@ -21,61 +15,62 @@ public class JasyptTest extends AbstractIdeContextTest { private static final String PROJECT_JASYPT = "jasypt"; @Test - public void testJasyptInstallCommandlet() throws IOException { + public void testJasypt() { // arrange IdeTestContext context = newContext(PROJECT_JASYPT); - InstallCommandlet install = context.getCommandletManager().getCommandlet(InstallCommandlet.class); - install.tool.setValueAsString("jasypt", context); - // act - install.run(); + Jasypt commandlet = new Jasypt(context); + + // act install + commandlet.install(); - // assert + // assert install + assertLogMessage(context, IdeLogLevel.INFO, "executing mvn:"); // assert postInstall() checkInstallation(context); + + // act and assert run + runNoArgs(context, commandlet, null); + runRightArgs(context, commandlet, List.of("encrypt", "master", "secret")); + runRightArgs(context, commandlet, List.of("decrypt", "master", "secret")); + runWrongArgs(context, commandlet, List.of("wrong args")); } - @Test - public void testJasyptInstall() { + public void runNoArgs(IdeTestContext context, Jasypt commandlet, List arguments) { - // arrange - IdeTestContext context = newContext(PROJECT_JASYPT); + String expectedMessage = """ + Jasypt encryption tool + Usage: + encrypt encrypt a secret with a master-password + decrypt decrypt an encrypted secret with a master-password + """; + commandlet.arguments.setValue(arguments); + commandlet.run(); + assertLogMessage(context, IdeLogLevel.INFO, expectedMessage); + } - Jasypt commandlet = new Jasypt(context); + public void runWrongArgs(IdeTestContext context, Jasypt commandlet, List arguments) { - // act - commandlet.install(); - - // assert - checkInstallation(context); + commandlet.arguments.setValue(arguments); + commandlet.run(); + assertLogMessage(context, IdeLogLevel.WARNING, "Unknown arguments"); } - @Test - public void testJasyptRun() { + public void runRightArgs(IdeTestContext context, Jasypt commandlet, List arguments) { - // arrange - IdeTestContext context = newContext(PROJECT_JASYPT); - //SystemInfo systemInfo = SystemInfoMock.of(os); - // context.setSystemInfo(systemInfo); - Jasypt commandlet = new Jasypt(context); - commandlet.arguments.setValue(List.of("foo", "bar")); - // act + commandlet.arguments.setValue(arguments); commandlet.run(); - - // assert - assertLogMessage(context, IdeLogLevel.INFO, "java jasypt"); - //assertLogMessage(context, IdeLogLevel.INFO, "jasypt " + os + " foo bar"); - checkInstallation(context); + assertLogMessage(context, IdeLogLevel.INFO, "executing java:"); } private void checkInstallation(IdeTestContext context) { + // dependencies assertThat(context.getSoftwarePath().resolve("java/bin/java")).exists(); assertThat(context.getSoftwarePath().resolve("mvn/bin/mvn")).exists(); + // commandlet assertThat(context.getSoftwarePath().resolve("jasypt/META-INF/HelloWorld.txt")).hasContent("Hello World!"); assertThat(context.getSoftwarePath().resolve("jasypt/org/HelloWorld.txt")).hasContent("Hello World!"); - assertThat(context.getSoftwarePath().resolve("jasypt/JDK Mission Control")).doesNotExist(); - assertThat(context.getSoftwarePath().resolve("jasypt/.ide.software.version")).exists().hasContent("1.9.3"); assertLogMessage(context, IdeLogLevel.SUCCESS, "Successfully installed jasypt in version 1.9.3"); } diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java index 0aa8af9dc..5306396c9 100644 --- a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java +++ b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java @@ -1,2 +1,3 @@ #!/bin/bash +echo "executing java:" echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd index bbaac3802..7098ed14f 100644 --- a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd +++ b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd @@ -1,2 +1,3 @@ @echo off +echo executing java: echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn index 6ff946514..99f64fd83 100644 --- a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn +++ b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn @@ -1,2 +1,3 @@ #!/bin/bash +echo "executing mvn:" echo "mvn $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd index f61dc95c8..2cf033c8f 100644 --- a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd +++ b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd @@ -1,2 +1,3 @@ @echo off +echo executing mvn: echo mvn %* \ No newline at end of file From 8b0e0d9dbd03079c13252c021a92b33a3621720c Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 5 Mar 2024 17:03:49 +0100 Subject: [PATCH 16/35] code cleanup jasypt --- .../java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 50162d20a..f8ac15bf3 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -63,9 +63,7 @@ public void run() { public boolean doInstall(boolean silent) { getCommandlet(Java.class).install(); - /* if (Files.notExists(resolveJasyptJarPath())) { - installJasyptArtifact(); - }*/ + return super.doInstall(silent); } @@ -76,9 +74,7 @@ public void postInstall() { if (Files.notExists(resolveJasyptJarPath())) { installJasyptArtifact(); - this.context.debug("installing jasypt artifact at:"); } - this.context.debug("post install "); } private void installJasyptArtifact() { @@ -87,6 +83,7 @@ private void installJasyptArtifact() { mvn.install(); mvn.runTool(null, "org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get", "-Dartifact=org.jasypt:jasypt:" + getInstalledVersion().toString()); + this.context.debug("installing jasypt artifact in: " + resolveJasyptJarPath()); } private void doJasypt(String className, String[] args) { From e411d3ee7811c0993b3023e66f0677a4cf7eb71f Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 6 Mar 2024 10:06:39 +0100 Subject: [PATCH 17/35] updates access rights executables --- .../ide-projects/jasypt/repository/java/java/default/bin/java | 0 .../ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java mode change 100644 => 100755 cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java old mode 100644 new mode 100755 diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn old mode 100644 new mode 100755 From 13e78b887f3eb07d66b842f37082dd6273541070 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 6 Mar 2024 15:33:14 +0100 Subject: [PATCH 18/35] small error check and code refactoring --- .../com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 10 ++++------ .../devonfw/tools/ide/tool/jasypt/JasyptTest.java | 14 ++++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index f8ac15bf3..8454b86b3 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -50,9 +50,9 @@ public void run() { if (args.length == 0) { this.context.info(USAGE_INFO); } else if (args.length == 3 && args[0].equals("encrypt")) { - doJasypt(CLASS_NAME_ENCRYPTION, args); + runJasypt(CLASS_NAME_ENCRYPTION, args); } else if (args.length == 3 && args[0].equals("decrypt")) { - doJasypt(CLASS_NAME_DECRYPTION, args); + runJasypt(CLASS_NAME_DECRYPTION, args); } else { this.context.warning("Unknown arguments"); this.context.info(USAGE_INFO); @@ -81,12 +81,12 @@ private void installJasyptArtifact() { Mvn mvn = getCommandlet(Mvn.class); mvn.install(); + this.context.debug("installing jasypt artifact in: " + resolveJasyptJarPath()); mvn.runTool(null, "org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get", "-Dartifact=org.jasypt:jasypt:" + getInstalledVersion().toString()); - this.context.debug("installing jasypt artifact in: " + resolveJasyptJarPath()); } - private void doJasypt(String className, String[] args) { + private void runJasypt(String className, String[] args) { Java java = getCommandlet(Java.class); java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, ALGORITHM, GENERATOR_CLASS_NAME, @@ -102,5 +102,3 @@ private Path resolveJasyptJarPath() { } } - - diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index 92f50c413..d087a213b 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -21,14 +21,13 @@ public void testJasypt() { IdeTestContext context = newContext(PROJECT_JASYPT); Jasypt commandlet = new Jasypt(context); - // act install + // act - install commandlet.install(); - // assert install - assertLogMessage(context, IdeLogLevel.INFO, "executing mvn:"); // assert postInstall() + // assert - install checkInstallation(context); - // act and assert run + // act and assert - run runNoArgs(context, commandlet, null); runRightArgs(context, commandlet, List.of("encrypt", "master", "secret")); runRightArgs(context, commandlet, List.of("decrypt", "master", "secret")); @@ -64,11 +63,14 @@ public void runRightArgs(IdeTestContext context, Jasypt commandlet, List private void checkInstallation(IdeTestContext context) { - // dependencies + // install - java assertThat(context.getSoftwarePath().resolve("java/bin/java")).exists(); + + // postInstall - mvn + assertLogMessage(context, IdeLogLevel.INFO, "executing mvn:"); assertThat(context.getSoftwarePath().resolve("mvn/bin/mvn")).exists(); - // commandlet + // commandlet - jasypt assertThat(context.getSoftwarePath().resolve("jasypt/META-INF/HelloWorld.txt")).hasContent("Hello World!"); assertThat(context.getSoftwarePath().resolve("jasypt/org/HelloWorld.txt")).hasContent("Hello World!"); assertThat(context.getSoftwarePath().resolve("jasypt/.ide.software.version")).exists().hasContent("1.9.3"); From 8b872e3c9ce5596d18ace3573a3050ea30c5be70 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Wed, 6 Mar 2024 18:27:13 +0100 Subject: [PATCH 19/35] removes jmc reference in testinfrastruktur --- .../_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 | 1 - .../_ide/urls/jmc/jmc/8.3.0/linux_x64.urls | 1 - .../_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 | 1 - .../_ide/urls/jmc/jmc/8.3.0/mac_x64.urls | 1 - .../_ide/urls/jmc/jmc/8.3.0/status.json | 20 ------------------- .../_ide/urls/jmc/jmc/8.3.0/windows_x64.urls | 1 - .../jmc/jmc/8.3.0/windows_x64.urls.sha256 | 1 - .../jmc/jmc/default/linux/InstallTest.txt | 1 - .../linux/JDK Mission Control/HelloWorld.txt | 1 - .../jmc/default/linux/JDK Mission Control/jmc | 3 --- .../jmc/jmc/default/mac/InstallTest.txt | 1 - .../Contents/MacOS/jmc | 3 --- .../Contents/Resources/mission_control.icns | 0 .../jmc/jmc/default/mac/legal/legal.txt | 1 - .../jmc/jmc/default/windows/InstallTest.txt | 1 - .../JDK Mission Control/HelloWorld.txt | 1 - .../default/windows/JDK Mission Control/jmc | 3 --- .../windows/JDK Mission Control/jmc.cmd | 3 --- 18 files changed, 44 deletions(-) delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/Resources/mission_control.icns delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 deleted file mode 100644 index ba966d272..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.sha256 +++ /dev/null @@ -1 +0,0 @@ -cf666655da9bc097a7413af6cc5e9d930bc1f9267410613707f5e4aa724e3bf9 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls deleted file mode 100644 index 57920ab67..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/linux_x64.urls +++ /dev/null @@ -1 +0,0 @@ -http://localhost:1112/jmcTest/linux \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 deleted file mode 100644 index 628ce170c..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.sha256 +++ /dev/null @@ -1 +0,0 @@ -44036f764b9b3ac0e788499ab9f3746bfac47ed09f4c464423a582f5698cabc8 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls deleted file mode 100644 index 9d3d0a85c..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/mac_x64.urls +++ /dev/null @@ -1 +0,0 @@ -http://localhost:1112/jmcTest/macOS \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json deleted file mode 100644 index b58452d90..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/status.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "manual" : true, - "urls" : { - "-680270697" : { - "success" : { - "timestamp" : "2023-04-28T16:27:32.819394600Z" - } - }, - "-896197542" : { - "success" : { - "timestamp" : "2023-04-28T16:27:47.658175400Z" - } - }, - "-310367019" : { - "success" : { - "timestamp" : "2023-04-28T16:28:02.221367500Z" - } - } - } -} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls deleted file mode 100644 index 520aaac8d..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls +++ /dev/null @@ -1 +0,0 @@ -http://localhost:1112/jmcTest/windows \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 deleted file mode 100644 index 83cc5866b..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jmc/jmc/8.3.0/windows_x64.urls.sha256 +++ /dev/null @@ -1 +0,0 @@ -5cbb836ceb159788f03aed5d2da9debb8fa269139dc0e1f6ffff671ac5367e6b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt deleted file mode 100644 index 6de7b8c69..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/InstallTest.txt +++ /dev/null @@ -1 +0,0 @@ -This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt deleted file mode 100644 index 980a0d5f1..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/HelloWorld.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc deleted file mode 100644 index 40d7ae899..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/linux/JDK Mission Control/jmc +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -java "jmc" -echo "jmc linux $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt deleted file mode 100644 index 6de7b8c69..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/InstallTest.txt +++ /dev/null @@ -1 +0,0 @@ -This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc deleted file mode 100644 index a9eae8124..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/MacOS/jmc +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -java "jmc" -echo "jmc mac $*" diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/Resources/mission_control.icns b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/JDK Mission Control.app/Contents/Resources/mission_control.icns deleted file mode 100644 index e69de29bb..000000000 diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt deleted file mode 100644 index 6308c936c..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/mac/legal/legal.txt +++ /dev/null @@ -1 +0,0 @@ -legal \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt deleted file mode 100644 index 6de7b8c69..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/InstallTest.txt +++ /dev/null @@ -1 +0,0 @@ -This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt deleted file mode 100644 index 980a0d5f1..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/HelloWorld.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc deleted file mode 100644 index 4312a5cd6..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -java "jmc" -echo "jmc windows $*" diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd deleted file mode 100644 index 3f7cae498..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jmc/jmc/default/windows/JDK Mission Control/jmc.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -call java jmc -echo jmc windows %* \ No newline at end of file From 0593e4810828b29d39b0608bb4f3f2b256d4d3fb Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Mon, 11 Mar 2024 13:39:09 +0100 Subject: [PATCH 20/35] changes constants from public to private --- .../java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 8454b86b3..91d42a859 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -24,13 +24,13 @@ public class Jasypt extends LocalToolCommandlet { decrypt decrypt an encrypted secret with a master-password """; - public static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; + private static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; - public static final String CLASS_NAME_DECRYPTION = "org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI"; + private static final String CLASS_NAME_DECRYPTION = "org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI"; - public static final String ALGORITHM = "algorithm=PBEWITHHMACSHA512ANDAES_256"; + private static final String ALGORITHM = "algorithm=PBEWITHHMACSHA512ANDAES_256"; - public static final String GENERATOR_CLASS_NAME = "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator"; + private static final String GENERATOR_CLASS_NAME = "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator"; /** * The constructor. From b25c71e8bd784c87b7e2ff19f094fbe79282c36b Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Fri, 15 Mar 2024 12:14:23 +0100 Subject: [PATCH 21/35] refactors code after review --- .../AbstractEnvironmentVariables.java | 2 +- .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 110 +++++++++++++----- .../tools/ide/tool/jasypt/JasyptCommand.java | 8 ++ .../tools/ide/variable/IdeVariables.java | 5 +- cli/src/main/resources/nls/Ide.properties | 1 + 5 files changed, 94 insertions(+), 32 deletions(-) create mode 100644 cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/JasyptCommand.java diff --git a/cli/src/main/java/com/devonfw/tools/ide/environment/AbstractEnvironmentVariables.java b/cli/src/main/java/com/devonfw/tools/ide/environment/AbstractEnvironmentVariables.java index 4b8bd6551..99bf6d1fe 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/environment/AbstractEnvironmentVariables.java +++ b/cli/src/main/java/com/devonfw/tools/ide/environment/AbstractEnvironmentVariables.java @@ -270,7 +270,7 @@ protected String getValue(String name) { if (!name.equals(key)) { value = this.parent.get(key); } - if (value != null) { + if (value == null) { value = var.getDefaultValueAsString(this.context); } } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 91d42a859..ec183a14e 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -1,28 +1,28 @@ package com.devonfw.tools.ide.tool.jasypt; +import java.nio.file.Path; +import java.util.Set; + import com.devonfw.tools.ide.common.Tag; import com.devonfw.tools.ide.context.IdeContext; +import com.devonfw.tools.ide.property.EnumProperty; +import com.devonfw.tools.ide.property.StringProperty; import com.devonfw.tools.ide.tool.LocalToolCommandlet; import com.devonfw.tools.ide.tool.ToolCommandlet; import com.devonfw.tools.ide.tool.java.Java; import com.devonfw.tools.ide.tool.mvn.Mvn; -import java.nio.file.Files; -import java.nio.file.Path; -import java.util.Set; - /** * {@link ToolCommandlet} for Jasypt, The java library which allows to add basic * encryption capabilities with minimum effort. */ public class Jasypt extends LocalToolCommandlet { - private static final String USAGE_INFO = """ - Jasypt encryption tool - Usage: - encrypt encrypt a secret with a master-password - decrypt decrypt an encrypted secret with a master-password - """; + public final EnumProperty command; + + public final StringProperty masterPassword; + public final StringProperty secret; + private static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; @@ -39,24 +39,54 @@ public class Jasypt extends LocalToolCommandlet { */ public Jasypt(IdeContext context) { + super(context, "jasypt", Set.of(Tag.JAVA)); + + + + this.command = add(new EnumProperty<>("", true, "command", JasyptCommand.class)); + this.masterPassword=add(new StringProperty("", true, "masterPassword")); + this.secret=add(new StringProperty("", true, "secret")); + //add(this.arguments); + + } + + @Override + protected void initProperties() { + + // Empty on purpose } @Override public void run() { - String[] args = this.arguments.asArray(); - - if (args.length == 0) { - this.context.info(USAGE_INFO); - } else if (args.length == 3 && args[0].equals("encrypt")) { - runJasypt(CLASS_NAME_ENCRYPTION, args); - } else if (args.length == 3 && args[0].equals("decrypt")) { - runJasypt(CLASS_NAME_DECRYPTION, args); - } else { - this.context.warning("Unknown arguments"); - this.context.info(USAGE_INFO); + JasyptCommand command = this.command.getValue(); + + switch (command) { + case ENCRYPT: + runJasypt(CLASS_NAME_ENCRYPTION); + break; + case DECRYPT: + runJasypt(CLASS_NAME_DECRYPTION); + break; + + default: } + + + +// String[] args = this.arguments.asArray(); +// +// if (args.length == 0) { +// this.context.info(USAGE_INFO); +// } else if (args.length == 3 && args[0].equals("encrypt")) { +// runJasypt(CLASS_NAME_ENCRYPTION, args); +// } else if (args.length == 3 && args[0].equals("decrypt")) { +// runJasypt(CLASS_NAME_DECRYPTION, args); +// } else { +// this.context.warning("Unknown arguments"); +// this.context.info(USAGE_INFO); +// } } @Override @@ -67,14 +97,20 @@ public boolean doInstall(boolean silent) { return super.doInstall(silent); } + @Override + protected boolean isExtract() { + + return false; + } + @Override public void postInstall() { super.postInstall(); - if (Files.notExists(resolveJasyptJarPath())) { - installJasyptArtifact(); - } +// if (Files.notExists(resolveJasyptJarPath())) { +// installJasyptArtifact(); +// } } private void installJasyptArtifact() { @@ -86,19 +122,33 @@ private void installJasyptArtifact() { "-Dartifact=org.jasypt:jasypt:" + getInstalledVersion().toString()); } - private void runJasypt(String className, String[] args) { + private void runJasypt(String className) { Java java = getCommandlet(Java.class); - java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, ALGORITHM, GENERATOR_CLASS_NAME, - "password=" + args[1], "input=" + args[2]); + + //this.context.getVariables().set("JASYPT_OPTS", "algorithm=PBEWITHHMACSHA512ANDAES_256", false); + + +// EnvironmentVariables variables = this.context.getVariables(); +// EnvironmentVariables typeVariables = variables.getByType(EnvironmentVariablesType.CONF); +// typeVariables.set("JASYPT_OPTS", "algorithm=PBEWITHHMACSHA512ANDAES_256", false); +// typeVariables.save(); + + String[] jasyptOptions = this.context.getVariables().get("JASYPT_OPTS").split(" "); + //String jasyptAlgorithm2 = IdeVariables.JASYPT_OPTS.get(context); + //String jaspaglo3 = IdeVariables.get("JASYPT_OPTS").getDefaultValueAsString(context); + + + + java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, jasyptOptions[0], jasyptOptions[1], + "password=" + this.masterPassword.getValue(), "input=" + this.secret.getValue()); } private Path resolveJasyptJarPath() { - Path m2Repo = context.getVariables().getPath("M2_REPO"); + Path toolPath = this.getToolPath(); String installedVersion = getInstalledVersion().toString(); - return m2Repo.resolve("org").resolve("jasypt").resolve("jasypt").resolve(installedVersion) - .resolve("jasypt-" + installedVersion + ".jar"); + return toolPath.resolve("jasypt-" + installedVersion + ".jar"); } } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/JasyptCommand.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/JasyptCommand.java new file mode 100644 index 000000000..9aa914dd5 --- /dev/null +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/JasyptCommand.java @@ -0,0 +1,8 @@ +package com.devonfw.tools.ide.tool.jasypt; + +/** + * Represents commands for controlling a jasypt operation in The{@link Jasypt} Tool. + */ +public enum JasyptCommand { + ENCRYPT, DECRYPT +} diff --git a/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java b/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java index c6d6d9fa2..f89139bec 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java +++ b/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java @@ -49,9 +49,12 @@ public interface IdeVariables { /** {@link VariableDefinition} for {@link com.devonfw.tools.ide.context.IdeContext#getWorkspaceName() WORKSPACE}. */ VariableDefinitionString GRAALVM_EDITION = new VariableDefinitionString("GRAALVM_EDITION", null, c -> "community"); + /** {@link VariableDefinition} for options of jasypt */ + VariableDefinitionString JASYPT_OPTS = new VariableDefinitionString("JASYPT_OPTS", null, c -> "algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator"); + /** A {@link Collection} with all pre-defined {@link VariableDefinition}s. */ Collection> VARIABLES = List.of(PATH, HOME, WORKSPACE_PATH, IDE_HOME, IDE_ROOT, WORKSPACE, - IDE_TOOLS, CREATE_START_SCRIPTS, IDE_MIN_VERSION, MVN_VERSION, DOCKER_EDITION, GRAALVM_EDITION); + IDE_TOOLS, CREATE_START_SCRIPTS, IDE_MIN_VERSION, MVN_VERSION, DOCKER_EDITION, GRAALVM_EDITION, JASYPT_OPTS); /** * @param name the name of the requested {@link VariableDefinition}. diff --git a/cli/src/main/resources/nls/Ide.properties b/cli/src/main/resources/nls/Ide.properties index 2012d3a71..38f9315fe 100644 --- a/cli/src/main/resources/nls/Ide.properties +++ b/cli/src/main/resources/nls/Ide.properties @@ -37,6 +37,7 @@ cmd-sonar=Tool commandlet for SonarQube val-args=The commandline arguments to pass to the tool. val-edition=The tool edition. val-sonar-command=START|STOP|ANALYZE +val-jasypt-command=ENCRYPT|DECRYPT val-tool=The tool commandlet to select. val-version=The tool version val-set-version-version=The tool version to set. From 80987d48659a211d04b9deff949224ebaa0e5b0a Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Fri, 15 Mar 2024 15:25:10 +0100 Subject: [PATCH 22/35] adds tag for encryption and class PasswordProperties --- .../com/devonfw/tools/ide/common/Tag.java | 7 +++++++ .../tools/ide/property/PasswordProperty.java | 19 +++++++++++++++++++ .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 16 ++++++++-------- 3 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java diff --git a/cli/src/main/java/com/devonfw/tools/ide/common/Tag.java b/cli/src/main/java/com/devonfw/tools/ide/common/Tag.java index d7ef85640..1eda29dcf 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/common/Tag.java +++ b/cli/src/main/java/com/devonfw/tools/ide/common/Tag.java @@ -293,6 +293,7 @@ public final class Tag { /** {@link #Tag} for github. */ public static final Tag GITHUB = create("github", GIT); + /** {@link #Tag} for diff (tools that compare files and determine the difference). */ public static final Tag DIFF = create("diff", CONFIG_MANAGEMENT, false, "patch"); @@ -311,6 +312,12 @@ public final class Tag { /** {@link #Tag} for Linux. */ public static final Tag LINUX = create("linux", OS, false); + /** {@link #getParent() Parent} for cryptography. */ + public static final Tag CRYPTO = create("cryptography", ROOT, false, "crypto"); + + /** {@link #Tag} for encryption. */ + public static final Tag ENCRYPTION = create("encryption", CRYPTO); + private final String id; private final Tag parent; diff --git a/cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java b/cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java new file mode 100644 index 000000000..9898258bd --- /dev/null +++ b/cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java @@ -0,0 +1,19 @@ +package com.devonfw.tools.ide.property; + +/** + * {@link Property} with {@link #getValueType() value type} {@link String} representing a password. + */ +public class PasswordProperty extends StringProperty { + + /** + * The constructor. + * + * @param name the {@link #getName() property name}. + * @param required the {@link #isRequired() required flag}. + * @param alias the {@link #getAlias() property alias}. + */ + public PasswordProperty(String name, boolean required, String alias) { + super(name, required, alias); + } + +} diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index ec183a14e..b3ab0e20f 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -6,7 +6,7 @@ import com.devonfw.tools.ide.common.Tag; import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.property.EnumProperty; -import com.devonfw.tools.ide.property.StringProperty; +import com.devonfw.tools.ide.property.PasswordProperty; import com.devonfw.tools.ide.tool.LocalToolCommandlet; import com.devonfw.tools.ide.tool.ToolCommandlet; import com.devonfw.tools.ide.tool.java.Java; @@ -18,10 +18,10 @@ */ public class Jasypt extends LocalToolCommandlet { - public final EnumProperty command; + private final EnumProperty command; - public final StringProperty masterPassword; - public final StringProperty secret; + private final PasswordProperty masterPassword; + private final PasswordProperty secret; private static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; @@ -40,14 +40,14 @@ public class Jasypt extends LocalToolCommandlet { public Jasypt(IdeContext context) { - super(context, "jasypt", Set.of(Tag.JAVA)); + super(context, "jasypt", Set.of(Tag.JAVA, Tag.ENCRYPTION)); this.command = add(new EnumProperty<>("", true, "command", JasyptCommand.class)); - this.masterPassword=add(new StringProperty("", true, "masterPassword")); - this.secret=add(new StringProperty("", true, "secret")); - //add(this.arguments); + this.masterPassword=add(new PasswordProperty("", true, "masterPassword")); + this.secret=add(new PasswordProperty("", true, "secret")); + add(this.arguments); } From d93fa4a2564432cb99ee486ad088ea382b93eb2e Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Fri, 15 Mar 2024 15:53:44 +0100 Subject: [PATCH 23/35] code cleanup --- .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 93 ++++--------------- .../tools/ide/variable/IdeVariables.java | 3 +- 2 files changed, 22 insertions(+), 74 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index b3ab0e20f..9518e0001 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -1,8 +1,5 @@ package com.devonfw.tools.ide.tool.jasypt; -import java.nio.file.Path; -import java.util.Set; - import com.devonfw.tools.ide.common.Tag; import com.devonfw.tools.ide.context.IdeContext; import com.devonfw.tools.ide.property.EnumProperty; @@ -10,7 +7,9 @@ import com.devonfw.tools.ide.tool.LocalToolCommandlet; import com.devonfw.tools.ide.tool.ToolCommandlet; import com.devonfw.tools.ide.tool.java.Java; -import com.devonfw.tools.ide.tool.mvn.Mvn; + +import java.nio.file.Path; +import java.util.Set; /** * {@link ToolCommandlet} for Jasypt, The java library which allows to add basic @@ -21,17 +20,13 @@ public class Jasypt extends LocalToolCommandlet { private final EnumProperty command; private final PasswordProperty masterPassword; - private final PasswordProperty secret; + private final PasswordProperty secret; private static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; private static final String CLASS_NAME_DECRYPTION = "org.jasypt.intf.cli.JasyptPBEStringDecryptionCLI"; - private static final String ALGORITHM = "algorithm=PBEWITHHMACSHA512ANDAES_256"; - - private static final String GENERATOR_CLASS_NAME = "ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator"; - /** * The constructor. * @@ -39,16 +34,12 @@ public class Jasypt extends LocalToolCommandlet { */ public Jasypt(IdeContext context) { - super(context, "jasypt", Set.of(Tag.JAVA, Tag.ENCRYPTION)); - - this.command = add(new EnumProperty<>("", true, "command", JasyptCommand.class)); - this.masterPassword=add(new PasswordProperty("", true, "masterPassword")); - this.secret=add(new PasswordProperty("", true, "secret")); + this.masterPassword = add(new PasswordProperty("", true, "masterPassword")); + this.secret = add(new PasswordProperty("", true, "secret")); add(this.arguments); - } @Override @@ -57,38 +48,6 @@ protected void initProperties() { // Empty on purpose } - @Override - public void run() { - - JasyptCommand command = this.command.getValue(); - - switch (command) { - case ENCRYPT: - runJasypt(CLASS_NAME_ENCRYPTION); - break; - case DECRYPT: - runJasypt(CLASS_NAME_DECRYPTION); - break; - - default: - } - - - -// String[] args = this.arguments.asArray(); -// -// if (args.length == 0) { -// this.context.info(USAGE_INFO); -// } else if (args.length == 3 && args[0].equals("encrypt")) { -// runJasypt(CLASS_NAME_ENCRYPTION, args); -// } else if (args.length == 3 && args[0].equals("decrypt")) { -// runJasypt(CLASS_NAME_DECRYPTION, args); -// } else { -// this.context.warning("Unknown arguments"); -// this.context.info(USAGE_INFO); -// } - } - @Override public boolean doInstall(boolean silent) { @@ -104,43 +63,31 @@ protected boolean isExtract() { } @Override - public void postInstall() { - - super.postInstall(); + public void run() { -// if (Files.notExists(resolveJasyptJarPath())) { -// installJasyptArtifact(); -// } - } + JasyptCommand command = this.command.getValue(); - private void installJasyptArtifact() { + switch (command) { + case ENCRYPT: + runJasypt(CLASS_NAME_ENCRYPTION); + break; + case DECRYPT: + runJasypt(CLASS_NAME_DECRYPTION); + break; - Mvn mvn = getCommandlet(Mvn.class); - mvn.install(); - this.context.debug("installing jasypt artifact in: " + resolveJasyptJarPath()); - mvn.runTool(null, "org.apache.maven.plugins:maven-dependency-plugin:3.1.2:get", - "-Dartifact=org.jasypt:jasypt:" + getInstalledVersion().toString()); + default: + } } private void runJasypt(String className) { Java java = getCommandlet(Java.class); - //this.context.getVariables().set("JASYPT_OPTS", "algorithm=PBEWITHHMACSHA512ANDAES_256", false); - - -// EnvironmentVariables variables = this.context.getVariables(); -// EnvironmentVariables typeVariables = variables.getByType(EnvironmentVariablesType.CONF); -// typeVariables.set("JASYPT_OPTS", "algorithm=PBEWITHHMACSHA512ANDAES_256", false); -// typeVariables.save(); - String[] jasyptOptions = this.context.getVariables().get("JASYPT_OPTS").split(" "); - //String jasyptAlgorithm2 = IdeVariables.JASYPT_OPTS.get(context); - //String jaspaglo3 = IdeVariables.get("JASYPT_OPTS").getDefaultValueAsString(context); - - + String algorithm = jasyptOptions[0]; + String generatorClassName = jasyptOptions[1]; - java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, jasyptOptions[0], jasyptOptions[1], + java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, algorithm, generatorClassName, "password=" + this.masterPassword.getValue(), "input=" + this.secret.getValue()); } diff --git a/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java b/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java index f89139bec..4d2f9a48f 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java +++ b/cli/src/main/java/com/devonfw/tools/ide/variable/IdeVariables.java @@ -50,7 +50,8 @@ public interface IdeVariables { VariableDefinitionString GRAALVM_EDITION = new VariableDefinitionString("GRAALVM_EDITION", null, c -> "community"); /** {@link VariableDefinition} for options of jasypt */ - VariableDefinitionString JASYPT_OPTS = new VariableDefinitionString("JASYPT_OPTS", null, c -> "algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator"); + VariableDefinitionString JASYPT_OPTS = new VariableDefinitionString("JASYPT_OPTS", null, + c -> "algorithm=PBEWITHHMACSHA512ANDAES_256 ivGeneratorClassName=org.jasypt.iv.RandomIvGenerator"); /** A {@link Collection} with all pre-defined {@link VariableDefinition}s. */ Collection> VARIABLES = List.of(PATH, HOME, WORKSPACE_PATH, IDE_HOME, IDE_ROOT, WORKSPACE, From e67dc2d3f8b679fb4d4143d03454cd4a3f6f9b5a Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Mon, 18 Mar 2024 12:40:01 +0100 Subject: [PATCH 24/35] refactors tests --- .../jasypt/repository/jasypt/jasypt/default/InstallTest.txt | 1 - .../repository/jasypt/jasypt/default/META-INF/HelloWorld.txt | 1 - .../jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt | 1 - .../jasypt/repository/java/java/default/bin/java.cmd | 3 --- .../ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn | 3 --- .../ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd | 3 --- 6 files changed, 12 deletions(-) delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd delete mode 100755 cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt deleted file mode 100644 index 6de7b8c69..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/InstallTest.txt +++ /dev/null @@ -1 +0,0 @@ -This is a test file. diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt deleted file mode 100644 index 980a0d5f1..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/META-INF/HelloWorld.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt deleted file mode 100644 index 980a0d5f1..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/org/HelloWorld.txt +++ /dev/null @@ -1 +0,0 @@ -Hello World! diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd deleted file mode 100644 index 7098ed14f..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -echo executing java: -echo java %* \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn deleted file mode 100755 index 99f64fd83..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -echo "executing mvn:" -echo "mvn $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd b/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd deleted file mode 100644 index 2cf033c8f..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/mvn/mvn/default/bin/mvn.cmd +++ /dev/null @@ -1,3 +0,0 @@ -@echo off -echo executing mvn: -echo mvn %* \ No newline at end of file From 160f050ca298ab0a3e0ff4af751456001c4ea33d Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Mon, 18 Mar 2024 12:40:20 +0100 Subject: [PATCH 25/35] test refactoring --- .../devonfw/tools/ide/tool/jasypt/JasyptTest.java | 15 +++++---------- .../jasypt/jasypt/1.9.3/.ide.software.version | 1 + .../java/java/17.0.10_7/.ide.software.version | 1 + .../software/default/java/java/17.0.10_7/bin/java | 3 +++ .../jasypt/project/settings/ide.properties | 6 +----- 5 files changed, 11 insertions(+), 15 deletions(-) create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version create mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index d087a213b..6120b12a7 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -28,10 +28,10 @@ public void testJasypt() { checkInstallation(context); // act and assert - run - runNoArgs(context, commandlet, null); - runRightArgs(context, commandlet, List.of("encrypt", "master", "secret")); - runRightArgs(context, commandlet, List.of("decrypt", "master", "secret")); - runWrongArgs(context, commandlet, List.of("wrong args")); + // runNoArgs(context, commandlet, null); + // runRightArgs(context, commandlet, List.of("encrypt", "master", "secret")); + // runRightArgs(context, commandlet, List.of("decrypt", "master", "secret")); + // runWrongArgs(context, commandlet, List.of("wrong args")); } public void runNoArgs(IdeTestContext context, Jasypt commandlet, List arguments) { @@ -66,13 +66,8 @@ private void checkInstallation(IdeTestContext context) { // install - java assertThat(context.getSoftwarePath().resolve("java/bin/java")).exists(); - // postInstall - mvn - assertLogMessage(context, IdeLogLevel.INFO, "executing mvn:"); - assertThat(context.getSoftwarePath().resolve("mvn/bin/mvn")).exists(); - // commandlet - jasypt - assertThat(context.getSoftwarePath().resolve("jasypt/META-INF/HelloWorld.txt")).hasContent("Hello World!"); - assertThat(context.getSoftwarePath().resolve("jasypt/org/HelloWorld.txt")).hasContent("Hello World!"); + assertThat(context.getSoftwarePath().resolve("jasypt/jasypt-default.jar")).hasContent("This is a jar file."); assertThat(context.getSoftwarePath().resolve("jasypt/.ide.software.version")).exists().hasContent("1.9.3"); assertLogMessage(context, IdeLogLevel.SUCCESS, "Successfully installed jasypt in version 1.9.3"); } diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version new file mode 100644 index 000000000..7b0231f53 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version @@ -0,0 +1 @@ +1.9.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version new file mode 100644 index 000000000..80f08e943 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version @@ -0,0 +1 @@ +17.0.10_7 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java new file mode 100644 index 000000000..5306396c9 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java @@ -0,0 +1,3 @@ +#!/bin/bash +echo "executing java:" +echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties b/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties index 5f2fdcbf8..29faea4db 100644 --- a/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties +++ b/cli/src/test/resources/ide-projects/jasypt/project/settings/ide.properties @@ -1,6 +1,2 @@ JAVA_VERSION=17.0.10_7 -JASYPT_VERSION=1.9.3 -JMC_VERSION=8.3.0 -MVN_VERSION=3.9.6 - -M2_REPO=~/.m2/repository \ No newline at end of file +JASYPT_VERSION=1.9.3 \ No newline at end of file From 1629627a668f83a46cadd2e5fb73c3a078c8eae7 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Mon, 18 Mar 2024 13:00:12 +0100 Subject: [PATCH 26/35] implements arguments commandlet --- .../java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 6 +++--- .../java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java | 7 +++++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 9518e0001..0bc25669c 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -17,11 +17,11 @@ */ public class Jasypt extends LocalToolCommandlet { - private final EnumProperty command; + public final EnumProperty command; - private final PasswordProperty masterPassword; + public final PasswordProperty masterPassword; - private final PasswordProperty secret; + public final PasswordProperty secret; private static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index 6120b12a7..aa603b5a9 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -27,6 +27,13 @@ public void testJasypt() { // assert - install checkInstallation(context); + // commandlet.command.setValue(new EnumProperty<>("", true, "command", JasyptCommand.class).getValue()); + commandlet.command.setValue(JasyptCommand.ENCRYPT); + commandlet.masterPassword.setValue("master"); + commandlet.secret.setValue("secret"); + + commandlet.run(); + // act and assert - run // runNoArgs(context, commandlet, null); // runRightArgs(context, commandlet, List.of("encrypt", "master", "secret")); From 32b305f8fafc3f1b469063a3bfd5c23bd491f7b0 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Mon, 18 Mar 2024 16:41:39 +0100 Subject: [PATCH 27/35] code refactoring tests --- .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 5 ++ .../tools/ide/tool/jasypt/JasyptTest.java | 69 +++++++++---------- .../jasypt/jasypt/1.9.3/.ide.software.version | 1 - .../java/java/17.0.10_7/.ide.software.version | 1 - .../default/java/java/17.0.10_7/bin/java | 3 - .../_ide/urls/jasypt/jasypt/1.9.3/status.json | 10 --- .../jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls | 1 - .../_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 | 1 - .../urls/java/java/17.0.6/linux_x64.sha256 | 1 - .../_ide/urls/java/java/17.0.6/linux_x64.urls | 1 - .../_ide/urls/java/java/17.0.6/mac_x64.sha256 | 1 - .../_ide/urls/java/java/17.0.6/mac_x64.urls | 1 - .../_ide/urls/java/java/17.0.6/status.json | 20 ------ .../urls/java/java/17.0.6/windows_x64.urls | 1 - .../java/java/17.0.6/windows_x64.urls.sha256 | 1 - .../_ide/urls/mvn/mvn/3.9.6/status.json | 10 --- .../jasypt/_ide/urls/mvn/mvn/3.9.6/urls | 1 - .../_ide/urls/mvn/mvn/3.9.6/urls.sha256 | 1 - .../repository/java/java/default/bin/java | 2 +- 19 files changed, 38 insertions(+), 93 deletions(-) delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls delete mode 100644 cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 0bc25669c..d73086ef4 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -65,6 +65,11 @@ protected boolean isExtract() { @Override public void run() { + Path toolPath = getToolPath(); + if (!toolPath.toFile().exists()) { + super.install(true); + } + JasyptCommand command = this.command.getValue(); switch (command) { diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index aa603b5a9..cf7b4b6c1 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -1,11 +1,12 @@ package com.devonfw.tools.ide.tool.jasypt; +import com.devonfw.tools.ide.commandlet.InstallCommandlet; import com.devonfw.tools.ide.context.AbstractIdeContextTest; import com.devonfw.tools.ide.context.IdeTestContext; import com.devonfw.tools.ide.log.IdeLogLevel; import org.junit.jupiter.api.Test; -import java.util.List; +import java.io.IOException; /** * Integration test of {@link Jasypt}. @@ -15,57 +16,52 @@ public class JasyptTest extends AbstractIdeContextTest { private static final String PROJECT_JASYPT = "jasypt"; @Test - public void testJasypt() { + public void testJasyptInstallCommandlet() throws IOException { // arrange IdeTestContext context = newContext(PROJECT_JASYPT); - Jasypt commandlet = new Jasypt(context); - - // act - install - commandlet.install(); + InstallCommandlet install = context.getCommandletManager().getCommandlet(InstallCommandlet.class); + install.tool.setValueAsString("jasypt", context); + // act + install.run(); - // assert - install + // assert checkInstallation(context); + } - // commandlet.command.setValue(new EnumProperty<>("", true, "command", JasyptCommand.class).getValue()); - commandlet.command.setValue(JasyptCommand.ENCRYPT); - commandlet.masterPassword.setValue("master"); - commandlet.secret.setValue("secret"); + @Test + public void testJasyptInstall() { - commandlet.run(); + // arrange + IdeTestContext context = newContext(PROJECT_JASYPT); - // act and assert - run - // runNoArgs(context, commandlet, null); - // runRightArgs(context, commandlet, List.of("encrypt", "master", "secret")); - // runRightArgs(context, commandlet, List.of("decrypt", "master", "secret")); - // runWrongArgs(context, commandlet, List.of("wrong args")); - } + Jasypt commandlet = new Jasypt(context); - public void runNoArgs(IdeTestContext context, Jasypt commandlet, List arguments) { + // act + commandlet.install(); - String expectedMessage = """ - Jasypt encryption tool - Usage: - encrypt encrypt a secret with a master-password - decrypt decrypt an encrypted secret with a master-password - """; - commandlet.arguments.setValue(arguments); - commandlet.run(); - assertLogMessage(context, IdeLogLevel.INFO, expectedMessage); + // assert + checkInstallation(context); } - public void runWrongArgs(IdeTestContext context, Jasypt commandlet, List arguments) { + @Test + public void testJasyptRun() { - commandlet.arguments.setValue(arguments); - commandlet.run(); - assertLogMessage(context, IdeLogLevel.WARNING, "Unknown arguments"); - } + // arrange + IdeTestContext context = newContext(PROJECT_JASYPT); + Jasypt commandlet = new Jasypt(context); - public void runRightArgs(IdeTestContext context, Jasypt commandlet, List arguments) { + commandlet.command.setValue(JasyptCommand.ENCRYPT); + commandlet.masterPassword.setValue("master"); + commandlet.secret.setValue("secret"); - commandlet.arguments.setValue(arguments); + // act commandlet.run(); + + // assert assertLogMessage(context, IdeLogLevel.INFO, "executing java:"); + assertLogMessage(context, IdeLogLevel.INFO, "This is a jar file."); + checkInstallation(context); } private void checkInstallation(IdeTestContext context) { @@ -74,9 +70,8 @@ private void checkInstallation(IdeTestContext context) { assertThat(context.getSoftwarePath().resolve("java/bin/java")).exists(); // commandlet - jasypt - assertThat(context.getSoftwarePath().resolve("jasypt/jasypt-default.jar")).hasContent("This is a jar file."); + assertThat(context.getSoftwarePath().resolve("jasypt/jasypt-1.9.3.jar")).hasContent("This is a jar file."); assertThat(context.getSoftwarePath().resolve("jasypt/.ide.software.version")).exists().hasContent("1.9.3"); assertLogMessage(context, IdeLogLevel.SUCCESS, "Successfully installed jasypt in version 1.9.3"); } - } diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version deleted file mode 100644 index 7b0231f53..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/jasypt/jasypt/1.9.3/.ide.software.version +++ /dev/null @@ -1 +0,0 @@ -1.9.3 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version deleted file mode 100644 index 80f08e943..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/.ide.software.version +++ /dev/null @@ -1 +0,0 @@ -17.0.10_7 \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java b/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java deleted file mode 100644 index 5306396c9..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/software/default/java/java/17.0.10_7/bin/java +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash -echo "executing java:" -echo "java $*" \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json deleted file mode 100644 index a5cf607b9..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/status.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "manual" : false, - "urls" : { - "55042423" : { - "success" : { - "timestamp" : "2024-02-13T17:38:27.770091500Z" - } - } - } -} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls deleted file mode 100644 index 33e3e6cc0..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls +++ /dev/null @@ -1 +0,0 @@ -https://repo1.maven.org/maven2/org/jasypt/jasypt/1.9.3/jasypt-1.9.3.jar diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 deleted file mode 100644 index e215f2c24..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/jasypt/jasypt/1.9.3/urls.sha256 +++ /dev/null @@ -1 +0,0 @@ -f481fbb8dd8ce754bfde7552af4fcbe8c5e303d53663bb3d8ce9d4338e0e55aa diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 deleted file mode 100644 index 438dd2a03..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.sha256 +++ /dev/null @@ -1 +0,0 @@ -c2de7dfbd9f8faaa21b4cdd8518f826dd558c9ab24a0616b3ed28437a674a97b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls deleted file mode 100644 index 11266bb8a..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/linux_x64.urls +++ /dev/null @@ -1 +0,0 @@ -http://localhost:1112/installTest/linux \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 deleted file mode 100644 index 438dd2a03..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.sha256 +++ /dev/null @@ -1 +0,0 @@ -c2de7dfbd9f8faaa21b4cdd8518f826dd558c9ab24a0616b3ed28437a674a97b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls deleted file mode 100644 index 2d8af8437..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/mac_x64.urls +++ /dev/null @@ -1 +0,0 @@ -http://localhost:1112/installTest/macOS \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json deleted file mode 100644 index b58452d90..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/status.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "manual" : true, - "urls" : { - "-680270697" : { - "success" : { - "timestamp" : "2023-04-28T16:27:32.819394600Z" - } - }, - "-896197542" : { - "success" : { - "timestamp" : "2023-04-28T16:27:47.658175400Z" - } - }, - "-310367019" : { - "success" : { - "timestamp" : "2023-04-28T16:28:02.221367500Z" - } - } - } -} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls deleted file mode 100644 index 79fd6654e..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls +++ /dev/null @@ -1 +0,0 @@ -http://localhost:1112/installTest/windows \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 deleted file mode 100644 index fe3cecaad..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/java/java/17.0.6/windows_x64.urls.sha256 +++ /dev/null @@ -1 +0,0 @@ -aa64bee5f7ba56fbbd60d766f3a652600f81571ae5e996804694c69bf731af8b \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json deleted file mode 100644 index b4f50bcdf..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/status.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "manual" : false, - "urls" : { - "1199796863" : { - "success" : { - "timestamp" : "2023-12-02T03:34:21.698982214Z" - } - } - } -} \ No newline at end of file diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls deleted file mode 100644 index b817f3b13..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls +++ /dev/null @@ -1 +0,0 @@ -https://archive.apache.org/dist/maven/maven-3/3.9.6/binaries/apache-maven-3.9.6-bin.tar.gz diff --git a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 b/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 deleted file mode 100644 index 1e15cf448..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/_ide/urls/mvn/mvn/3.9.6/urls.sha256 +++ /dev/null @@ -1 +0,0 @@ -6eedd2cae3626d6ad3a5c9ee324bd265853d64297f07f033430755bd0e0c3a4b diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java index 5306396c9..32c47c67f 100755 --- a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java +++ b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java @@ -1,3 +1,3 @@ #!/bin/bash echo "executing java:" -echo "java $*" \ No newline at end of file +cat $2 \ No newline at end of file From ef6c4f3f44f4dc9d128011267afe88fe94d41d1b Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Mon, 18 Mar 2024 17:38:59 +0100 Subject: [PATCH 28/35] code refactoring, documentation page deleted --- .../devonfw/tools/ide/tool/jasypt/Jasypt.java | 13 ++-- cli/src/main/resources/nls/Ide.properties | 2 + .../tools/ide/tool/jasypt/JasyptTest.java | 4 +- documentation/jasypt.asciidoc | 76 ------------------- 4 files changed, 10 insertions(+), 85 deletions(-) delete mode 100644 documentation/jasypt.asciidoc diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index d73086ef4..63563f338 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -19,9 +19,9 @@ public class Jasypt extends LocalToolCommandlet { public final EnumProperty command; - public final PasswordProperty masterPassword; + public final PasswordProperty password; - public final PasswordProperty secret; + public final PasswordProperty input; private static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; @@ -37,9 +37,9 @@ public Jasypt(IdeContext context) { super(context, "jasypt", Set.of(Tag.JAVA, Tag.ENCRYPTION)); this.command = add(new EnumProperty<>("", true, "command", JasyptCommand.class)); - this.masterPassword = add(new PasswordProperty("", true, "masterPassword")); - this.secret = add(new PasswordProperty("", true, "secret")); - add(this.arguments); + this.password = add(new PasswordProperty("", true, "password")); + this.input = add(new PasswordProperty("", true, "input")); + //add(this.arguments); } @Override @@ -71,7 +71,6 @@ public void run() { } JasyptCommand command = this.command.getValue(); - switch (command) { case ENCRYPT: runJasypt(CLASS_NAME_ENCRYPTION); @@ -93,7 +92,7 @@ private void runJasypt(String className) { String generatorClassName = jasyptOptions[1]; java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, algorithm, generatorClassName, - "password=" + this.masterPassword.getValue(), "input=" + this.secret.getValue()); + "password=" + this.password.getValue(), "input=" + this.input.getValue()); } private Path resolveJasyptJarPath() { diff --git a/cli/src/main/resources/nls/Ide.properties b/cli/src/main/resources/nls/Ide.properties index 38f9315fe..83918dd8d 100644 --- a/cli/src/main/resources/nls/Ide.properties +++ b/cli/src/main/resources/nls/Ide.properties @@ -38,6 +38,8 @@ val-args=The commandline arguments to pass to the tool. val-edition=The tool edition. val-sonar-command=START|STOP|ANALYZE val-jasypt-command=ENCRYPT|DECRYPT +val-jasypt-password=password +val-jasypt-input=The input text to be encrypted or decrypted val-tool=The tool commandlet to select. val-version=The tool version val-set-version-version=The tool version to set. diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index cf7b4b6c1..f6b82007d 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -52,8 +52,8 @@ public void testJasyptRun() { Jasypt commandlet = new Jasypt(context); commandlet.command.setValue(JasyptCommand.ENCRYPT); - commandlet.masterPassword.setValue("master"); - commandlet.secret.setValue("secret"); + commandlet.password.setValue("master"); + commandlet.input.setValue("secret"); // act commandlet.run(); diff --git a/documentation/jasypt.asciidoc b/documentation/jasypt.asciidoc deleted file mode 100644 index 4f706c7f1..000000000 --- a/documentation/jasypt.asciidoc +++ /dev/null @@ -1,76 +0,0 @@ -:toc: -toc::[] - -= jasypt - -The `jasypt` commandlet allows to install http://www.jasypt.org/[jasypt] and encrypt or decrypt secrets using strong encryption given a secure masterpassword. See also https://github.com/devonfw/devon4j/blob/master/documentation/guide-configuration.asciidoc#password-encryption[devon4j password encryption guide] for further details. - -The arguments (`devon jasypt «args»`) are explained by the following table: - -.Usage of `devon jasypt` -[options="header"] -|======================= -|*Argument(s)* |*Meaning* -|`install jasypt` |setup jasypt (install and verify), link:configuration.asciidoc[configurable] via `JASYPT_VERSION` -|`jasypt encrypt ` |Encrypt a secret with a masterpassword -|`jasypt decrypt ` |Decrypt an encrypted secret with a masterpassword -|======================= - -== example - -* `jasypt encrypt secret master` - -``` -----ENVIRONMENT----------------- - -Runtime: Eclipse Adoptium OpenJDK 64-Bit Server VM 17.0.10+7 - - - -----ARGUMENTS------------------- - -input: secret -password: master -ivGeneratorClassName: org.jasypt.iv.RandomIvGenerator -algorithm: PBEWITHHMACSHA512ANDAES_256 - - - -----OUTPUT---------------------- - -cHdhiWKZURfFazkbScBehzy46JXXXlEN7VaSMV2UdeHMr9WzB7Xx6aEdG3u+2gGm - - - -Process finished with exit code 0 -``` - -* `jasypt decrypt secret cHdhiWKZURfFazkbScBehzy46JXXXlEN7VaSMV2UdeHMr9WzB7Xx6aEdG3u+2gGm` - -``` -----ENVIRONMENT----------------- - -Runtime: Eclipse Adoptium OpenJDK 64-Bit Server VM 17.0.10+7 - - - -----ARGUMENTS------------------- - -input: cHdhiWKZURfFazkbScBehzy46JXXXlEN7VaSMV2UdeHMr9WzB7Xx6aEdG3u+2gGm -password: master -ivGeneratorClassName: org.jasypt.iv.RandomIvGenerator -algorithm: PBEWITHHMACSHA512ANDAES_256 - - - -----OUTPUT---------------------- - -secret - - - -Process finished with exit code 0 -``` - - - From d9f6153e62cbfa40dce235b5f3a2e6afe42077ba Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 19 Mar 2024 15:24:45 +0100 Subject: [PATCH 29/35] excludes .jar file from gitignore --- .../jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar | 1 + 1 file changed, 1 insertion(+) create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar new file mode 100644 index 000000000..16f4318e4 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar @@ -0,0 +1 @@ +This is a jar file. From ce5b53944cacd7fdfadf0d68c4680b4e91b28126 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 19 Mar 2024 15:25:14 +0100 Subject: [PATCH 30/35] updates gitignore to exclude mocked jar test file --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index d246502a6..589c7b698 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ generated/ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* + +# mocked test files +!jasypt-1.9.3.jar From ab80b9605c6716793233837f332df136d46f9737 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Tue, 19 Mar 2024 15:59:12 +0100 Subject: [PATCH 31/35] code cleanup --- .../com/devonfw/tools/ide/property/PasswordProperty.java | 1 + .../java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 2 -- cli/src/main/resources/nls/Ide.properties | 2 +- .../com/devonfw/tools/ide/tool/jasypt/JasyptTest.java | 8 +++----- .../jasypt/repository/java/java/default/bin/java | 2 +- 5 files changed, 6 insertions(+), 9 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java b/cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java index 9898258bd..a418a12b6 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java +++ b/cli/src/main/java/com/devonfw/tools/ide/property/PasswordProperty.java @@ -13,6 +13,7 @@ public class PasswordProperty extends StringProperty { * @param alias the {@link #getAlias() property alias}. */ public PasswordProperty(String name, boolean required, String alias) { + super(name, required, alias); } diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 63563f338..5a6bbe8d6 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -39,7 +39,6 @@ public Jasypt(IdeContext context) { this.command = add(new EnumProperty<>("", true, "command", JasyptCommand.class)); this.password = add(new PasswordProperty("", true, "password")); this.input = add(new PasswordProperty("", true, "input")); - //add(this.arguments); } @Override @@ -101,5 +100,4 @@ private Path resolveJasyptJarPath() { String installedVersion = getInstalledVersion().toString(); return toolPath.resolve("jasypt-" + installedVersion + ".jar"); } - } diff --git a/cli/src/main/resources/nls/Ide.properties b/cli/src/main/resources/nls/Ide.properties index 5e831a95e..e3f1d5bda 100644 --- a/cli/src/main/resources/nls/Ide.properties +++ b/cli/src/main/resources/nls/Ide.properties @@ -39,7 +39,7 @@ cmd-sonar=Tool commandlet for SonarQube val-args=The commandline arguments to pass to the tool. val-edition=The tool edition. val-sonar-command=START|STOP|ANALYZE -val-jasypt-command=ENCRYPT|DECRYPT +val-jasypt-command=encrypt | decrypt val-jasypt-password=password val-jasypt-input=The input text to be encrypted or decrypted val-tool=The tool commandlet to select. diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index f6b82007d..8288dc589 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -6,8 +6,6 @@ import com.devonfw.tools.ide.log.IdeLogLevel; import org.junit.jupiter.api.Test; -import java.io.IOException; - /** * Integration test of {@link Jasypt}. */ @@ -16,7 +14,7 @@ public class JasyptTest extends AbstractIdeContextTest { private static final String PROJECT_JASYPT = "jasypt"; @Test - public void testJasyptInstallCommandlet() throws IOException { + public void testJasyptInstallCommandlet() { // arrange IdeTestContext context = newContext(PROJECT_JASYPT); @@ -52,8 +50,8 @@ public void testJasyptRun() { Jasypt commandlet = new Jasypt(context); commandlet.command.setValue(JasyptCommand.ENCRYPT); - commandlet.password.setValue("master"); - commandlet.input.setValue("secret"); + commandlet.password.setValue("password"); + commandlet.input.setValue("input"); // act commandlet.run(); diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java index 32c47c67f..655040e33 100755 --- a/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java +++ b/cli/src/test/resources/ide-projects/jasypt/repository/java/java/default/bin/java @@ -1,3 +1,3 @@ #!/bin/bash echo "executing java:" -cat $2 \ No newline at end of file +cat $2 # .jar file \ No newline at end of file From 5afc572c04b07278c044698cf6f7b4b8ae7a0ff4 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Thu, 21 Mar 2024 16:02:24 +0100 Subject: [PATCH 32/35] removes jar file --- .../jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar | 1 - 1 file changed, 1 deletion(-) delete mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar deleted file mode 100644 index 16f4318e4..000000000 --- a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar +++ /dev/null @@ -1 +0,0 @@ -This is a jar file. From f585e68309c356d04ac2d6056403c15c3cb8a6b7 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Thu, 21 Mar 2024 16:03:21 +0100 Subject: [PATCH 33/35] gitignore update --- .gitignore | 3 --- 1 file changed, 3 deletions(-) diff --git a/.gitignore b/.gitignore index 589c7b698..d246502a6 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,3 @@ generated/ # virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml hs_err_pid* - -# mocked test files -!jasypt-1.9.3.jar From efbbe576f3b014e654014e7c2527a7025111a5da Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Thu, 21 Mar 2024 16:04:50 +0100 Subject: [PATCH 34/35] adds jasypt.jar file --- .../jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar | 1 + 1 file changed, 1 insertion(+) create mode 100644 cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar diff --git a/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar new file mode 100644 index 000000000..16f4318e4 --- /dev/null +++ b/cli/src/test/resources/ide-projects/jasypt/repository/jasypt/jasypt/default/jasypt-1.9.3.jar @@ -0,0 +1 @@ +This is a jar file. From f958fe1d4d970b0025ba10abb3346d82bd91a506 Mon Sep 17 00:00:00 2001 From: Marco Vomiero Date: Thu, 21 Mar 2024 16:24:44 +0100 Subject: [PATCH 35/35] renames masterPassword and secret --- .../java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java | 10 +++++----- cli/src/main/resources/nls/Ide.properties | 4 ++-- .../com/devonfw/tools/ide/tool/jasypt/JasyptTest.java | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java index 5a6bbe8d6..a6f7aff99 100644 --- a/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java +++ b/cli/src/main/java/com/devonfw/tools/ide/tool/jasypt/Jasypt.java @@ -19,9 +19,9 @@ public class Jasypt extends LocalToolCommandlet { public final EnumProperty command; - public final PasswordProperty password; + public final PasswordProperty masterPassword; - public final PasswordProperty input; + public final PasswordProperty secret; private static final String CLASS_NAME_ENCRYPTION = "org.jasypt.intf.cli.JasyptPBEStringEncryptionCLI"; @@ -37,8 +37,8 @@ public Jasypt(IdeContext context) { super(context, "jasypt", Set.of(Tag.JAVA, Tag.ENCRYPTION)); this.command = add(new EnumProperty<>("", true, "command", JasyptCommand.class)); - this.password = add(new PasswordProperty("", true, "password")); - this.input = add(new PasswordProperty("", true, "input")); + this.masterPassword = add(new PasswordProperty("", true, "masterPassword")); + this.secret = add(new PasswordProperty("", true, "secret")); } @Override @@ -91,7 +91,7 @@ private void runJasypt(String className) { String generatorClassName = jasyptOptions[1]; java.runTool(null, "-cp", resolveJasyptJarPath().toString(), className, algorithm, generatorClassName, - "password=" + this.password.getValue(), "input=" + this.input.getValue()); + "password=" + this.masterPassword.getValue(), "input=" + this.secret.getValue()); } private Path resolveJasyptJarPath() { diff --git a/cli/src/main/resources/nls/Ide.properties b/cli/src/main/resources/nls/Ide.properties index e3f1d5bda..1715ce61a 100644 --- a/cli/src/main/resources/nls/Ide.properties +++ b/cli/src/main/resources/nls/Ide.properties @@ -40,8 +40,8 @@ val-args=The commandline arguments to pass to the tool. val-edition=The tool edition. val-sonar-command=START|STOP|ANALYZE val-jasypt-command=encrypt | decrypt -val-jasypt-password=password -val-jasypt-input=The input text to be encrypted or decrypted +val-jasypt-masterPassword=master password +val-jasypt-secret=The secret to be encrypted or decrypted val-tool=The tool commandlet to select. val-version=The tool version val-set-version-version=The tool version to set. diff --git a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java index 8288dc589..32eb612af 100644 --- a/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java +++ b/cli/src/test/java/com/devonfw/tools/ide/tool/jasypt/JasyptTest.java @@ -50,8 +50,8 @@ public void testJasyptRun() { Jasypt commandlet = new Jasypt(context); commandlet.command.setValue(JasyptCommand.ENCRYPT); - commandlet.password.setValue("password"); - commandlet.input.setValue("input"); + commandlet.masterPassword.setValue("password"); + commandlet.secret.setValue("input"); // act commandlet.run();