从1.3.2升级到1.5.3后,SpringBootTest集成测试失败(403 Forbidden)

时间:2017-05-25 21:47:18

标签: java spring-boot groovy integration-testing spring-cloud

我正在使用springCloudVersion ='Dalston.RELEASE'将SpringBoot 1.3.2.RELEASE中的多个应用升级到1.5.3。

作为此升级过程的一部分,我现有集成测试中的注释发生了变化:

旧,deprecated方式:

@RunWith(SpringJUnit4ClassRunner.class)
@Unroll
@WebAppConfiguration
@WebIntegrationTest(randomPort = true)
@SpringApplicationConfiguration(classes = TokenServerApplication)

新的升级方式:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT, classes = TokenServerApplication)
@EnableWebSecurity
@Unroll

这似乎编译得很好,但我注意到我的各种测试开始破坏,给出了403 Forbidden响应。

这些失败的测试应该要求发送带有有效'x-auth-token'标头的请求。我的服务的响应应该给出403“未经过身份验证”,但我收到的消息不包含“未经过身份验证”的消息(它更通用),此外,应该通过有效令牌传递的测试也将获得403 “d。

我正在使用以下内容来构建我的请求:

@Autowired TestRestTemplate restTemplate

测试大致设置相同:

  @Test
  void "test valid token"() {
    HttpHeaders headers = new HttpHeaders()
    headers.set("x-auth-token", tokenIngestExternal)
    HttpEntity<String> entity = new HttpEntity<String>(headers)
    ResponseEntity<Map> result = restTemplate.exchange("/authenticate", HttpMethod.GET, entity, Map.class)
    assertTrue(result.getStatusCode() == HttpStatus.OK)
    Map map = result.getBody()
    assertTrue map.get('iss').equals("A")
    assertTrue map.get('sub').equals("B")
    assertTrue map.get('aud').equals("C")
    assertTrue map.get('roles').equals("D")
  }

在升级到1.5.3并使用最新注释进行集成测试之前,这种基本方法运行良好。

我错过了注释或参数或其他内容吗?什么是有效的?

0 个答案:

没有答案