Browse Source

Add test to ensure that symlinked apps_paths are not resolved

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
tags/v19.0.0beta6
Daniel Kesselberg 4 years ago
parent
commit
d766d09f01
No account linked to committer's email address
1 changed files with 29 additions and 0 deletions
  1. 29
    0
      tests/lib/App/AppManagerTest.php

+ 29
- 0
tests/lib/App/AppManagerTest.php View File

@@ -338,6 +338,35 @@ class AppManagerTest extends TestCase {
$this->assertEquals(\OC::$SERVERROOT . '/apps/files', $this->manager->getAppPath('files'));
}

public function testGetAppPathSymlink() {
$fakeAppDirname = sha1(uniqid('test', true));
$fakeAppPath = sys_get_temp_dir() . '/' . $fakeAppDirname;
$fakeAppLink = \OC::$SERVERROOT . '/' . $fakeAppDirname;

mkdir($fakeAppPath);
if (symlink($fakeAppPath, $fakeAppLink) === false) {
$this->markTestSkipped('Failed to create symlink');
}

// Use the symlink as the app path
\OC::$APPSROOTS[] = [
'path' => $fakeAppLink,
'url' => \OC::$WEBROOT . '/' . $fakeAppDirname,
'writable' => false,
];

$fakeTestAppPath = $fakeAppPath . '/' . 'test-test-app';
mkdir($fakeTestAppPath);

$generatedAppPath = $this->manager->getAppPath('test-test-app');

rmdir($fakeTestAppPath);
unlink($fakeAppLink);
rmdir($fakeAppPath);

$this->assertEquals($fakeAppLink . '/test-test-app', $generatedAppPath);
}

public function testGetAppPathFail() {
$this->expectException(AppPathNotFoundException::class);
$this->manager->getAppPath('testnotexisting');

Loading…
Cancel
Save