<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2002-2022 the original author or authors.
  ~
  ~ Licensed 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
  ~
  ~       https://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.
  -->

<b:beans xmlns:b="http://www.springframework.org/schema/beans"
		xmlns:mvc="http://www.springframework.org/schema/mvc"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		xmlns="http://www.springframework.org/schema/security"
		xsi:schemaLocation="
			http://www.springframework.org/schema/security
			https://www.springframework.org/schema/security/spring-security.xsd
			http://www.springframework.org/schema/beans
			https://www.springframework.org/schema/beans/spring-beans.xsd
			http://www.springframework.org/schema/mvc
			https://www.springframework.org/schema/mvc/spring-mvc.xsd">

	<http auto-config="true" security-context-holder-strategy-ref="ref">
		<intercept-url request-matcher-ref="dispatcherTypeMatcher" access="permitAll" />
		<intercept-url pattern="/**" access="authenticated"/>
	</http>

	<b:bean id="ref" class="org.mockito.Mockito" factory-method="spy">
		<b:constructor-arg>
			<b:bean class="org.springframework.security.config.MockSecurityContextHolderStrategy"/>
		</b:constructor-arg>
	</b:bean>

	<b:bean id="dispatcherTypeMatcher" class="org.springframework.security.web.util.matcher.DispatcherTypeRequestMatcher">
		<b:constructor-arg value="ASYNC"/>
	</b:bean>

	<mvc:annotation-driven>
		<mvc:argument-resolvers>
			<b:bean class="org.springframework.security.web.method.annotation.AuthenticationPrincipalArgumentResolver">
				<b:property name="securityContextHolderStrategy" ref="ref"/>
			</b:bean>
		</mvc:argument-resolvers>
	</mvc:annotation-driven>

	<b:bean class="org.springframework.security.config.http.MiscHttpConfigTests.AuthenticationController"/>

	<b:import resource="userservice.xml"/>
</b:beans>
