<?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: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 auto-config="true" security-context-holder-strategy-ref="ref">
		<intercept-url pattern="/**" access="authenticated"/>
		<oauth2-login client-registration-repository-ref="clientRegistrationRepository"
						access-token-response-client-ref="accessTokenResponseClient"
						user-service-ref="oauth2UserService"
						authorization-request-repository-ref="authorizationRequestRepository"
						authorized-client-service-ref="authorizedClientService"/>
	</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="accessTokenResponseClient" class="org.mockito.Mockito" factory-method="mock">
			<b:constructor-arg value="org.springframework.security.oauth2.client.endpoint.OAuth2AccessTokenResponseClient"/>
	</b:bean>
	<b:bean id="oauth2UserService" class="org.mockito.Mockito" factory-method="mock">
			<b:constructor-arg value="org.springframework.security.oauth2.client.userinfo.OAuth2UserService"/>
	</b:bean>
	<b:bean id="authorizationRequestRepository" class="org.mockito.Mockito" factory-method="mock">
			<b:constructor-arg value="org.springframework.security.oauth2.client.web.AuthorizationRequestRepository"/>
	</b:bean>
	<b:bean id="clientRegistrationRepository" class="org.mockito.Mockito" factory-method="mock">
			<b:constructor-arg value="org.springframework.security.oauth2.client.registration.ClientRegistrationRepository"/>
	</b:bean>
	<b:bean id="authorizedClientService" class="org.mockito.Mockito" factory-method="mock">
			<b:constructor-arg value="org.springframework.security.oauth2.client.OAuth2AuthorizedClientService"/>
	</b:bean>

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