From 5a23b35ddbbefcb308915e3fb088e3beaf1f8be5 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Julius=20H=C3=A4rtl?= <jus@bitgrid.net>
Date: Mon, 12 Feb 2018 17:30:08 +0100
Subject: [PATCH] Also rewrite icon url
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Julius Härtl <jus@bitgrid.net>
---
 core/Controller/NavigationController.php      |  3 +++
 .../Controller/NavigationControllerTest.php   | 23 +++++++++++++++----
 2 files changed, 22 insertions(+), 4 deletions(-)

diff --git a/core/Controller/NavigationController.php b/core/Controller/NavigationController.php
index 92f103c3a34..3521fac3b46 100644
--- a/core/Controller/NavigationController.php
+++ b/core/Controller/NavigationController.php
@@ -83,6 +83,9 @@ class NavigationController extends OCSController {
 			if (0 !== strpos($entry['href'], $this->urlGenerator->getBaseUrl())) {
 				$entry['href'] = $this->urlGenerator->getAbsoluteURL($entry['href']);
 			}
+			if (0 !== strpos($entry['icon'], $this->urlGenerator->getBaseUrl())) {
+				$entry['icon'] = $this->urlGenerator->getAbsoluteURL($entry['icon']);
+			}
 		}
 		return $navigation;
 	}
diff --git a/tests/Core/Controller/NavigationControllerTest.php b/tests/Core/Controller/NavigationControllerTest.php
index 9b1d33ab868..1143ed003f0 100644
--- a/tests/Core/Controller/NavigationControllerTest.php
+++ b/tests/Core/Controller/NavigationControllerTest.php
@@ -68,22 +68,31 @@ class NavigationControllerTest extends TestCase {
 		$this->navigationManager->expects($this->once())
 			->method('getAll')
 			->with('link')
-			->willReturn([ ['id' => 'files', 'href' => '/index.php/apps/files'] ]);
+			->willReturn([ ['id' => 'files', 'href' => '/index.php/apps/files', 'icon' => 'icon' ] ]);
 		if ($absolute) {
 			$this->urlGenerator->expects($this->any())
 				->method('getBaseURL')
 				->willReturn('http://localhost/');
-			$this->urlGenerator->expects($this->once())
+			$this->urlGenerator->expects($this->at(1))
 				->method('getAbsoluteURL')
 				->with('/index.php/apps/files')
 				->willReturn('http://localhost/index.php/apps/files');
+			$this->urlGenerator->expects($this->at(3))
+				->method('getAbsoluteURL')
+				->with('icon')
+				->willReturn('http://localhost/icon');
 			$actual = $this->controller->getAppsNavigation($absolute);
 			$this->assertInstanceOf(DataResponse::class, $actual);
 			$this->assertEquals('http://localhost/index.php/apps/files', $actual->getData()[0]['href']);
+			$this->assertEquals('http://localhost/icon', $actual->getData()[0]['icon']);
+
+
 		} else {
 			$actual = $this->controller->getAppsNavigation($absolute);
 			$this->assertInstanceOf(DataResponse::class, $actual);
 			$this->assertEquals('/index.php/apps/files', $actual->getData()[0]['href']);
+			$this->assertEquals('icon', $actual->getData()[0]['icon']);
+
 		}
 	}
 
@@ -92,22 +101,28 @@ class NavigationControllerTest extends TestCase {
 		$this->navigationManager->expects($this->once())
 			->method('getAll')
 			->with('settings')
-			->willReturn([ ['id' => 'settings', 'href' => '/index.php/settings/user'] ]);
+			->willReturn([ ['id' => 'settings', 'href' => '/index.php/settings/user', 'icon' => '/core/img/settings.svg'] ]);
 		if ($absolute) {
 			$this->urlGenerator->expects($this->any())
 				->method('getBaseURL')
 				->willReturn('http://localhost/');
-			$this->urlGenerator->expects($this->once())
+			$this->urlGenerator->expects($this->at(1))
 				->method('getAbsoluteURL')
 				->with('/index.php/settings/user')
 				->willReturn('http://localhost/index.php/settings/user');
+			$this->urlGenerator->expects($this->at(3))
+				->method('getAbsoluteURL')
+				->with('/core/img/settings.svg')
+				->willReturn('http://localhost/core/img/settings.svg');
 			$actual = $this->controller->getSettingsNavigation($absolute);
 			$this->assertInstanceOf(DataResponse::class, $actual);
 			$this->assertEquals('http://localhost/index.php/settings/user', $actual->getData()[0]['href']);
+			$this->assertEquals('http://localhost/core/img/settings.svg', $actual->getData()[0]['icon']);
 		} else {
 			$actual = $this->controller->getSettingsNavigation($absolute);
 			$this->assertInstanceOf(DataResponse::class, $actual);
 			$this->assertEquals('/index.php/settings/user', $actual->getData()[0]['href']);
+			$this->assertEquals('/core/img/settings.svg', $actual->getData()[0]['icon']);
 		}
 	}
 
-- 
GitLab