Как изменить IP-адрес запроса на тестирование? - PullRequest
1 голос
/ 15 мая 2019

Итак, в качестве продолжения этого вопроса , я пишу пару тестов работоспособности, чтобы убедиться, что server.tomcat.remote-ip-header=X-Forwarded-For Spring Boot работает должным образом ...

@RestController
class RemoteAddressTesterController {
    @GetMapping("/remoteAddr")
    fun getRemoteAddress(request: HttpServletRequest):String = request.remoteAddr
}
@RunWith(SpringJUnit4ClassRunner::class)
@SpringBootTest(
    properties = ["server.tomcat.remote-ip-header=X-Forwarded-For"],
    webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT
)
class RemoteAddressProviderIT{

    private val NON_LOCAL_IP_1 = "212.13.43.12"
    private val NON_LOCAL_IP_2 = "12.13.24.34"
    private val LOCAL_HOST = "127.0.0.1"

    @Inject
    lateinit var rest:TestRestTemplate

    private lateinit var headers:HttpHeaders

    @Before
    fun setup(){
        headers = HttpHeaders()
    }

работает:

    @Test
    fun withoutXFF_localhost() {
        val request = HttpEntity<Any>(headers)



        val remoteAddress = rest.exchange("/remoteAddr", HttpMethod.GET,request,String::class.java).body!!



        assertThat(remoteAddress).isEqualTo(LOCAL_HOST)
    }

это тоже работает:

    @Test
    fun XFF_clientWithProxy() {
        headers["X-Forwarded-For"] = "$NON_LOCAL_IP_2,$NON_LOCAL_IP_1"
        val request = HttpEntity<Any>(headers)



        val remoteAddress = rest.exchange("/remoteAddr", HttpMethod.GET,request,String::class.java).body!!



        assertThat(remoteAddress).isEqualTo(NON_LOCAL_IP_1)
    }

Это, однако ...

    @Test
    fun withoutXFF_remoteOrigin(){
        headers.origin = NON_LOCAL_IP_1
        headers.host = InetSocketAddress(NON_LOCAL_IP_1,8080)
        val request = HttpEntity<Any>(headers)



        val remoteAddress = rest.exchange("/remoteAddr", HttpMethod.GET,request,String::class.java).body!!



        assertThat(remoteAddress).isEqualTo(NON_LOCAL_IP_1)
    }

дает мне

org.junit.ComparisonFailure: 
Expected :"212.13.43.12"
Actual   :"127.0.0.1"

Здесь я ожидаю, что IP берется из заголовка IP, а не из заголовков HTTP.Можно ли как-то изменить этот IP для проверки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...