usar trabajar tool tests test quƩ pruebas para funcionales con como chrome java spring-mvc spring-security integration-testing

java - trabajar - selenium test tool



Pruebas de integraciĆ³n con seguridad de muelles. (1)

En la Referencia de seguridad de Spring , la sección 10.1 indica que para poder probar las funciones de seguridad de spring, debe integrar la cadena de filtros de seguridad en su objeto MockMvc, como se muestra en este ejemplo en el método de configuración de @Before.

import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.*; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration @WebAppConfiguration public class CsrfShowcaseTests { @Autowired private WebApplicationContext context; private MockMvc mvc; @Before public void setup() { mvc = MockMvcBuilders .webAppContextSetup(context) .apply(springSecurity()) .build(); } ... }

Necesito enviar una solicitud de obtención a la API, pero a pesar de haber colocado la anotación del administrador, obtenga el error @WithMockUser(roles="ADMINISTRADOR") .
¿Cómo envío una solicitud?

API

@RequestMapping(value = "/{id}", method = RequestMethod.GET) @PostAuthorize("returnObject.instancia == principal.instancia.instancia") public Validacao retrieve(@PathVariable("id") String id) { return validacaoService.retrieve(id); }

Prueba

@Test @WithMockUser(roles = "ADMINISTRADOR") public void testCRetrieve() throws Exception { this.mockMvc .perform(get("/api/validacao/" + id).with(user("[email protected]"))) .andExpect(status().isOk()) .andReturn(); }

Iniciar sesión

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: An Authentication object was not found in the SecurityContext

Clase de prueba

@FixMethodOrder(MethodSorters.NAME_ASCENDING) @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = {ValidacaoAPITest.TestConfiguration.class, WithSecurityConfig.class}) @WebAppConfiguration public class ValidacaoAPITest { @EnableWebMvc @Configuration public static class TestConfiguration { Fongo fongo = new Fongo("new server 1"); DB db = fongo.getDB("oknok"); @Bean ValidacaoAPI getValidacaoAPI() { return new ValidacaoAPI(); } @Bean ActiveUser getActiveUser() { ActiveUser mock = Mockito.mock(ActiveUser.class); when(mock.getUser()).thenReturn(new User().setEmail("[email protected]")); when(mock.getInstancia()).thenReturn(new Instancia().setInstancia("instancia")); return mock; } @Bean ValidacaoService getValidacaoService() { return new ValidacaoService(); } @Bean MatchService getMatchService() { return new MatchService(); } @Bean PlanilhaReader getPlanilhaReader() { return new PlanilhaReader(); } @Bean AtributoReader getAtributoReader() { return new AtributoReader(); } @Bean AtributoDAO getAtributoDAO() { return new AtributoDAO(); } @Bean UploadService getUploadService() { return new UploadService(); } @Bean ValidacaoResultadoDAO getValidacaoResultadoDAO() { return new ValidacaoResultadoDAO(db); } @Bean Mapper getMapper() { return new Mapper(db); } @Bean UploadDAO getUploadDAO() { return new UploadDAO(db); } @Bean MatchDAO getMatchDAO() { return new MatchDAO(db); } @Bean ValidacaoDAO getValidacaoDAO() { return new ValidacaoDAO(db); } @Bean UploadOriginalsDAO getUploadOriginalsDAO() { return new UploadOriginalsDAO(db); } @Bean AtributoValidator getAtributoValidator() { return new AtributoValidator(); } } @Autowired MatchService matchService; @Autowired private WebApplicationContext context; private MockMvc mockMvc; private static String id; @Before public void setup() { mockMvc = MockMvcBuilders.webAppContextSetup(context).build(); } @Test public void testACreateValidation() throws Exception { MvcResult result = this.mockMvc .perform(post("/api/validacao")) .andExpect(status().isOk()) .andExpect(jsonPath("$.id", notNullValue())) .andReturn(); this.id = ((BasicDBObject) JSON.parse(result.getResponse().getContentAsString())).getString("id"); } @Test public void testBRetrieveAll() throws Exception { MvcResult result = this.mockMvc .perform(get("/api/validacao")) .andExpect(status().isOk()) .andExpect(jsonPath("$.[0].id", notNullValue())) .andReturn(); BasicDBList list = (BasicDBList) JSON.parse(result.getResponse().getContentAsString()); this.id = (String) ((BasicDBObject) JSON.parse(list.get(0).toString())).get("id"); } //FIXME @Test @WithMockUser(roles = "ADMINISTRADOR") public void testCRetrieve() throws Exception { this.mockMvc .perform(get("/api/validacao/" + id).with(user("[email protected]"))) .andExpect(status().isOk()) .andReturn(); } }