Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Failed to resolve parameter [org.springframework.test.web.servlet.MockMvc mockMvc] in executable [public demons.controllers.DemonsUserControllerTest(org.springframework.test.web.servlet.MockMvc)]
- org.junit.jupiter.api.extension.ParameterResolutionException: Failed to resolve parameter [org.springframework.test.web.servlet.MockMvc mockMvc] in executable [public demons.controllers.DemonsUserControllerTest(org.springframework.test.web.servlet.MockMvc)]
- at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameter(ExecutableInvoker.java:221)
- at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:174)
- at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameters(ExecutableInvoker.java:135)
- at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:61)
- at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateTestClass(ClassTestDescriptor.java:208)
- at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.instantiateAndPostProcessTestInstance(ClassTestDescriptor.java:195)
- at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$0(ClassTestDescriptor.java:185)
- at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$1(ClassTestDescriptor.java:189)
- at java.util.Optional.orElseGet(Optional.java:267)
- at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.lambda$testInstanceProvider$2(ClassTestDescriptor.java:188)
- at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.before(ClassTestDescriptor.java:156)
- at org.junit.jupiter.engine.descriptor.ClassTestDescriptor.before(ClassTestDescriptor.java:65)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:110)
- at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$2(HierarchicalTestExecutor.java:120)
- at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
- at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175)
- at java.util.Iterator.forEachRemaining(Iterator.java:116)
- at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
- at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
- at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
- at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
- at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
- at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
- at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.lambda$executeRecursively$3(HierarchicalTestExecutor.java:120)
- at org.junit.platform.engine.support.hierarchical.SingleTestExecutor.executeSafely(SingleTestExecutor.java:66)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.executeRecursively(HierarchicalTestExecutor.java:108)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor$NodeExecutor.execute(HierarchicalTestExecutor.java:79)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:55)
- at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:43)
- at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:170)
- at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:154)
- at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:90)
- at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.processAllTestClasses(JUnitPlatformTestClassProcessor.java:92)
- at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.access$100(JUnitPlatformTestClassProcessor.java:77)
- at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.stop(JUnitPlatformTestClassProcessor.java:73)
- at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.stop(SuiteTestClassProcessor.java:61)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
- at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
- at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:32)
- at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
- at com.sun.proxy.$Proxy1.stop(Unknown Source)
- at org.gradle.api.internal.tasks.testing.worker.TestWorker.stop(TestWorker.java:123)
- at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- at java.lang.reflect.Method.invoke(Method.java:498)
- at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:35)
- at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
- at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:155)
- at org.gradle.internal.remote.internal.hub.MessageHubBackedObjectConnection$DispatchWrapper.dispatch(MessageHubBackedObjectConnection.java:137)
- at org.gradle.internal.remote.internal.hub.MessageHub$Handler.run(MessageHub.java:404)
- at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
- at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
- at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
- at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
- at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
- at java.lang.Thread.run(Thread.java:748)
- Caused by: java.lang.IllegalStateException: Failed to load ApplicationContext
- at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
- at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
- at org.springframework.test.context.junit.jupiter.SpringExtension.getApplicationContext(SpringExtension.java:191)
- at org.springframework.test.context.junit.jupiter.SpringExtension.resolveParameter(SpringExtension.java:178)
- at org.junit.jupiter.engine.execution.ExecutableInvoker.resolveParameter(ExecutableInvoker.java:207)
- ... 64 more
- Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'jwtAuthorizationFilter': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.authentication.AuthenticationManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
- at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:732)
- at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:197)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1267)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1124)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:535)
- at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:495)
- at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:317)
- at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
- at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:315)
- at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:199)
- at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759)
- at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:869)
- at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:550)
- at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:762)
- at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:398)
- at org.springframework.boot.SpringApplication.run(SpringApplication.java:330)
- at org.springframework.boot.test.context.SpringBootContextLoader.loadContext(SpringBootContextLoader.java:139)
- at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContextInternal(DefaultCacheAwareContextLoaderDelegate.java:99)
- at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:117)
- ... 68 more
- Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'org.springframework.security.authentication.AuthenticationManager' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {}
- at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1506)
- at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1140)
- at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1062)
- at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:818)
- at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:724)
- ... 86 more
- @EnableWebSecurity
- @EnableWebMvc
- class SecurityConfig (@Autowired val userDetailsService: DemonsUserService): WebSecurityConfigurerAdapter() {
- override fun configure(httpSecurity: HttpSecurity) {
- http
- .cors().and().csrf().disable()
- .authorizeRequests()
- .antMatchers(HttpMethod.POST, "/users").permitAll()
- .anyRequest().authenticated()
- .and()
- .addFilter(jwtAuthenticationFilter())
- .addFilter(jwtAuthorizationFilter())
- }
- @Bean(name = [BeanIds.AUTHENTICATION_MANAGER])
- override fun authenticationManagerBean(): AuthenticationManager {
- return super.authenticationManager()
- }
- companion object {
- @Bean
- fun passwordEncoder() : PasswordEncoder {
- return PasswordEncoderFactories.createDelegatingPasswordEncoder()
- }
- }
- @Bean
- fun jwtAuthenticationFilter() : JwtAuthenticationFilter {
- return JwtAuthenticationFilter(authenticationManagerBean())
- }
- @Bean
- fun jwtAuthorizationFilter() : JwtAuthorizationFilter {
- return JwtAuthorizationFilter(authenticationManagerBean(), userDetailsService)
- }
- }
- @ExtendWith(SpringExtension::class)
- @WebMvcTest(controllers = [DemonsUserController::class])
- @TestInstance(TestInstance.Lifecycle.PER_CLASS)
- @ContextConfiguration
- class DemonsUserControllerTest (@Autowired val mockMvc: MockMvc){
- @MockBean
- private lateinit var userService : DemonsUserService
- @MockBean
- private lateinit var securityConfig: SecurityConfig
- val email = "test@test.test"
- val password = "password"
- val testUser = DemonsUser(email = email, password = password)
- @Test
- fun `Sending POST to the users endpoint with a valid json creates a new user`() {
- val payload = mapOf(
- "email" to email,
- "password" to password
- )
- Mockito.`when`(userService.addUser(testUser))
- .thenReturn(testUser)
- mockMvc.perform(MockMvcRequestBuilders.post("/users")
- .with(csrf().asHeader())
- .with(user("user"))
- .contentType(MediaType.APPLICATION_JSON_UTF8)
- .content(JSONObject(payload).toString()))
- .andExpect(MockMvcResultMatchers.status().isCreated)
- .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
- .andExpect(jsonPath("$.created").value("true"))
- .andExpect(jsonPath("$.email").value(testUser.email))
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement