未在JAAS中加载和注入Spring Bean

未在JAAS中加载和注入Spring Bean,spring,mongodb,spring-boot,dependency-injection,Spring,Mongodb,Spring Boot,Dependency Injection,我试图将Spring UserRepository加载到我的LoginModule,但容器没有加载它。在我看来,LoginContext似乎是通过使用提供给LoginContext的配置文件动态加载LoginModule。由于这是由JVM加载的,所以容器似乎忽略了LoginModule,尽管我尝试了@Component、@Service、@Configurable注释,请帮助 JUnit测试 @RunWith(SpringRunner.class) @SpringBootTest @Transa

我试图将Spring UserRepository加载到我的LoginModule,但容器没有加载它。在我看来,LoginContext似乎是通过使用提供给LoginContext的配置文件动态加载LoginModule。由于这是由JVM加载的,所以容器似乎忽略了LoginModule,尽管我尝试了@Component、@Service、@Configurable注释,请帮助

JUnit测试

@RunWith(SpringRunner.class)
@SpringBootTest
@Transactional
@ComponentScan("com.kashtech.jaas")
public class JaasLoginModuleTests {
...
@Before
public void initialize() {

    System.setProperty("java.security.auth.login.config", "ebay-manager-jaas.config");      
    try {
        lc = new LoginContext("EbayManagerLoginModule", new JaasCallBackHandler("test", "test"));

    } catch (LoginException e) {
        e.printStackTrace();
    }
}
@Test
public void testLogin() {

    try {
        lc.login();
    } catch (LoginException le) {
        log.error("Error whilst testing login : " + le.getMessage());
    }
}
登录模块

import com.kashtech.jaas.repository.mongodb.UserRepository;

public class JaasLoginModule implements LoginModule {   

@Inject
private UserRepository userRepository;

....

//find user from DB
dbUser = findUserFromDB(username);

public User findUserFromDB(String username) {               
    User u = userRepository.findByUsername(username);
    return u;
    }
}
应用程序配置

@SpringBootApplication
@ComponentScan("com.kashtech.jaas")
@EnableMongoRepositories(basePackages = "com.kashtech.jaas.repository.mongodb")
public class JaasSystemApplication {

public static void main(String[] args) {
    SpringApplication.run(JaasSystemApplication.class, args);
    }
}
存储库

import org.springframework.data.mongodb.repository.MongoRepository;
import com.kashtech.jaas.domain.User;

public interface UserRepository extends MongoRepository<User, String>{

    public User findByUsername(String username);
}
堆栈跟踪

2017-04-28 19:19:56.551  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Starting JaasLoginModuleTests on Panther with PID 7592 (started by kashif in C:\Development\workspaces\jaas-system)
2017-04-28 19:19:56.551  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : The following profiles are active: Dev
2017-04-28 19:19:56.578  INFO 7592 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@1757cd72: startup date [Fri Apr 28 19:19:56 BST 2017]; root of context hierarchy
2017-04-28 19:19:56.905  INFO 7592 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-04-28 19:19:56.924  INFO 7592 --- [           main] .RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface com.kashtech.jaas.repository.mongodb.UserRepository.
2017-04-28 19:19:56.931  INFO 7592 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-04-28 19:19:56.982  INFO 7592 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'mongo' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=datasourceConfig; factoryMethodName=mongo; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/kashtech/jaas/config/DatasourceConfig.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; factoryMethodName=mongo; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/mongo/MongoAutoConfiguration.class]]
2017-04-28 19:19:57.190  INFO 7592 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : ##################### Configuring DataSource #####################
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver class : com.mysql.jdbc.Driver
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver URL : jdbc:mysql://localhost/ebay-manager
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver username : root
2017-04-28 19:19:57.360  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver password : admin
2017-04-28 19:19:57.480  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:57.499  INFO 7592 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2017-04-28 19:19:57.573  INFO 7592 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.0.12.Final}
2017-04-28 19:19:57.575  INFO 7592 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2017-04-28 19:19:57.576  INFO 7592 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2017-04-28 19:19:57.618  INFO 7592 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Fri Apr 28 19:19:57 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2017-04-28 19:19:58.159  INFO 7592 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2017-04-28 19:19:58.440  WARN 7592 --- [           main] o.h.b.i.SessionFactoryBuilderImpl        : Unrecognized hbm2ddl_auto value : none.  Supported values include create, create-drop, update, and validate.  Ignoring
2017-04-28 19:19:58.556  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:58.575  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:58.575  INFO 7592 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2017-04-28 19:19:58.585  INFO 7592 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2017-04-28 19:19:58.596  WARN 7592 --- [           main] o.h.b.i.SessionFactoryBuilderImpl        : Unrecognized hbm2ddl_auto value : none.  Supported values include create, create-drop, update, and validate.  Ignoring
2017-04-28 19:19:58.602  WARN 7592 --- [           main] o.h.j.i.EntityManagerFactoryRegistry     : HHH000436: Entity manager factory name (default) is already registered.  If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name'
2017-04-28 19:19:58.602  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : ##################### Configuring Mongo DataSource ####################
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Host : 127.0.0.1
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Port : 27017
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Database : ebay-manager
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : #######################################################################
2017-04-28 19:19:59.212  INFO 7592 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[127.0.0.1:27017], mode=MULTIPLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
2017-04-28 19:19:59.212  INFO 7592 --- [           main] org.mongodb.driver.cluster               : Adding discovered server 127.0.0.1:27017 to client view of cluster
2017-04-28 19:19:59.309  INFO 7592 --- [127.0.0.1:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1, serverValue:18}] to 127.0.0.1:27017
2017-04-28 19:19:59.311  INFO 7592 --- [127.0.0.1:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=127.0.0.1:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 2]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, roundTripTimeNanos=613444}
2017-04-28 19:19:59.312  INFO 7592 --- [127.0.0.1:27017] org.mongodb.driver.cluster               : Discovered cluster type of STANDALONE
2017-04-28 19:19:59.453  INFO 7592 --- [           main] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:2, serverValue:19}] to 127.0.0.1:27017
2017-04-28 19:19:59.915  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Started JaasLoginModuleTests in 3.67 seconds (JVM running for 4.403)
2017-04-28 19:20:00.035  INFO 7592 --- [           main] o.s.t.c.transaction.TransactionContext   : Began transaction (1) for test context [DefaultTestContext@103f852 testClass = JaasLoginModuleTests, testInstance = com.kashtech.JaasLoginModuleTests@44a3ec6b, testMethod = testLogin@JaasLoginModuleTests, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@587c290d testClass = JaasLoginModuleTests, locations = '{}', classes = '{class com.kashtech.JaasSystemApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@14acaea5, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@59fa1d9b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@77cd7a0], contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@60c8a093]; rollback [true]
2017-04-28 19:20:00.065  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Callback Handler invoked 
test
2017-04-28 19:20:00.068 ERROR 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Error whilst testing login : java.lang.NullPointerException
at com.kashtech.jaas.domain.JaasLoginModule.findUserFromDB(JaasLoginModule.java:307)
at com.kashtech.jaas.domain.JaasLoginModule.login(JaasLoginModule.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.access$000(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)
at javax.security.auth.login.LoginContext.login(Unknown Source)
at com.kashtech.JaasLoginModuleTests.testLogin(JaasLoginModuleTests.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

2017-04-28 19:20:00.077  INFO 7592 --- [           main] o.s.t.c.transaction.TransactionContext   : Rolled back transaction for test context [DefaultTestContext@103f852 testClass = JaasLoginModuleTests, testInstance = com.kashtech.JaasLoginModuleTests@44a3ec6b, testMethod = testLogin@JaasLoginModuleTests, testException = java.lang.NullPointerException, mergedContextConfiguration = [MergedContextConfiguration@587c290d testClass = JaasLoginModuleTests, locations = '{}', classes = '{class com.kashtech.JaasSystemApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@14acaea5, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@59fa1d9b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@77cd7a0], contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]].
2017-04-28 19:20:00.086  INFO 7592 --- [       Thread-3] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@1757cd72: startup date [Fri Apr 28 19:19:56 BST 2017]; root of context hierarchy
2017-04-28 19:20:00.089  INFO 7592 --- [       Thread-3] org.mongodb.driver.connection            : Closed connection [connectionId{localValue:2, serverValue:19}] to 127.0.0.1:27017 because the pool has been closed.
2017-04-28 19:20:00.091  INFO 7592 --- [       Thread-3] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'

您正在调用new,而init是IoC容器外部的类,因此spring无法注入到它中。将类自动关联到单元测试中。您的
JaasLoginModule
需要定义为Bean、组件、服务,然后自动连接到测试类

感谢Darren,但我仍然不清楚,因为LoginModule不是直接在Junit类中创建的,LoginContext正在使用config加载LoginModule,如果我创建LoginModule,我如何传递LoginContext调用的CallHandler。此外,LoginModule的生命周期方法(如commit())也由LoginContext调用。您正试图通过
new
关键字将组件粘在一起,该关键字在IoC容器外部创建。当您这样做时,Spring对该类一无所知,无法自动连接并使用它的魔力。您的
LoginContext
必须通过Spring处理,而不是通过
new
创建。
2017-04-28 19:19:56.551  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Starting JaasLoginModuleTests on Panther with PID 7592 (started by kashif in C:\Development\workspaces\jaas-system)
2017-04-28 19:19:56.551  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : The following profiles are active: Dev
2017-04-28 19:19:56.578  INFO 7592 --- [           main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.springframework.context.annotation.AnnotationConfigApplicationContext@1757cd72: startup date [Fri Apr 28 19:19:56 BST 2017]; root of context hierarchy
2017-04-28 19:19:56.905  INFO 7592 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-04-28 19:19:56.924  INFO 7592 --- [           main] .RepositoryConfigurationExtensionSupport : Spring Data JPA - Could not safely identify store assignment for repository candidate interface com.kashtech.jaas.repository.mongodb.UserRepository.
2017-04-28 19:19:56.931  INFO 7592 --- [           main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2017-04-28 19:19:56.982  INFO 7592 --- [           main] o.s.b.f.s.DefaultListableBeanFactory     : Overriding bean definition for bean 'mongo' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=datasourceConfig; factoryMethodName=mongo; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [com/kashtech/jaas/config/DatasourceConfig.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration; factoryMethodName=mongo; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/mongo/MongoAutoConfiguration.class]]
2017-04-28 19:19:57.190  INFO 7592 --- [           main] f.a.AutowiredAnnotationBeanPostProcessor : JSR-330 'javax.inject.Inject' annotation found and supported for autowiring
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : ##################### Configuring DataSource #####################
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver class : com.mysql.jdbc.Driver
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver URL : jdbc:mysql://localhost/ebay-manager
2017-04-28 19:19:57.359  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver username : root
2017-04-28 19:19:57.360  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Driver password : admin
2017-04-28 19:19:57.480  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:57.499  INFO 7592 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2017-04-28 19:19:57.573  INFO 7592 --- [           main] org.hibernate.Version                    : HHH000412: Hibernate Core {5.0.12.Final}
2017-04-28 19:19:57.575  INFO 7592 --- [           main] org.hibernate.cfg.Environment            : HHH000206: hibernate.properties not found
2017-04-28 19:19:57.576  INFO 7592 --- [           main] org.hibernate.cfg.Environment            : HHH000021: Bytecode provider name : javassist
2017-04-28 19:19:57.618  INFO 7592 --- [           main] o.hibernate.annotations.common.Version   : HCANN000001: Hibernate Commons Annotations {5.0.1.Final}
Fri Apr 28 19:19:57 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Fri Apr 28 19:19:58 BST 2017 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
2017-04-28 19:19:58.159  INFO 7592 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2017-04-28 19:19:58.440  WARN 7592 --- [           main] o.h.b.i.SessionFactoryBuilderImpl        : Unrecognized hbm2ddl_auto value : none.  Supported values include create, create-drop, update, and validate.  Ignoring
2017-04-28 19:19:58.556  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:58.575  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Building JPA container EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:58.575  INFO 7592 --- [           main] o.hibernate.jpa.internal.util.LogHelper  : HHH000204: Processing PersistenceUnitInfo [
    name: default
    ...]
2017-04-28 19:19:58.585  INFO 7592 --- [           main] org.hibernate.dialect.Dialect            : HHH000400: Using dialect: org.hibernate.dialect.MySQL5Dialect
2017-04-28 19:19:58.596  WARN 7592 --- [           main] o.h.b.i.SessionFactoryBuilderImpl        : Unrecognized hbm2ddl_auto value : none.  Supported values include create, create-drop, update, and validate.  Ignoring
2017-04-28 19:19:58.602  WARN 7592 --- [           main] o.h.j.i.EntityManagerFactoryRegistry     : HHH000436: Entity manager factory name (default) is already registered.  If entity manager will be clustered or passivated, specify a unique value for property 'hibernate.ejb.entitymanager_factory_name'
2017-04-28 19:19:58.602  INFO 7592 --- [           main] j.LocalContainerEntityManagerFactoryBean : Initialized JPA EntityManagerFactory for persistence unit 'default'
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : ##################### Configuring Mongo DataSource ####################
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Host : 127.0.0.1
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Port : 27017
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : Database : ebay-manager
2017-04-28 19:19:58.646  INFO 7592 --- [           main] c.kashtech.jaas.config.DatasourceConfig  : #######################################################################
2017-04-28 19:19:59.212  INFO 7592 --- [           main] org.mongodb.driver.cluster               : Cluster created with settings {hosts=[127.0.0.1:27017], mode=MULTIPLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500}
2017-04-28 19:19:59.212  INFO 7592 --- [           main] org.mongodb.driver.cluster               : Adding discovered server 127.0.0.1:27017 to client view of cluster
2017-04-28 19:19:59.309  INFO 7592 --- [127.0.0.1:27017] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:1, serverValue:18}] to 127.0.0.1:27017
2017-04-28 19:19:59.311  INFO 7592 --- [127.0.0.1:27017] org.mongodb.driver.cluster               : Monitor thread successfully connected to server with description ServerDescription{address=127.0.0.1:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersion{versionList=[3, 4, 2]}, minWireVersion=0, maxWireVersion=5, maxDocumentSize=16777216, roundTripTimeNanos=613444}
2017-04-28 19:19:59.312  INFO 7592 --- [127.0.0.1:27017] org.mongodb.driver.cluster               : Discovered cluster type of STANDALONE
2017-04-28 19:19:59.453  INFO 7592 --- [           main] org.mongodb.driver.connection            : Opened connection [connectionId{localValue:2, serverValue:19}] to 127.0.0.1:27017
2017-04-28 19:19:59.915  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Started JaasLoginModuleTests in 3.67 seconds (JVM running for 4.403)
2017-04-28 19:20:00.035  INFO 7592 --- [           main] o.s.t.c.transaction.TransactionContext   : Began transaction (1) for test context [DefaultTestContext@103f852 testClass = JaasLoginModuleTests, testInstance = com.kashtech.JaasLoginModuleTests@44a3ec6b, testMethod = testLogin@JaasLoginModuleTests, testException = [null], mergedContextConfiguration = [MergedContextConfiguration@587c290d testClass = JaasLoginModuleTests, locations = '{}', classes = '{class com.kashtech.JaasSystemApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@14acaea5, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@59fa1d9b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@77cd7a0], contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]]; transaction manager [org.springframework.orm.jpa.JpaTransactionManager@60c8a093]; rollback [true]
2017-04-28 19:20:00.065  INFO 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Callback Handler invoked 
test
2017-04-28 19:20:00.068 ERROR 7592 --- [           main] com.kashtech.JaasLoginModuleTests        : Error whilst testing login : java.lang.NullPointerException
at com.kashtech.jaas.domain.JaasLoginModule.findUserFromDB(JaasLoginModule.java:307)
at com.kashtech.jaas.domain.JaasLoginModule.login(JaasLoginModule.java:146)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.invoke(Unknown Source)
at javax.security.auth.login.LoginContext.access$000(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at javax.security.auth.login.LoginContext$4.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.login.LoginContext.invokePriv(Unknown Source)
at javax.security.auth.login.LoginContext.login(Unknown Source)
at com.kashtech.JaasLoginModuleTests.testLogin(JaasLoginModuleTests.java:73)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.springframework.test.context.junit4.statements.RunBeforeTestMethodCallbacks.evaluate(RunBeforeTestMethodCallbacks.java:75)
at org.springframework.test.context.junit4.statements.RunAfterTestMethodCallbacks.evaluate(RunAfterTestMethodCallbacks.java:86)
at org.springframework.test.context.junit4.statements.SpringRepeat.evaluate(SpringRepeat.java:84)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:252)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.runChild(SpringJUnit4ClassRunner.java:94)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
at org.springframework.test.context.junit4.statements.RunBeforeTestClassCallbacks.evaluate(RunBeforeTestClassCallbacks.java:61)
at org.springframework.test.context.junit4.statements.RunAfterTestClassCallbacks.evaluate(RunAfterTestClassCallbacks.java:70)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:191)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:678)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

2017-04-28 19:20:00.077  INFO 7592 --- [           main] o.s.t.c.transaction.TransactionContext   : Rolled back transaction for test context [DefaultTestContext@103f852 testClass = JaasLoginModuleTests, testInstance = com.kashtech.JaasLoginModuleTests@44a3ec6b, testMethod = testLogin@JaasLoginModuleTests, testException = java.lang.NullPointerException, mergedContextConfiguration = [MergedContextConfiguration@587c290d testClass = JaasLoginModuleTests, locations = '{}', classes = '{class com.kashtech.JaasSystemApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[org.springframework.boot.test.context.SpringBootTestContextCustomizer@14acaea5, org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@59fa1d9b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@0, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@77cd7a0], contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]]].
2017-04-28 19:20:00.086  INFO 7592 --- [       Thread-3] s.c.a.AnnotationConfigApplicationContext : Closing org.springframework.context.annotation.AnnotationConfigApplicationContext@1757cd72: startup date [Fri Apr 28 19:19:56 BST 2017]; root of context hierarchy
2017-04-28 19:20:00.089  INFO 7592 --- [       Thread-3] org.mongodb.driver.connection            : Closed connection [connectionId{localValue:2, serverValue:19}] to 127.0.0.1:27017 because the pool has been closed.
2017-04-28 19:20:00.091  INFO 7592 --- [       Thread-3] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default'