aboutsummaryrefslogtreecommitdiffstats
path: root/apps/settings/tests
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2021-02-13 18:03:32 +0100
committerGitHub <noreply@github.com>2021-02-13 18:03:32 +0100
commit7d8e9baa77b2df4523b5dc3b9455e3b73864b966 (patch)
tree8422f5bf8c6ac471197461f784fe187411b0978d /apps/settings/tests
parent24d4c3eeab5ddd492569a7328227eb2bb75bf080 (diff)
downloadnextcloud-server-7d8e9baa77b2df4523b5dc3b9455e3b73864b966.tar.gz
nextcloud-server-7d8e9baa77b2df4523b5dc3b9455e3b73864b966.zip
Revert "use the configured forwarded headers for the setup check"
Diffstat (limited to 'apps/settings/tests')
-rw-r--r--apps/settings/tests/Controller/CheckSetupControllerTest.php70
1 files changed, 39 insertions, 31 deletions
diff --git a/apps/settings/tests/Controller/CheckSetupControllerTest.php b/apps/settings/tests/Controller/CheckSetupControllerTest.php
index 2020d9f19f9..426793df606 100644
--- a/apps/settings/tests/Controller/CheckSetupControllerTest.php
+++ b/apps/settings/tests/Controller/CheckSetupControllerTest.php
@@ -329,37 +329,26 @@ class CheckSetupControllerTest extends TestCase {
}
/**
- * @dataProvider dataForwardedForHeaders
+ * @dataProvider dataForwardedForHeadersWorking
*
- * @param string[] $trustedProxies
+ * @param array $trustedProxies
* @param string $remoteAddrNotForwarded
* @param string $remoteAddr
- * @param string[] $forwardedForHeaders
- * @param array $requestHeaders
* @param bool $result
*/
- public function testForwardedForHeaders(array $trustedProxies, string $remoteAddrNotForwarded, string $remoteAddr, array $forwardedForHeaders, array $requestHeaders, bool $result) {
- $this->config->method('getSystemValue')
- ->willReturnCallback(function($key, $default) use ($forwardedForHeaders, $trustedProxies) {
- switch ($key) {
- case 'forwarded_for_headers':
- return $forwardedForHeaders;
- case 'trusted_proxies':
- return $trustedProxies;
- default:
- return $default;
- }
- });
- $headers = array_merge(
- ['REMOTE_ADDR' => $remoteAddrNotForwarded],
- $requestHeaders
- );
+ public function testForwardedForHeadersWorking(array $trustedProxies, string $remoteAddrNotForwarded, string $remoteAddr, bool $result) {
+ $this->config->expects($this->once())
+ ->method('getSystemValue')
+ ->with('trusted_proxies', [])
+ ->willReturn($trustedProxies);
$this->request->expects($this->atLeastOnce())
->method('getHeader')
- ->willReturnCallback(function($header) use ($headers) {
- return isset($headers[$header]) ? $headers[$header] : '';
- });
- $this->request->method('getRemoteAddress')
+ ->willReturnMap([
+ ['REMOTE_ADDR', $remoteAddrNotForwarded],
+ ['X-Forwarded-Host', '']
+ ]);
+ $this->request->expects($this->any())
+ ->method('getRemoteAddress')
->willReturn($remoteAddr);
$this->assertEquals(
@@ -368,18 +357,37 @@ class CheckSetupControllerTest extends TestCase {
);
}
- public function dataForwardedForHeaders() {
+ public function dataForwardedForHeadersWorking() {
return [
// description => trusted proxies, getHeader('REMOTE_ADDR'), getRemoteAddr, expected result
- 'no trusted proxies' => [[], '2.2.2.2', '2.2.2.2', ['HTTP_X_FORWARDED_FOR'], [], true],
- 'trusted proxy, remote addr not trusted proxy' => [['1.1.1.1'], '2.2.2.2', '2.2.2.2', ['HTTP_X_FORWARDED_FOR'], [], true],
- 'trusted proxy, remote addr is trusted proxy, forwarded header working' => [['1.1.1.1'], '1.1.1.1', '2.2.2.2', ['HTTP_X_FORWARDED_FOR'], [], true],
- 'trusted proxy, remote addr is trusted proxy, forwarded header not set' => [['1.1.1.1'], '1.1.1.1', '1.1.1.1', ['HTTP_X_FORWARDED_FOR'], [], false],
- 'no trusted proxies, but header present' => [[], '2.2.2.2', '2.2.2.2', ['HTTP_X_FORWARDED_FOR'], ['HTTP_X_FORWARDED_FOR' => '1.1.1.1'], false],
- 'no trusted proxies, different header present' => [[], '2.2.2.2', '2.2.2.2', ['HTTP_X_FORWARDED_FOR'], ['FORWARDED' => '1.1.1.1'], true],
+ 'no trusted proxies' => [[], '2.2.2.2', '2.2.2.2', true],
+ 'trusted proxy, remote addr not trusted proxy' => [['1.1.1.1'], '2.2.2.2', '2.2.2.2', true],
+ 'trusted proxy, remote addr is trusted proxy, x-forwarded-for working' => [['1.1.1.1'], '1.1.1.1', '2.2.2.2', true],
+ 'trusted proxy, remote addr is trusted proxy, x-forwarded-for not set' => [['1.1.1.1'], '1.1.1.1', '1.1.1.1', false],
];
}
+ public function testForwardedHostPresentButTrustedProxiesEmpty() {
+ $this->config->expects($this->once())
+ ->method('getSystemValue')
+ ->with('trusted_proxies', [])
+ ->willReturn([]);
+ $this->request->expects($this->atLeastOnce())
+ ->method('getHeader')
+ ->willReturnMap([
+ ['REMOTE_ADDR', '1.1.1.1'],
+ ['X-Forwarded-Host', 'nextcloud.test']
+ ]);
+ $this->request->expects($this->any())
+ ->method('getRemoteAddress')
+ ->willReturn('1.1.1.1');
+
+ $this->assertEquals(
+ false,
+ self::invokePrivate($this->checkSetupController, 'forwardedForHeadersWorking')
+ );
+ }
+
public function testCheck() {
$this->config->expects($this->at(0))
->method('getAppValue')