From 723f53fc4a06c45df84c8e722e805e77a49554d7 Mon Sep 17 00:00:00 2001 From: Mykola Rudyk Date: Tue, 5 Mar 2024 09:44:10 +0200 Subject: [PATCH] test: add test for reloading tables from DB for singlescan Signed-off-by: Mykola Rudyk --- .../com/lpvs/service/LPVSLicenseService.java | 4 + .../lpvs/service/LPVSLicenseServiceTest.java | 105 ++++++++++++++---- 2 files changed, 89 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/lpvs/service/LPVSLicenseService.java b/src/main/java/com/lpvs/service/LPVSLicenseService.java index a960b1b1..9cfdfa5b 100644 --- a/src/main/java/com/lpvs/service/LPVSLicenseService.java +++ b/src/main/java/com/lpvs/service/LPVSLicenseService.java @@ -156,6 +156,10 @@ private void init() { } } + /** + * This method reloads licenses and license conflicts from database tables if the + * licenses list in case of single scan triggered and used in memory database. + */ public void reloadFromTables() { if (licenses.isEmpty()) { licenses = lpvsLicenseRepository.takeAllLicenses(); diff --git a/src/test/java/com/lpvs/service/LPVSLicenseServiceTest.java b/src/test/java/com/lpvs/service/LPVSLicenseServiceTest.java index b56f627e..10bcaa52 100644 --- a/src/test/java/com/lpvs/service/LPVSLicenseServiceTest.java +++ b/src/test/java/com/lpvs/service/LPVSLicenseServiceTest.java @@ -6,6 +6,31 @@ */ package com.lpvs.service; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; +import static org.mockito.Mockito.when; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.Set; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.Mockito; +import org.springframework.test.util.ReflectionTestUtils; + import com.lpvs.entity.LPVSFile; import com.lpvs.entity.LPVSLicense; import com.lpvs.entity.LPVSLicenseConflict; @@ -13,31 +38,12 @@ import com.lpvs.repository.LPVSLicenseConflictRepository; import com.lpvs.repository.LPVSLicenseRepository; import com.lpvs.util.LPVSExitHandler; + import lombok.extern.slf4j.Slf4j; import uk.org.webcompere.systemstubs.environment.EnvironmentVariables; import uk.org.webcompere.systemstubs.jupiter.SystemStub; import uk.org.webcompere.systemstubs.jupiter.SystemStubsExtension; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Nested; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.extension.ExtendWith; -import org.mockito.Mockito; -import org.springframework.test.util.ReflectionTestUtils; - -import java.lang.reflect.Field; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; - -import static org.junit.jupiter.api.Assertions.*; - @Slf4j @ExtendWith(SystemStubsExtension.class) public class LPVSLicenseServiceTest { @@ -229,6 +235,65 @@ public void testInitDB() { fail(); } } + + @Test + public void testReloadFromTables() + throws NoSuchFieldException, + SecurityException, + IllegalArgumentException, + IllegalAccessException { + + List licenseList = new ArrayList<>(); + + LPVSLicense license1 = + new LPVSLicense() { + { + setChecklistUrl(""); + setAccess("unrviewed"); + setSpdxId("Apache-2.0"); + } + }; + LPVSLicense license2 = + new LPVSLicense() { + { + setChecklistUrl(""); + setAccess("unrviewed"); + setSpdxId("MIT"); + } + }; + + licenseList.add(license1); + licenseList.add(license2); + + when(lpvsLicenseRepository.takeAllLicenses()).thenReturn(licenseList); + + LPVSLicenseConflict licenseConflict = new LPVSLicenseConflict(); + licenseConflict.setConflictId(1L); + licenseConflict.setConflictLicense(license1); + licenseConflict.setRepositoryLicense(license2); + List licenseConflictList = new ArrayList<>(); + licenseConflictList.add(licenseConflict); + + when(lpvsLicenseConflictRepository.takeAllLicenseConflicts()) + .thenReturn(licenseConflictList); + + Field lpvsLicenseRepositoryField = + LPVSLicenseService.class.getDeclaredField("lpvsLicenseRepository"); + lpvsLicenseRepositoryField.setAccessible(true); + lpvsLicenseRepositoryField.set(licenseService, lpvsLicenseRepository); + + Field lpvsLicenseConflictRepositoryField = + LPVSLicenseService.class.getDeclaredField("lpvsLicenseConflictRepository"); + lpvsLicenseConflictRepositoryField.setAccessible(true); + lpvsLicenseConflictRepositoryField.set(licenseService, lpvsLicenseConflictRepository); + + try { + licenseService.reloadFromTables(); + } catch (Exception e) { + e.printStackTrace(); + fail("Exception occurred: " + e.getMessage()); + } + } } @Nested