ich einen Frühling Boot-Integrationstest wie dieses:Frühling Losing Sicherheitskontext während Testing
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("Test")
@RunWith(SpringRunner.class)
public class HelloControllerIT {
@Autowired
protected TestRestTemplate template;
@Test
public void test1() throws Exception {
HttpEntity request = //buildJson;
ResponseEntity response = template.exchange("/put", HttpMethod.PUT, request, Object.class);
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.CREATED);
}
}
Wenn die Vorlage die Anfrage sendet, gibt es einen Punkt in meinem Code, der wie folgt aussieht:
SecurityContext context = SecurityContextHolder.getContext();
Authentication authentication = context.getAuthentication();
Ich muss den Sicherheitskontext festlegen, so dass es nicht anonym ist. Ich kann es wie folgt tun:
SecurityContext context = SecurityContextHolder.createEmptyContext();
context.setAuthentication(authResult);
SecurityContextHolder.setContext(context);
Aber wenn ich versuche, dass ich noch bekommen AnonymousUser vor template.exchange
zu tun. Ich habe es versucht:
template.withBasicAuth("User","pass");
Es funktioniert immer noch nicht. Wie stelle ich den Sicherheitskontext TestRestTemplate
ein?
Sie benötigen wahrscheinlich die '@ EnableWebSecurity'- und' @ WithMockUser'-Annotationen. – ngreen