From b7aed0efd4d8ec2834ce7ee23a56aea3a5f4ec00 Mon Sep 17 00:00:00 2001 From: Michael Keppler Date: Tue, 7 May 2024 15:19:35 +0200 Subject: [PATCH] Remove Random import during SecureRandom recipe (#132) Fixes #131 --- .../java/security/SecureRandom.java | 1 + .../java/security/SecureRandomTest.java | 29 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/main/java/org/openrewrite/java/security/SecureRandom.java b/src/main/java/org/openrewrite/java/security/SecureRandom.java index c88e0dc..e13156c 100644 --- a/src/main/java/org/openrewrite/java/security/SecureRandom.java +++ b/src/main/java/org/openrewrite/java/security/SecureRandom.java @@ -55,6 +55,7 @@ public J.NewClass visitNewClass(J.NewClass newClass, ExecutionContext ctx) { J.NewClass n = super.visitNewClass(newClass, ctx); if (TypeUtils.isOfClassType(newClass.getType(), "java.util.Random")) { maybeAddImport("java.security.SecureRandom"); + maybeRemoveImport("java.util.Random"); return JavaTemplate.builder("new SecureRandom()") .imports("java.security.SecureRandom") .build() diff --git a/src/test/java/org/openrewrite/java/security/SecureRandomTest.java b/src/test/java/org/openrewrite/java/security/SecureRandomTest.java index 41b5e1a..1fcb2cc 100755 --- a/src/test/java/org/openrewrite/java/security/SecureRandomTest.java +++ b/src/test/java/org/openrewrite/java/security/SecureRandomTest.java @@ -17,6 +17,7 @@ import org.junit.jupiter.api.Test; import org.openrewrite.DocumentExample; +import org.openrewrite.Issue; import org.openrewrite.test.RecipeSpec; import org.openrewrite.test.RewriteTest; @@ -30,6 +31,7 @@ public void defaults(RecipeSpec spec) { } @DocumentExample + @Issue("https://github.com/openrewrite/rewrite-java-security/issues/131") @Test void secureContext() { rewriteRun( @@ -59,4 +61,31 @@ String generateSecretToken() { ) ); } + + @Test + void removeImport() { + rewriteRun( + //language=java + java( + """ + import java.util.Random; + + public class A { + void generateSecretToken() { + int num = new Random().nextInt(); + } + } + """, + """ + import java.security.SecureRandom; + + public class A { + void generateSecretToken() { + int num = new SecureRandom().nextInt(); + } + } + """ + ) + ); + } }