This is an automated email from the ASF dual-hosted git repository.

yasith pushed a commit to branch service-layer-improvements
in repository https://gitbox.apache.org/repos/asf/airavata.git

commit b3ee4ec0d3f6d062e31eaa0a90af27b118afe522
Author: yasithdev <[email protected]>
AuthorDate: Wed Dec 10 13:59:54 2025 -0600

    fix bean resolution order, and add h2 dep
---
 .../config/AiravataPropertiesConfiguration.java    |  21 +++++
 .../airavata/config/AiravataServerProperties.java  |  21 ++++-
 .../AiravataServerPropertiesPostProcessor.java     |  69 ++++++++++++++
 .../services/CredentialEntityService.java          |   5 +
 .../airavata/service/OrchestratorService.java      |  17 ----
 .../SSHAccountProvisionerFactoryTest.java          |   2 +
 .../airavata/accountprovisioning/SSHUtilTest.java  |   2 +
 .../impl/notifier/EmailNotifierTest.java           |  86 -----------------
 .../credential/utils/ConfigurationReaderTest.java  |  46 +--------
 .../core/OrchestratorTestWithGRAM.java             |  79 ----------------
 .../core/OrchestratorTestWithMyProxyAuth.java      |  83 ----------------
 .../expcatalog/ExperimentRepositoryTest.java       |  38 +++++++-
 .../repositories/expcatalog/JobRepositoryTest.java |  38 +++++++-
 .../expcatalog/JobStatusRepositoryTest.java        |  39 +++++++-
 .../expcatalog/ProcessRepositoryTest.java          |  38 +++++++-
 .../expcatalog/ProcessStatusRepositoryTest.java    |  39 +++++++-
 .../expcatalog/QueueStatusRepositoryTest.java      |  38 +++++++-
 .../expcatalog/TaskRepositoryTest.java             |  38 +++++++-
 .../expcatalog/TaskStatusRepositoryTest.java       |  38 +++++++-
 .../expcatalog/UserRepositoryTest.java             |  38 +++++++-
 .../security/KeyCloakSecurityManagerTest.java      |   8 +-
 .../security/userstore/JDBCUserStoreTest.java      | 105 ---------------------
 .../security/userstore/LDAPUserStoreTest.java      |  96 -------------------
 .../security/userstore/SessionDBUserStoreTest.java | 101 --------------------
 .../integration/ServiceIntegrationTestBase.java    |   4 +
 .../src/test/resources/credential-store/client.xml |   6 ++
 pom.xml                                            |   7 +-
 27 files changed, 474 insertions(+), 628 deletions(-)

diff --git 
a/airavata-api/src/main/java/org/apache/airavata/config/AiravataPropertiesConfiguration.java
 
b/airavata-api/src/main/java/org/apache/airavata/config/AiravataPropertiesConfiguration.java
index 9c2178233a..ffdfc4b7b3 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/config/AiravataPropertiesConfiguration.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/config/AiravataPropertiesConfiguration.java
@@ -27,8 +27,11 @@ import java.net.URL;
 import java.util.Properties;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.PropertySource;
+import org.springframework.core.env.Environment;
 import org.springframework.core.io.support.DefaultPropertySourceFactory;
 import org.springframework.core.io.support.EncodedResource;
 import org.springframework.core.io.support.PropertySourceFactory;
@@ -38,12 +41,30 @@ import 
org.springframework.core.io.support.PropertySourceFactory;
  * Respects the airavata.config.dir system property, checking file system 
first, then classpath.
  */
 @Configuration
+@EnableConfigurationProperties(AiravataServerProperties.class)
 @PropertySource(
         value = "classpath:airavata.properties",
         factory = 
AiravataPropertiesConfiguration.AiravataPropertySourceFactory.class,
         ignoreResourceNotFound = true)
 public class AiravataPropertiesConfiguration {
 
+    private final Environment environment;
+
+    public AiravataPropertiesConfiguration(Environment environment) {
+        this.environment = environment;
+        logger.info("[BEAN-INIT] AiravataPropertiesConfiguration created");
+    }
+
+    /**
+     * Creates BeanPostProcessor that injects Environment into 
AiravataServerProperties
+     * before its @PostConstruct methods run. This ensures proper 
initialization order.
+     */
+    @Bean
+    public AiravataServerPropertiesPostProcessor 
airavataServerPropertiesPostProcessor() {
+        logger.info("[BEAN-INIT] Creating 
AiravataServerPropertiesPostProcessor bean");
+        return new AiravataServerPropertiesPostProcessor(environment);
+    }
+
     private static final Logger logger = 
LoggerFactory.getLogger(AiravataPropertiesConfiguration.class);
     private static final String SERVER_PROPERTIES = "airavata.properties";
     private static final String AIRAVATA_CONFIG_DIR = "airavata.config.dir";
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/config/AiravataServerProperties.java
 
b/airavata-api/src/main/java/org/apache/airavata/config/AiravataServerProperties.java
index fb0fbdbdf5..94bcc3cc10 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/config/AiravataServerProperties.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/config/AiravataServerProperties.java
@@ -35,17 +35,26 @@ public class AiravataServerProperties {
 
     private static final Logger logger = 
LoggerFactory.getLogger(AiravataServerProperties.class);
 
-    private final Environment environment;
+    private Environment environment;
 
-    // ==================== Core Configuration ====================
-    public String airavataConfigDir = ".";
+    public AiravataServerProperties() {
+        // No-arg constructor required for @ConfigurationProperties
+        logger.info("[BEAN-INIT] AiravataServerProperties constructor called");
+    }
 
-    public AiravataServerProperties(Environment environment) {
+    public void setEnvironment(Environment environment) {
+        logger.info("[BEAN-INIT] setEnvironment() called on 
AiravataServerProperties - environment is {}", 
+                environment != null ? "SET" : "NULL");
         this.environment = environment;
     }
 
+    // ==================== Core Configuration ====================
+    public String airavataConfigDir = ".";
+
     @PostConstruct
     public void bindProperties() {
+        logger.info("[BEAN-INIT] bindProperties() called on 
AiravataServerProperties - environment is {}", 
+                environment != null ? "SET" : "NULL");
         logger.info("Binding properties to AiravataServerProperties");
 
         // Manually bind database properties from environment
@@ -139,6 +148,10 @@ public class AiravataServerProperties {
     }
 
     private String getProperty(String key, String defaultValue) {
+        if (environment == null) {
+            logger.warn("[BEAN-INIT] Environment is null when calling 
getProperty({}), returning default", key);
+            return defaultValue;
+        }
         String value = environment.getProperty(key);
         return value != null ? value : defaultValue;
     }
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/config/AiravataServerPropertiesPostProcessor.java
 
b/airavata-api/src/main/java/org/apache/airavata/config/AiravataServerPropertiesPostProcessor.java
new file mode 100644
index 0000000000..d97d8713cc
--- /dev/null
+++ 
b/airavata-api/src/main/java/org/apache/airavata/config/AiravataServerPropertiesPostProcessor.java
@@ -0,0 +1,69 @@
+/**
+*
+* Licensed to the Apache Software Foundation (ASF) under one
+* or more contributor license agreements. See the NOTICE file
+* distributed with this work for additional information
+* regarding copyright ownership. The ASF licenses this file
+* to you under the Apache License, Version 2.0 (the
+* "License"); you may not use this file except in compliance
+* with the License. You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing,
+* software distributed under the License is distributed on an
+* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+* KIND, either express or implied. See the License for the
+* specific language governing permissions and limitations
+* under the License.
+*/
+package org.apache.airavata.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.core.Ordered;
+import org.springframework.core.env.Environment;
+
+/**
+ * BeanPostProcessor that injects Environment into AiravataServerProperties
+ * before its @PostConstruct methods run. This ensures Environment is available
+ * when bindProperties() is called.
+ */
+public class AiravataServerPropertiesPostProcessor implements 
BeanPostProcessor, Ordered {
+
+    private static final Logger logger = 
LoggerFactory.getLogger(AiravataServerPropertiesPostProcessor.class);
+    private final Environment environment;
+
+    public AiravataServerPropertiesPostProcessor(Environment environment) {
+        this.environment = environment;
+        logger.info("[BEAN-INIT] AiravataServerPropertiesPostProcessor created 
with Environment");
+    }
+
+    @Override
+    public Object postProcessBeforeInitialization(Object bean, String 
beanName) throws BeansException {
+        if (bean instanceof AiravataServerProperties) {
+            logger.info("[BEAN-INIT] Setting Environment on 
AiravataServerProperties (bean: {}) BEFORE initialization", beanName);
+            AiravataServerProperties properties = (AiravataServerProperties) 
bean;
+            properties.setEnvironment(environment);
+            logger.info("[BEAN-INIT] Environment set on 
AiravataServerProperties successfully");
+        }
+        return bean;
+    }
+
+    @Override
+    public Object postProcessAfterInitialization(Object bean, String beanName) 
throws BeansException {
+        if (bean instanceof AiravataServerProperties) {
+            logger.info("[BEAN-INIT] AiravataServerProperties (bean: {}) 
initialized AFTER @PostConstruct", beanName);
+        }
+        return bean;
+    }
+
+    @Override
+    public int getOrder() {
+        // Run early, before @PostConstruct methods
+        return Ordered.HIGHEST_PRECEDENCE;
+    }
+}
+
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/credential/services/CredentialEntityService.java
 
b/airavata-api/src/main/java/org/apache/airavata/credential/services/CredentialEntityService.java
index d3b6052f7c..8994f5f8da 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/credential/services/CredentialEntityService.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/credential/services/CredentialEntityService.java
@@ -69,6 +69,11 @@ public class CredentialEntityService {
         try {
             String airavataConfigDir = properties.airavataConfigDir;
             String credentialStoreKeyStorePath = 
properties.services.vault.keystore.url;
+            if (airavataConfigDir == null || credentialStoreKeyStorePath == 
null) {
+                logger.warn("Keystore configuration is missing 
(airavataConfigDir or keystore.url is null), encryption will be disabled");
+                this.keyStorePath = null;
+                return;
+            }
             this.keyStorePath = new java.io.File(airavataConfigDir, 
credentialStoreKeyStorePath).getAbsolutePath();
             this.secretKeyAlias = properties.services.vault.keystore.alias;
         } catch (Exception e) {
diff --git 
a/airavata-api/src/main/java/org/apache/airavata/service/OrchestratorService.java
 
b/airavata-api/src/main/java/org/apache/airavata/service/OrchestratorService.java
index 691ce21af9..a2bb38a57f 100644
--- 
a/airavata-api/src/main/java/org/apache/airavata/service/OrchestratorService.java
+++ 
b/airavata-api/src/main/java/org/apache/airavata/service/OrchestratorService.java
@@ -152,23 +152,6 @@ public class OrchestratorService {
         }
     }
 
-    public OrchestratorService(
-            OrchestratorRegistryService orchestratorRegistryService,
-            RegistryService registryService,
-            AiravataServerProperties properties,
-            SimpleOrchestratorImpl orchestrator,
-            CuratorFramework curatorClient,
-            Publisher publisher,
-            ProcessScheduler processScheduler) {
-        this.orchestratorRegistryService = orchestratorRegistryService;
-        this.registryService = registryService;
-        this.properties = properties;
-        this.orchestrator = orchestrator;
-        this.processScheduler = processScheduler;
-        this.curatorClient = curatorClient;
-        this.publisher = publisher;
-    }
-
     private boolean launchExperimentInternal(String experimentId, String 
gatewayId)
             throws ExperimentNotFoundException, OrchestratorException, 
RegistryServiceException,
                     LaunchValidationException {
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
index 2a8be51df8..b94931d109 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHAccountProvisionerFactoryTest.java
@@ -26,6 +26,7 @@ import java.util.stream.Collectors;
 import 
org.apache.airavata.accountprovisioning.provisioner.TestSSHAccountProvisioner;
 import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Import;
@@ -38,6 +39,7 @@ import org.springframework.test.context.TestPropertySource;
             
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
         })
 @TestPropertySource(locations = "classpath:airavata.properties")
+@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
 public class SSHAccountProvisionerFactoryTest {
 
     public SSHAccountProvisionerFactoryTest() {
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHUtilTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHUtilTest.java
index cc63103ed6..279b406426 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHUtilTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/accountprovisioning/SSHUtilTest.java
@@ -28,6 +28,7 @@ import 
org.apache.airavata.model.credential.store.SSHCredential;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Import;
@@ -40,6 +41,7 @@ import org.springframework.test.context.TestPropertySource;
             
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
         })
 @TestPropertySource(locations = "classpath:airavata.properties")
+@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
 public class SSHUtilTest {
 
     private static final Logger logger = 
LoggerFactory.getLogger(SSHUtilTest.class);
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/credential/impl/notifier/EmailNotifierTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/credential/impl/notifier/EmailNotifierTest.java
deleted file mode 100644
index e9b2c25a6a..0000000000
--- 
a/airavata-api/src/test/java/org/apache/airavata/credential/impl/notifier/EmailNotifierTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.credential.impl.notifier;
-
-import org.apache.airavata.credential.impl.notifier.EmailNotificationMessage;
-import org.apache.airavata.credential.impl.notifier.EmailNotifier;
-import org.apache.airavata.credential.impl.notifier.EmailNotifierConfiguration;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.TestPropertySource;
-
-/**
- * User: AmilaJ ([email protected])
- * Date: 12/27/13
- * Time: 1:54 PM
- */
-@SpringBootTest(
-        classes = {org.apache.airavata.config.JpaConfig.class, 
EmailNotifierTest.TestConfiguration.class},
-        properties = {
-            "spring.main.allow-bean-definition-overriding=true",
-            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
-        })
-@TestPropertySource(locations = "classpath:airavata.properties")
-public class EmailNotifierTest {
-
-    public EmailNotifierTest() {
-        // Spring Boot test - dependencies injected via constructor if needed
-    }
-
-    @BeforeEach
-    public void setUp() throws Exception {}
-
-    // Test is disabled. Need to fill in parameters to send mails
-    @Test
-    public void xtestNotifyMessage() throws Exception {
-
-        EmailNotifierConfiguration emailNotifierConfiguration =
-                new EmailNotifierConfiguration("smtp.googlemail.com", 465, 
"yyy", "xxx", true, "[email protected]");
-
-        EmailNotifier notifier = new EmailNotifier(emailNotifierConfiguration);
-        EmailNotificationMessage emailNotificationMessage =
-                new EmailNotificationMessage("Test", "[email protected]", 
"Testing credential store");
-        notifier.notifyMessage(emailNotificationMessage);
-    }
-
-    // Just to ignore test failures.
-    @Test
-    public void testIgnore() {}
-
-    @org.springframework.context.annotation.Configuration
-    @ComponentScan(
-            basePackages = {
-                "org.apache.airavata.credential",
-                "org.apache.airavata.config"
-            },
-            excludeFilters = {
-                @org.springframework.context.annotation.ComponentScan.Filter(
-                        type = 
org.springframework.context.annotation.FilterType.ASSIGNABLE_TYPE,
-                        classes = {
-                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
-                            
org.apache.airavata.config.ThriftServerLauncher.class
-                        })
-            })
-    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
-    static class TestConfiguration {}
-}
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/credential/utils/ConfigurationReaderTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/credential/utils/ConfigurationReaderTest.java
index c5244ac40c..8ef325b1f3 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/credential/utils/ConfigurationReaderTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/credential/utils/ConfigurationReaderTest.java
@@ -21,74 +21,36 @@ package org.apache.airavata.credential.utils;
 
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import org.junit.jupiter.api.BeforeEach;
+import org.apache.airavata.credential.exceptions.CredentialStoreException;
 import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.TestPropertySource;
 
 /**
  * User: AmilaJ ([email protected])
  * Date: 8/25/13
  * Time: 10:28 AM
  */
-@SpringBootTest(
-        classes = {org.apache.airavata.config.JpaConfig.class, 
ConfigurationReaderTest.TestConfiguration.class},
-        properties = {
-            "spring.main.allow-bean-definition-overriding=true",
-            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
-        })
-@TestPropertySource(locations = "classpath:airavata.properties")
 public class ConfigurationReaderTest {
 
     private static final Logger logger = 
LoggerFactory.getLogger(ConfigurationReaderTest.class);
 
-    public ConfigurationReaderTest() {
-        // Spring Boot test - no dependencies to inject for this utility test
-    }
-
-    @BeforeEach
-    public void setUp() throws Exception {}
-
     @Test
-    public void testGetSuccessUrl() throws Exception {
-
+    public void testGetSuccessUrl() throws CredentialStoreException {
         ConfigurationReader configurationReader = new ConfigurationReader();
         logger.info("Success URL: {}", configurationReader.getSuccessUrl());
         assertEquals("/credential-store/success.jsp", 
configurationReader.getSuccessUrl());
     }
 
     @Test
-    public void testGetErrorUrl() throws Exception {
-
+    public void testGetErrorUrl() throws CredentialStoreException {
         ConfigurationReader configurationReader = new ConfigurationReader();
         assertEquals("/credential-store/error.jsp", 
configurationReader.getErrorUrl());
     }
 
     @Test
-    public void testRedirectUrl() throws Exception {
-
+    public void testRedirectUrl() throws CredentialStoreException {
         ConfigurationReader configurationReader = new ConfigurationReader();
         assertEquals("/credential-store/show-redirect.jsp", 
configurationReader.getPortalRedirectUrl());
     }
-
-    @org.springframework.context.annotation.Configuration
-    @ComponentScan(
-            basePackages = {
-                "org.apache.airavata.credential",
-                "org.apache.airavata.config"
-            },
-            excludeFilters = {
-                @org.springframework.context.annotation.ComponentScan.Filter(
-                        type = 
org.springframework.context.annotation.FilterType.ASSIGNABLE_TYPE,
-                        classes = {
-                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
-                            
org.apache.airavata.config.ThriftServerLauncher.class
-                        })
-            })
-    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
-    static class TestConfiguration {}
 }
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java
 
b/airavata-api/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java
deleted file mode 100644
index 2fcfa8af0f..0000000000
--- 
a/airavata-api/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithGRAM.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.orchestrator.core;
-
-public class OrchestratorTestWithGRAM extends BaseOrchestratorTest {
-    //    private static final Logger log = 
LoggerFactory.getLogger(OrchestratorTestWithGRAM.class);
-    //
-    //    private Orchestrator orchestrator;
-    //
-    //    private String experimentID;
-    //
-    //    @BeforeTest
-    //    public void setUp() throws Exception {
-    //        AiravataUtils.setExecutionAsServer();
-    //        super.setUp();
-    //        orchestrator = new SimpleOrchestratorImpl();
-    //        createJobRequestWithDocuments();
-    //    }
-    //
-    //    private void createJobRequestWithDocuments() throws Exception{
-    //        //Using new airavata-api methods to store experiment metadata
-    ////        BasicMetadata basicMetadata = new BasicMetadata();
-    ////        basicMetadata.setExperimentName("test-trestles");
-    ////        basicMetadata.setUserName("admin");
-    ////        basicMetadata.setUserNameIsSet(true);
-    ////        basicMetadata.setProjectID("default");
-    ////
-    ////        AdvancedInputDataHandling advancedInputDataHandling = new 
AdvancedInputDataHandling();
-    ////        AdvancedOutputDataHandling advancedOutputDataHandling = new 
AdvancedOutputDataHandling();
-    ////        ComputationalResourceScheduling 
computationalResourceScheduling = new
-    // ComputationalResourceScheduling();
-    ////        QualityOfServiceParams qualityOfServiceParams = new 
QualityOfServiceParams();
-    ////        ConfigurationData configurationData = new ConfigurationData();
-    ////
-    ////        HashMap<String, String> exInputs = new HashMap<String, 
String>();
-    ////        exInputs.put("echo_input", "echo_output=hello");
-    ////
-    ////        configurationData.setExperimentInputs(exInputs);
-    ////        
configurationData.setAdvanceInputDataHandling(advancedInputDataHandling);
-    ////        
configurationData.setAdvanceOutputDataHandling(advancedOutputDataHandling);
-    ////        
configurationData.setComputationalResourceScheduling(computationalResourceScheduling);
-    ////        configurationData.setQosParams(qualityOfServiceParams);
-    ////        configurationData.setApplicationId("SimpleEcho1");
-    ////
-    ////        Registry registry = new RegistryImpl();
-    ////        experimentID = (String) 
registry.add(ParentDataType.EXPERIMENT, basicMetadata);
-    ////        registry.add(ChildDataType.EXPERIMENT_CONFIGURATION_DATA, 
configurationData, experimentID);
-    //    }
-    //
-    //    @Test
-    //    public void noDescriptorTest() throws Exception {
-    //
-    ////        boolean b = orchestrator.launchProcess(experimentID);
-    ////
-    ////        if (b) {
-    ////            Assertions.assertTrue(true);
-    ////        } else {
-    ////            Assertions.assertFalse(true);
-    ////        }
-    //    }
-
-}
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithMyProxyAuth.java
 
b/airavata-api/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithMyProxyAuth.java
deleted file mode 100644
index 7d9ce29c8a..0000000000
--- 
a/airavata-api/src/test/java/org/apache/airavata/orchestrator/core/OrchestratorTestWithMyProxyAuth.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.orchestrator.core;
-
-public class OrchestratorTestWithMyProxyAuth extends BaseOrchestratorTest {
-    //    private static final Logger log = 
LoggerFactory.getLogger(NewOrchestratorTest.class);
-    //
-    //    private Orchestrator orchestrator;
-    //
-    //    private String experimentID;
-    //
-    //    private List<TaskDetails> tasks;
-    //
-    //    @BeforeTest
-    //    public void setUp() throws Exception {
-    //        AiravataUtils.setExecutionAsServer();
-    //        super.setUp();
-    //        orchestrator = new SimpleOrchestratorImpl();
-    ////         System.setProperty("myproxy.username", "ogce");
-    ////         System.setProperty("myproxy.password", "");
-    //         System.setProperty("trusted.cert.location", 
"/Users/lahirugunathilake/Downloads/certificates");
-    ////        
System.setProperty("trusted.cert.location",System.getProperty("gsi.working.directory"));
-    //    }
-    //
-    //    @Test
-    //    public void noDescriptorTest() throws Exception {
-    //        List<DataObjectType> exInputs = new ArrayList<DataObjectType>();
-    //        DataObjectType input = new DataObjectType();
-    //        input.setKey("echo_input");
-    //        input.setType(DataType.STRING);
-    //        input.setValue("echo_output=Hello World");
-    //        exInputs.add(input);
-    //
-    //        List<DataObjectType> exOut = new ArrayList<DataObjectType>();
-    //        DataObjectType output = new DataObjectType();
-    //        output.setKey("echo_output");
-    //        output.setType(DataType.STRING);
-    //        output.setValue("");
-    //        exOut.add(output);
-    //
-    //        Experiment simpleExperiment =
-    //                ExperimentModelUtil.createSimpleExperiment("default", 
"admin", "echoExperiment", "SimpleEcho2",
-    // "SimpleEcho2", exInputs);
-    //        simpleExperiment.setExperimentOutputs(exOut);
-    //
-    //        ComputationalResourceScheduling scheduling =
-    // 
ExperimentModelUtil.createComputationResourceScheduling("trestles.sdsc.edu", 1, 
1, 1, "normal", 0, 0, 1,
-    // "sds128");
-    //        scheduling.setResourceHostId("gsissh-trestles");
-    //        UserConfigurationData userConfigurationData = new 
UserConfigurationData();
-    //        userConfigurationData.setAiravataAutoSchedule(false);
-    //        userConfigurationData.setOverrideManualScheduledParams(false);
-    //        
userConfigurationData.setComputationalResourceScheduling(scheduling);
-    //        simpleExperiment.setUserConfigurationData(userConfigurationData);
-    //
-    //        WorkflowNodeDetails test = 
ExperimentModelUtil.createWorkflowNode("test", null);
-    //        Registry registry = RegistryFactory.getDefaultExpCatalog();
-    //        experimentID = (String) registry.add(ParentDataType.EXPERIMENT, 
simpleExperiment);
-    //        tasks = orchestrator.createTasks(experimentID);
-    //
-    //        for (TaskDetails taskDetail: tasks)
-    //        {
-    //            orchestrator.launchProcess(simpleExperiment,test, 
taskDetail,null);
-    //        }
-    //    }
-}
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ExperimentRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ExperimentRepositoryTest.java
index 29e2be91e6..88729687f0 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ExperimentRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ExperimentRepositoryTest.java
@@ -36,13 +36,49 @@ import 
org.apache.airavata.registry.services.ExperimentService;
 import org.apache.airavata.registry.services.GatewayService;
 import org.apache.airavata.registry.services.ProjectService;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
ExperimentRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class ExperimentRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final ProjectService projectService;
     private final ExperimentService experimentService;
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobRepositoryTest.java
index 8c248953fb..e58657339b 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobRepositoryTest.java
@@ -45,13 +45,49 @@ import org.apache.airavata.registry.services.ProjectService;
 import org.apache.airavata.registry.services.TaskService;
 import org.apache.airavata.registry.utils.DBConstants;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
JobRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class JobRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final ProjectService projectService;
     private final ExperimentService experimentService;
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobStatusRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobStatusRepositoryTest.java
index cb85ae2376..bd4aacadba 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobStatusRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/JobStatusRepositoryTest.java
@@ -46,10 +46,47 @@ import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
+
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
JobStatusRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class JobStatusRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final ProjectService projectService;
     private final ExperimentService experimentService;
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessRepositoryTest.java
index e9c83bfd57..aeb23e7b57 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessRepositoryTest.java
@@ -40,13 +40,49 @@ import org.apache.airavata.registry.services.ProcessService;
 import org.apache.airavata.registry.services.ProjectService;
 import org.apache.airavata.registry.utils.DBConstants;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
ProcessRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class ProcessRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final ProjectService projectService;
     private final ExperimentService experimentService;
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessStatusRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessStatusRepositoryTest.java
index 99ec027f5a..b05ff139c3 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessStatusRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/ProcessStatusRepositoryTest.java
@@ -41,10 +41,47 @@ import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
+
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
ProcessStatusRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class ProcessStatusRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final ProjectService projectService;
     private final ExperimentService experimentService;
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/QueueStatusRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/QueueStatusRepositoryTest.java
index 742ac8db0d..9c02c8d8ba 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/QueueStatusRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/QueueStatusRepositoryTest.java
@@ -29,13 +29,49 @@ import 
org.apache.airavata.registry.exceptions.RegistryException;
 import org.apache.airavata.registry.repositories.common.TestBase;
 import org.apache.airavata.registry.services.QueueStatusService;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
QueueStatusRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class QueueStatusRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final QueueStatusService queueStatusService;
 
     public QueueStatusRepositoryTest(QueueStatusService queueStatusService) {
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskRepositoryTest.java
index 653b9f0d5f..547a918ee2 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskRepositoryTest.java
@@ -42,13 +42,49 @@ import org.apache.airavata.registry.services.ProjectService;
 import org.apache.airavata.registry.services.TaskService;
 import org.apache.airavata.registry.utils.DBConstants;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
TaskRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class TaskRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final ProjectService projectService;
     private final ExperimentService experimentService;
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskStatusRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskStatusRepositoryTest.java
index 6ac78138e6..07d404a0fc 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskStatusRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/TaskStatusRepositoryTest.java
@@ -40,13 +40,49 @@ import org.apache.airavata.registry.services.ProjectService;
 import org.apache.airavata.registry.services.TaskService;
 import org.apache.airavata.registry.services.TaskStatusService;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
TaskStatusRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class TaskStatusRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final ProjectService projectService;
     private final ExperimentService experimentService;
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/UserRepositoryTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/UserRepositoryTest.java
index fca30103e6..2edc4d07fb 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/UserRepositoryTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/registry/repositories/expcatalog/UserRepositoryTest.java
@@ -35,13 +35,49 @@ import org.apache.airavata.registry.services.UserService;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.FilterType;
+import org.springframework.context.annotation.Import;
 import org.springframework.test.context.TestPropertySource;
 
-@SpringBootTest(classes = {org.apache.airavata.config.JpaConfig.class})
+@SpringBootTest(
+        classes = {org.apache.airavata.config.JpaConfig.class, 
UserRepositoryTest.TestConfiguration.class},
+        properties = {
+            "spring.main.allow-bean-definition-overriding=true",
+            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
+        })
 @TestPropertySource(locations = "classpath:airavata.properties")
 public class UserRepositoryTest extends TestBase {
 
+    @Configuration
+    @ComponentScan(
+            basePackages = {"org.apache.airavata.service", 
"org.apache.airavata.registry", "org.apache.airavata.config"},
+            excludeFilters = {
+                @ComponentScan.Filter(
+                        type = FilterType.ASSIGNABLE_TYPE,
+                        classes = {
+                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
+                            
org.apache.airavata.config.ThriftServerLauncher.class,
+                            
org.apache.airavata.monitor.realtime.RealtimeMonitor.class,
+                            
org.apache.airavata.monitor.email.EmailBasedMonitor.class,
+                            
org.apache.airavata.monitor.cluster.ClusterStatusMonitorJob.class,
+                            org.apache.airavata.monitor.AbstractMonitor.class,
+                            
org.apache.airavata.helix.impl.controller.HelixController.class,
+                            
org.apache.airavata.helix.impl.participant.GlobalParticipant.class,
+                            
org.apache.airavata.helix.impl.workflow.PreWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.PostWorkflowManager.class,
+                            
org.apache.airavata.helix.impl.workflow.ParserWorkflowManager.class
+                        }),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.monitor\\..*"),
+                @ComponentScan.Filter(type = FilterType.REGEX, pattern = 
"org\\.apache\\.airavata\\.helix\\..*")
+            })
+    
@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
+    static class TestConfiguration {}
+
     private final GatewayService gatewayService;
     private final UserService userService;
 
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/security/KeyCloakSecurityManagerTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/security/KeyCloakSecurityManagerTest.java
index 0e177843c6..f3d67e2be3 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/security/KeyCloakSecurityManagerTest.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/security/KeyCloakSecurityManagerTest.java
@@ -42,8 +42,6 @@ import org.apache.airavata.service.SharingRegistryService;
 import org.apache.airavata.sharing.models.UserGroup;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
@@ -56,7 +54,7 @@ import 
org.springframework.test.context.bean.override.mockito.MockitoBean;
 @SpringBootTest(classes = 
{KeyCloakSecurityManagerTest.TestConfiguration.class})
 @TestPropertySource(properties = {"security.tls.enabled=true", 
"security.iam.server-url=https://iam.server/auth"})
 public class KeyCloakSecurityManagerTest {
-    private static final Logger logger = 
LoggerFactory.getLogger(KeyCloakSecurityManagerTest.class);
+
     public static final String TEST_USERNAME = "test-user";
     public static final String TEST_GATEWAY = "test-gateway";
     public static final String TEST_ACCESS_TOKEN = "abc123";
@@ -94,7 +92,8 @@ public class KeyCloakSecurityManagerTest {
         @Bean
         @Primary
         public AiravataServerProperties 
airavataServerProperties(org.springframework.core.env.Environment environment) {
-            AiravataServerProperties properties = new 
AiravataServerProperties(environment);
+            AiravataServerProperties properties = new 
AiravataServerProperties();
+            properties.setEnvironment(environment);
             properties.security.tls.enabled = true;
             return properties;
         }
@@ -102,7 +101,6 @@ public class KeyCloakSecurityManagerTest {
 
     @BeforeEach
     public void setUp() throws AiravataSecurityException, 
ApplicationSettingsException {
-        // Reset mocks
         reset(mockRegistryService, mockSharingRegistryService, 
mockAuthzCacheManagerFactory, mockAuthzCacheManager);
     }
 
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/security/userstore/JDBCUserStoreTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/security/userstore/JDBCUserStoreTest.java
deleted file mode 100644
index 49769191ce..0000000000
--- 
a/airavata-api/src/test/java/org/apache/airavata/security/userstore/JDBCUserStoreTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.security.userstore;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.airavata.security.UserStore;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.transaction.annotation.Transactional;
-import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
-
-/**
- * Test class for JDBC user store.
- */
-@SpringBootTest(
-        classes = {org.apache.airavata.config.JpaConfig.class, 
JDBCUserStoreTest.TestConfiguration.class},
-        properties = {
-            "spring.main.allow-bean-definition-overriding=true",
-            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
-        })
-@TestPropertySource(locations = "classpath:airavata.properties")
-@Transactional
-public class JDBCUserStoreTest {
-
-    /**
-     * <specificConfigurations>
-     * <database>
-     * 
<!--jdbcUrl>jdbc:h2:modules/commons/airavata-registry-rest/src/test/resources/testdb/test</jdbcUrl-->
-     * <jdbcUrl>jdbc:h2:src/test/resources/testdb/test</jdbcUrl>
-     * <userName>sa</userName>
-     * <password>sa</password>
-     * <databaseDriver>org.h2.Driver</databaseDriver>
-     * <userTableName>AIRAVATA_USER</userTableName>
-     * <userNameColumnName>USERID</userNameColumnName>
-     * <passwordColumnName>PASSWORD</passwordColumnName>
-     * </database>
-     * </specificConfigurations>
-     * @throws Exception
-     */
-    public JDBCUserStoreTest() {
-        // Spring Boot test - no dependencies to inject for this utility test
-    }
-
-    @BeforeEach
-    public void setUp() throws Exception {}
-
-    @Test
-    public void testAuthenticate() throws Exception {
-
-        DocumentBuilderFactory dbFactory = 
DocumentBuilderFactory.newInstance();
-        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
-        Document doc = 
dBuilder.parse(this.getClass().getClassLoader().getResourceAsStream("jdbc-authenticator.xml"));
-        doc.getDocumentElement().normalize();
-
-        NodeList configurations = 
doc.getElementsByTagName("specificConfigurations");
-        UserStore userStore = new JDBCUserStore();
-        userStore.configure(configurations.item(0));
-
-        assertTrue(userStore.authenticate("amilaj", "secret"));
-        assertFalse(userStore.authenticate("amilaj", "1secret"));
-        assertFalse(userStore.authenticate("lahiru", "1234"));
-    }
-
-    @org.springframework.context.annotation.Configuration
-    @ComponentScan(
-            basePackages = {
-                "org.apache.airavata.security",
-                "org.apache.airavata.config"
-            },
-            excludeFilters = {
-                @org.springframework.context.annotation.ComponentScan.Filter(
-                        type = 
org.springframework.context.annotation.FilterType.ASSIGNABLE_TYPE,
-                        classes = {
-                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
-                            
org.apache.airavata.config.ThriftServerLauncher.class
-                        })
-            })
-    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
-    static class TestConfiguration {}
-}
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/security/userstore/LDAPUserStoreTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/security/userstore/LDAPUserStoreTest.java
deleted file mode 100644
index 52d862b7d0..0000000000
--- 
a/airavata-api/src/test/java/org/apache/airavata/security/userstore/LDAPUserStoreTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.security.userstore;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.apache.airavata.security.UserStore;
-import org.junit.jupiter.api.Disabled;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.TestPropertySource;
-import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
-
-/**
- * User store test 2
- */
-@Disabled("Need LDAP server to run these tests")
-@SpringBootTest(
-        classes = {org.apache.airavata.config.JpaConfig.class, 
LDAPUserStoreTest.TestConfiguration.class},
-        properties = {
-            "spring.main.allow-bean-definition-overriding=true",
-            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
-        })
-@TestPropertySource(locations = "classpath:airavata.properties")
-public class LDAPUserStoreTest {
-
-    private LDAPUserStore ldapUserStore;
-
-    public LDAPUserStoreTest() {
-        // Spring Boot test - no dependencies to inject for this utility test
-    }
-
-    @Test
-    public void setUp() {
-        ldapUserStore = new LDAPUserStore();
-        ldapUserStore.initializeLDAP("ldap://localhost:10389";, "admin", 
"secret", "uid={0},ou=system");
-    }
-
-    @Test
-    public void testAuthenticate() throws Exception {
-        setUp();
-        assertTrue(ldapUserStore.authenticate("amilaj", "secret"));
-        assertFalse(ldapUserStore.authenticate("amilaj", "secret1"));
-    }
-
-    @Test
-    public void testConfigure() throws Exception {
-        DocumentBuilderFactory dbFactory = 
DocumentBuilderFactory.newInstance();
-        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
-        Document doc = 
dBuilder.parse(this.getClass().getClassLoader().getResourceAsStream("ldap-authenticator.xml"));
-        doc.getDocumentElement().normalize();
-        NodeList configurations = 
doc.getElementsByTagName("specificConfigurations");
-        UserStore userStore = new LDAPUserStore();
-        userStore.configure(configurations.item(0));
-        assertTrue(userStore.authenticate("amilaj", "secret"));
-    }
-
-    @org.springframework.context.annotation.Configuration
-    @ComponentScan(
-            basePackages = {
-                "org.apache.airavata.security",
-                "org.apache.airavata.config"
-            },
-            excludeFilters = {
-                @org.springframework.context.annotation.ComponentScan.Filter(
-                        type = 
org.springframework.context.annotation.FilterType.ASSIGNABLE_TYPE,
-                        classes = {
-                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
-                            
org.apache.airavata.config.ThriftServerLauncher.class
-                        })
-            })
-    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
-    static class TestConfiguration {}
-}
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/security/userstore/SessionDBUserStoreTest.java
 
b/airavata-api/src/test/java/org/apache/airavata/security/userstore/SessionDBUserStoreTest.java
deleted file mode 100644
index c46986e83b..0000000000
--- 
a/airavata-api/src/test/java/org/apache/airavata/security/userstore/SessionDBUserStoreTest.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
-*
-* Licensed to the Apache Software Foundation (ASF) under one
-* or more contributor license agreements. See the NOTICE file
-* distributed with this work for additional information
-* regarding copyright ownership. The ASF licenses this file
-* to you under the Apache License, Version 2.0 (the
-* "License"); you may not use this file except in compliance
-* with the License. You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing,
-* software distributed under the License is distributed on an
-* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-* KIND, either express or implied. See the License for the
-* specific language governing permissions and limitations
-* under the License.
-*/
-package org.apache.airavata.security.userstore;
-
-import static org.junit.jupiter.api.Assertions.*;
-
-import java.io.InputStream;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Import;
-import org.springframework.test.context.TestPropertySource;
-import org.springframework.transaction.annotation.Transactional;
-import org.w3c.dom.Document;
-import org.w3c.dom.NodeList;
-
-/**
- * Test class for session DB authenticator.
- */
-@SpringBootTest(
-        classes = {org.apache.airavata.config.JpaConfig.class, 
SessionDBUserStoreTest.TestConfiguration.class},
-        properties = {
-            "spring.main.allow-bean-definition-overriding=true",
-            
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
-        })
-@TestPropertySource(locations = "classpath:airavata.properties")
-@Transactional
-public class SessionDBUserStoreTest {
-
-    private SessionDBUserStore sessionDBUserStore;
-
-    private InputStream configurationFileStream =
-            
this.getClass().getClassLoader().getResourceAsStream("session-authenticator.xml");
-
-    public SessionDBUserStoreTest() {
-        // Spring Boot test - no dependencies to inject for this utility test
-    }
-
-    @BeforeEach
-    public void setUp() throws Exception {
-        sessionDBUserStore = new SessionDBUserStore();
-        loadConfigurations();
-    }
-
-    private void loadConfigurations() throws Exception {
-        DocumentBuilderFactory dbFactory = 
DocumentBuilderFactory.newInstance();
-        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
-        Document doc = dBuilder.parse(configurationFileStream);
-        doc.getDocumentElement().normalize();
-
-        NodeList specificConfigurations = 
doc.getElementsByTagName("specificConfigurations");
-        sessionDBUserStore.configure(specificConfigurations.item(0));
-    }
-
-    @Test
-    public void testAuthenticate() throws Exception {
-        assertTrue(sessionDBUserStore.authenticate("1234"));
-    }
-
-    @Test
-    public void testAuthenticateFailure() throws Exception {
-        assertFalse(sessionDBUserStore.authenticate("12345"));
-    }
-
-    @org.springframework.context.annotation.Configuration
-    @ComponentScan(
-            basePackages = {
-                "org.apache.airavata.security",
-                "org.apache.airavata.config"
-            },
-            excludeFilters = {
-                @org.springframework.context.annotation.ComponentScan.Filter(
-                        type = 
org.springframework.context.annotation.FilterType.ASSIGNABLE_TYPE,
-                        classes = {
-                            
org.apache.airavata.config.BackgroundServicesLauncher.class,
-                            
org.apache.airavata.config.ThriftServerLauncher.class
-                        })
-            })
-    @Import(org.apache.airavata.config.AiravataPropertiesConfiguration.class)
-    static class TestConfiguration {}
-}
diff --git 
a/airavata-api/src/test/java/org/apache/airavata/service/integration/ServiceIntegrationTestBase.java
 
b/airavata-api/src/test/java/org/apache/airavata/service/integration/ServiceIntegrationTestBase.java
index 8fe5340919..5860dc1b62 100644
--- 
a/airavata-api/src/test/java/org/apache/airavata/service/integration/ServiceIntegrationTestBase.java
+++ 
b/airavata-api/src/test/java/org/apache/airavata/service/integration/ServiceIntegrationTestBase.java
@@ -24,9 +24,11 @@ import java.util.Map;
 import org.apache.airavata.common.utils.Constants;
 import org.apache.airavata.model.security.AuthzToken;
 import org.junit.jupiter.api.BeforeEach;
+import 
org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Import;
+import org.springframework.test.context.TestConstructor;
 import org.springframework.test.context.TestPropertySource;
 import org.springframework.test.context.transaction.TestTransaction;
 import org.springframework.transaction.annotation.Transactional;
@@ -43,6 +45,8 @@ import 
org.springframework.transaction.annotation.Transactional;
             
"spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesAutoConfiguration"
         })
 @TestPropertySource(locations = "classpath:airavata.properties")
+@EnableConfigurationProperties(org.apache.airavata.config.AiravataServerProperties.class)
+@TestConstructor(autowireMode = TestConstructor.AutowireMode.ALL)
 @Transactional
 public abstract class ServiceIntegrationTestBase {
 
diff --git a/airavata-api/src/test/resources/credential-store/client.xml 
b/airavata-api/src/test/resources/credential-store/client.xml
new file mode 100644
index 0000000000..e018720201
--- /dev/null
+++ b/airavata-api/src/test/resources/credential-store/client.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<credential-store>
+    <successUri>/credential-store/success.jsp</successUri>
+    <errorUri>/credential-store/error.jsp</errorUri>
+    <redirectUri>/credential-store/show-redirect.jsp</redirectUri>
+</credential-store>
diff --git a/pom.xml b/pom.xml
index d5cc2be601..1a91ac20c1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -330,6 +330,11 @@ under the License.
                 <artifactId>mariadb-java-client</artifactId>
                 <version>3.5.4</version>
             </dependency>
+            <dependency>
+                <groupId>com.h2database</groupId>
+                <artifactId>h2</artifactId>
+                <version>2.2.224</version>
+            </dependency>
 
             <!-- Jakarta -->
             <dependency>
@@ -612,7 +617,7 @@ under the License.
                     <skipTests>${skipTests}</skipTests>
                     
<workingDirectory>${project.build.testOutputDirectory}</workingDirectory>
                     <useSystemClassLoader>false</useSystemClassLoader>
-                    <argLine>-Xmx1024m -XX:MaxPermSize=256m --add-opens 
java.base/java.lang=ALL-UNNAMED
+                    <argLine>-Xmx1024m --add-opens 
java.base/java.lang=ALL-UNNAMED
                         
-javaagent:${settings.localRepository}/org/jmockit/jmockit/1.50/jmockit-1.50.jar
                     </argLine>
                     <reuseForks>false</reuseForks>

Reply via email to