From 55af071ee7a97b5e0620738b0ec8cc6b5bf7afaf Mon Sep 17 00:00:00 2001 From: Juan del Carmen Grados Vasquez Date: Mon, 10 Nov 2025 11:11:57 +0400 Subject: [PATCH 1/2] Adding Mockito - Adding Mockito to mock domain example.com given in src/test/java/de/rub/nds/crawler/core/ControllerTest.java --- pom.xml | 10 + .../rub/nds/crawler/core/ControllerTest.java | 195 +++++++++++------- 2 files changed, 129 insertions(+), 76 deletions(-) diff --git a/pom.xml b/pom.xml index 2f88a1a..08b6d57 100644 --- a/pom.xml +++ b/pom.xml @@ -165,6 +165,16 @@ junit-jupiter test + + org.mockito + mockito-core + test + + + org.mockito + mockito-junit-jupiter + test + diff --git a/src/test/java/de/rub/nds/crawler/core/ControllerTest.java b/src/test/java/de/rub/nds/crawler/core/ControllerTest.java index 16405e4..90d7d0f 100644 --- a/src/test/java/de/rub/nds/crawler/core/ControllerTest.java +++ b/src/test/java/de/rub/nds/crawler/core/ControllerTest.java @@ -8,6 +8,8 @@ */ package de.rub.nds.crawler.core; +import static org.mockito.Mockito.*; + import de.rub.nds.crawler.config.ControllerCommandConfig; import de.rub.nds.crawler.data.ScanJobDescription; import de.rub.nds.crawler.dummy.DummyControllerCommandConfig; @@ -17,104 +19,145 @@ import java.io.File; import java.io.FileWriter; import java.io.IOException; +import java.net.InetAddress; import java.util.Arrays; import java.util.List; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.mockito.MockedStatic; class ControllerTest { @Test void submitting() throws IOException, InterruptedException { - var persistenceProvider = new DummyPersistenceProvider(); - var orchestrationProvider = new DummyOrchestrationProvider(); - ControllerCommandConfig config = new DummyControllerCommandConfig(); - - File hostlist = File.createTempFile("hosts", "txt"); - hostlist.deleteOnExit(); - FileWriter writer = new FileWriter(hostlist); - writer.write("example.com\nexample.org:8000"); - writer.flush(); - writer.close(); - - config.setHostFile(hostlist.getAbsolutePath()); - - Controller controller = new Controller(config, orchestrationProvider, persistenceProvider); - controller.start(); - - Thread.sleep(1000); - - Assertions.assertEquals(2, orchestrationProvider.jobQueue.size()); - Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size()); + try (MockedStatic mockedInetAddress = mockStatic(InetAddress.class)) { + InetAddress mockExampleCom = mock(InetAddress.class); + when(mockExampleCom.getHostAddress()).thenReturn("192.0.2.1"); + mockedInetAddress + .when(() -> InetAddress.getByName("example.com")) + .thenReturn(mockExampleCom); + + InetAddress mockExampleOrg = mock(InetAddress.class); + when(mockExampleOrg.getHostAddress()).thenReturn("192.0.2.2"); + mockedInetAddress + .when(() -> InetAddress.getByName("example.org")) + .thenReturn(mockExampleOrg); + + var persistenceProvider = new DummyPersistenceProvider(); + var orchestrationProvider = new DummyOrchestrationProvider(); + ControllerCommandConfig config = new DummyControllerCommandConfig(); + + File hostlist = File.createTempFile("hosts", "txt"); + hostlist.deleteOnExit(); + FileWriter writer = new FileWriter(hostlist); + writer.write("example.com\nexample.org:8000"); + writer.flush(); + writer.close(); + + config.setHostFile(hostlist.getAbsolutePath()); + + Controller controller = + new Controller(config, orchestrationProvider, persistenceProvider); + controller.start(); + + Thread.sleep(1000); + + Assertions.assertEquals(2, orchestrationProvider.jobQueue.size()); + Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size()); + } } @Test void submittingWithExcludedProbes() throws IOException, InterruptedException { - var persistenceProvider = new DummyPersistenceProvider(); - var orchestrationProvider = new DummyOrchestrationProvider(); - ControllerCommandConfig config = new DummyControllerCommandConfig(); + try (MockedStatic mockedInetAddress = mockStatic(InetAddress.class)) { + InetAddress mockExampleCom = mock(InetAddress.class); + when(mockExampleCom.getHostAddress()).thenReturn("192.0.2.1"); + mockedInetAddress + .when(() -> InetAddress.getByName("example.com")) + .thenReturn(mockExampleCom); + + InetAddress mockExampleOrg = mock(InetAddress.class); + when(mockExampleOrg.getHostAddress()).thenReturn("192.0.2.2"); + mockedInetAddress + .when(() -> InetAddress.getByName("example.org")) + .thenReturn(mockExampleOrg); + + var persistenceProvider = new DummyPersistenceProvider(); + var orchestrationProvider = new DummyOrchestrationProvider(); + ControllerCommandConfig config = new DummyControllerCommandConfig(); + + File hostlist = File.createTempFile("hosts", "txt"); + hostlist.deleteOnExit(); + FileWriter writer = new FileWriter(hostlist); + writer.write("example.com\nexample.org:443"); + writer.flush(); + writer.close(); + + config.setHostFile(hostlist.getAbsolutePath()); + + List excludedProbes = + Arrays.asList(new TestProbeType("probe1"), new TestProbeType("probe2")); + config.setExcludedProbes(excludedProbes); + + Controller controller = + new Controller(config, orchestrationProvider, persistenceProvider); + controller.start(); + + Thread.sleep(1000); + + Assertions.assertEquals(2, orchestrationProvider.jobQueue.size()); + Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size()); + + for (ScanJobDescription job : orchestrationProvider.jobQueue) { + List jobExcludedProbes = + job.getBulkScanInfo().getScanConfig().getExcludedProbes(); + Assertions.assertNotNull(jobExcludedProbes); + Assertions.assertEquals(2, jobExcludedProbes.size()); + Assertions.assertEquals("probe1", jobExcludedProbes.get(0).getName()); + Assertions.assertEquals("probe2", jobExcludedProbes.get(1).getName()); + } + } + } - File hostlist = File.createTempFile("hosts", "txt"); - hostlist.deleteOnExit(); - FileWriter writer = new FileWriter(hostlist); - writer.write("example.com\nexample.org:443"); - writer.flush(); - writer.close(); + @Test + void submittingWithoutExcludedProbes() throws IOException, InterruptedException { + try (MockedStatic mockedInetAddress = mockStatic(InetAddress.class)) { + InetAddress mockExampleCom = mock(InetAddress.class); + when(mockExampleCom.getHostAddress()).thenReturn("192.0.2.1"); + mockedInetAddress + .when(() -> InetAddress.getByName("example.com")) + .thenReturn(mockExampleCom); - config.setHostFile(hostlist.getAbsolutePath()); + var persistenceProvider = new DummyPersistenceProvider(); + var orchestrationProvider = new DummyOrchestrationProvider(); + ControllerCommandConfig config = new DummyControllerCommandConfig(); - List excludedProbes = - Arrays.asList(new TestProbeType("probe1"), new TestProbeType("probe2")); - config.setExcludedProbes(excludedProbes); + File hostlist = File.createTempFile("hosts", "txt"); + hostlist.deleteOnExit(); + FileWriter writer = new FileWriter(hostlist); + writer.write("example.com"); + writer.flush(); + writer.close(); - Controller controller = new Controller(config, orchestrationProvider, persistenceProvider); - controller.start(); + config.setHostFile(hostlist.getAbsolutePath()); - Thread.sleep(1000); + Controller controller = + new Controller(config, orchestrationProvider, persistenceProvider); + controller.start(); - Assertions.assertEquals(2, orchestrationProvider.jobQueue.size()); - Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size()); + Thread.sleep(1000); - for (ScanJobDescription job : orchestrationProvider.jobQueue) { + Assertions.assertEquals(1, orchestrationProvider.jobQueue.size()); + + ScanJobDescription job = orchestrationProvider.jobQueue.peek(); List jobExcludedProbes = job.getBulkScanInfo().getScanConfig().getExcludedProbes(); - Assertions.assertNotNull(jobExcludedProbes); - Assertions.assertEquals(2, jobExcludedProbes.size()); - Assertions.assertEquals("probe1", jobExcludedProbes.get(0).getName()); - Assertions.assertEquals("probe2", jobExcludedProbes.get(1).getName()); - } - } - - @Test - void submittingWithoutExcludedProbes() throws IOException, InterruptedException { - var persistenceProvider = new DummyPersistenceProvider(); - var orchestrationProvider = new DummyOrchestrationProvider(); - ControllerCommandConfig config = new DummyControllerCommandConfig(); - - File hostlist = File.createTempFile("hosts", "txt"); - hostlist.deleteOnExit(); - FileWriter writer = new FileWriter(hostlist); - writer.write("example.com"); - writer.flush(); - writer.close(); - - config.setHostFile(hostlist.getAbsolutePath()); - - Controller controller = new Controller(config, orchestrationProvider, persistenceProvider); - controller.start(); - - Thread.sleep(1000); - - Assertions.assertEquals(1, orchestrationProvider.jobQueue.size()); - - ScanJobDescription job = orchestrationProvider.jobQueue.peek(); - List jobExcludedProbes = - job.getBulkScanInfo().getScanConfig().getExcludedProbes(); - if (jobExcludedProbes == null) { - Assertions.assertNull(jobExcludedProbes, "Expected excluded probes to be null"); - } else { - Assertions.assertTrue( - jobExcludedProbes.isEmpty(), "Expected excluded probes to be empty"); + if (jobExcludedProbes == null) { + Assertions.assertNull(jobExcludedProbes, "Expected excluded probes to be null"); + } else { + Assertions.assertTrue( + jobExcludedProbes.isEmpty(), "Expected excluded probes to be empty"); + } } } } From 95d2d90ea037bb58ef1fd31742903e2111850843 Mon Sep 17 00:00:00 2001 From: Juan del Carmen Grados Vasquez Date: Mon, 10 Nov 2025 11:31:10 +0400 Subject: [PATCH 2/2] add Mock init address verification --- .../java/de/rub/nds/crawler/core/ControllerTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/test/java/de/rub/nds/crawler/core/ControllerTest.java b/src/test/java/de/rub/nds/crawler/core/ControllerTest.java index 90d7d0f..5edef61 100644 --- a/src/test/java/de/rub/nds/crawler/core/ControllerTest.java +++ b/src/test/java/de/rub/nds/crawler/core/ControllerTest.java @@ -64,6 +64,10 @@ void submitting() throws IOException, InterruptedException { Assertions.assertEquals(2, orchestrationProvider.jobQueue.size()); Assertions.assertEquals(0, orchestrationProvider.unackedJobs.size()); + + mockedInetAddress.verify(() -> InetAddress.getByName("example.com")); + mockedInetAddress.verify(() -> InetAddress.getByName("example.org")); + mockedInetAddress.verifyNoMoreInteractions(); } } @@ -116,6 +120,9 @@ void submittingWithExcludedProbes() throws IOException, InterruptedException { Assertions.assertEquals("probe1", jobExcludedProbes.get(0).getName()); Assertions.assertEquals("probe2", jobExcludedProbes.get(1).getName()); } + mockedInetAddress.verify(() -> InetAddress.getByName("example.com")); + mockedInetAddress.verify(() -> InetAddress.getByName("example.org")); + mockedInetAddress.verifyNoMoreInteractions(); } } @@ -158,6 +165,9 @@ void submittingWithoutExcludedProbes() throws IOException, InterruptedException Assertions.assertTrue( jobExcludedProbes.isEmpty(), "Expected excluded probes to be empty"); } + mockedInetAddress.verify(() -> InetAddress.getByName("example.com")); + mockedInetAddress.verify(() -> InetAddress.getByName("example.org")); + mockedInetAddress.verifyNoMoreInteractions(); } } }