diff --git a/lib/private/AppFramework/Routing/RouteParser.php b/lib/private/AppFramework/Routing/RouteParser.php index dc794a1b39669..fdbc386ada78c 100644 --- a/lib/private/AppFramework/Routing/RouteParser.php +++ b/lib/private/AppFramework/Routing/RouteParser.php @@ -18,6 +18,7 @@ class RouteParser { private const array rootUrlApps = [ 'appstore', + 'circles', 'cloud_federation_api', 'core', 'files_sharing_raw', diff --git a/tests/lib/AppFramework/Routing/RouteParserTest.php b/tests/lib/AppFramework/Routing/RouteParserTest.php index 772d00b57b5ee..3f33479ea36e9 100644 --- a/tests/lib/AppFramework/Routing/RouteParserTest.php +++ b/tests/lib/AppFramework/Routing/RouteParserTest.php @@ -50,6 +50,24 @@ public function testParseRoutesRootApps(): void { $this->assertSimpleRoute('/{folderId}/create', 'POST', 'FoldersController', 'create', app: 'core', route: $collection->get('core.folders.create')); } + public function testParseCirclesRootRoute(): void { + $routes = ['routes' => [ + ['name' => 'page#teamLink', 'url' => '/t/{teamId}', 'verb' => 'GET', 'root' => ''], + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'circles'); + $this->assertSimpleRoute('/t/{teamId}', 'GET', 'PageController', 'teamLink', app: 'circles', route: $collection->get('circles.page.teamlink')); + } + + public function testParseRootRouteForUnlistedApp(): void { + $routes = ['routes' => [ + ['name' => 'page#teamLink', 'url' => '/t/{teamId}', 'verb' => 'GET', 'root' => ''], + ]]; + + $collection = $this->parser->parseDefaultRoutes($routes, 'app1'); + $this->assertSimpleRoute('/apps/app1/t/{teamId}', 'GET', 'PageController', 'teamLink', route: $collection->get('app1.page.teamlink')); + } + public function testParseRoutesWithResources(): void { $routes = ['routes' => [ ['name' => 'folders#open', 'url' => '/{folderId}/open', 'verb' => 'GET'],