setUser(null); $this->setupManager->tearDown(); \OC_User::setUserId($user); $this->postLogin(); \OC_Util::setupFS($user); if ($this->userManager->userExists($user)) { \OC::$server->getUserFolder($user); } } protected function setupForUser($name, $password) { $this->setupManager->tearDown(); $this->setupManager->setupForUser($this->userManager->get($name)); $container = $this->encryptionApp->getContainer(); /** @var KeyManager $keyManager */ $keyManager = $container->query(KeyManager::class); /** @var Setup $userSetup */ $userSetup = $container->query(Setup::class); $userSetup->setupUser($name, $password); $encryptionManager = $container->query(IManager::class); $this->encryptionApp->setUp($encryptionManager); $keyManager->init($name, $password); } protected function postLogin() { $encryptionWrapper = new EncryptionWrapper( new ArrayCache(), Server::get(\OCP\Encryption\IManager::class), Server::get(LoggerInterface::class) ); $this->registerStorageWrapper('oc_encryption', [$encryptionWrapper, 'wrapStorage']); } protected function setUpEncryptionTrait() { $isReady = Server::get(\OCP\Encryption\IManager::class)->isReady(); if (!$isReady) { $this->markTestSkipped('Encryption not ready'); } $this->userManager = Server::get(IUserManager::class); $this->setupManager = Server::get(SetupManager::class); \OC_App::loadApp('encryption'); $this->encryptionApp = new Application([], $isReady); $this->config = Server::get(IConfig::class); $this->encryptionWasEnabled = $this->config->getAppValue('core', 'encryption_enabled', 'no'); $this->originalEncryptionModule = $this->config->getAppValue('core', 'default_encryption_module'); $this->config->setAppValue('core', 'default_encryption_module', Encryption::ID); $this->config->setAppValue('core', 'encryption_enabled', 'yes'); $this->assertTrue(Server::get(\OCP\Encryption\IManager::class)->isEnabled()); } protected function tearDownEncryptionTrait() { if ($this->config) { $this->config->setAppValue('core', 'encryption_enabled', $this->encryptionWasEnabled); $this->config->setAppValue('core', 'default_encryption_module', $this->originalEncryptionModule); $this->config->deleteAppValue('encryption', 'useMasterKey'); } } }