/******************************************************************************* * Cloud Foundry * Copyright (c) [2009-2014] Pivotal Software, Inc. All Rights Reserved. * * This product is licensed to you under the Apache License, Version 2.0 (the "License"). * You may not use this product except in compliance with the License. * * This product includes a number of subcomponents with * separate copyright notices and license terms. Your use of these * subcomponents is subject to the terms and conditions of the * subcomponent's license, as noted in the LICENSE file. *******************************************************************************/ package org.cloudfoundry.identity.uaa.login; import org.cloudfoundry.identity.uaa.test.YamlServletProfileInitializerContextInitializer; import org.junit.Before; import org.junit.experimental.theories.DataPoint; import org.junit.experimental.theories.Theories; import org.junit.experimental.theories.Theory; import org.junit.runner.RunWith; import org.springframework.http.MediaType; import org.springframework.security.web.FilterChainProxy; import org.springframework.test.web.servlet.MockMvc; import org.springframework.test.web.servlet.RequestBuilder; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.web.context.support.XmlWebApplicationContext; import static org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter.XFRAME_OPTIONS_HEADER; import static org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter.XFrameOptionsMode.DENY; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header; @RunWith(Theories.class) public class XFrameOptionsTheories { @DataPoint public static RequestBuilder loginHtmlRequest = MockMvcRequestBuilders.get("/login").accept(MediaType.TEXT_HTML); @DataPoint public static RequestBuilder loginJsonRequest = MockMvcRequestBuilders.get("/login").accept(MediaType.APPLICATION_JSON); XmlWebApplicationContext webApplicationContext; MockMvc mockMvc; @Before public void setUp() throws Exception { webApplicationContext = new XmlWebApplicationContext(); new YamlServletProfileInitializerContextInitializer().initializeContext(webApplicationContext, "login.yml"); webApplicationContext.setConfigLocation("file:./src/main/webapp/WEB-INF/spring-servlet.xml"); webApplicationContext.refresh(); FilterChainProxy springSecurityFilterChain = webApplicationContext.getBean("springSecurityFilterChain", FilterChainProxy.class); XFrameOptionsFilter xFrameOptionsFilter = webApplicationContext.getBean(XFrameOptionsFilter.class); mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) .addFilter(springSecurityFilterChain) .addFilter(xFrameOptionsFilter) .build(); } @Theory public void responsesHaveXFrameOptionsHeader(RequestBuilder request) throws Exception { mockMvc.perform(request).andExpect(header().string(XFRAME_OPTIONS_HEADER, DENY.toString())); } }