diff --git a/lib/private/Authentication/TwoFactorAuth/Manager.php b/lib/private/Authentication/TwoFactorAuth/Manager.php index 2b2924e7f1402e4471517505c79a4369c2ac378f..805735bd1b83aca48d9743d60a924046da76b49c 100644 --- a/lib/private/Authentication/TwoFactorAuth/Manager.php +++ b/lib/private/Authentication/TwoFactorAuth/Manager.php @@ -21,6 +21,7 @@ namespace OC\Authentication\TwoFactorAuth; +use Exception; use OC; use OC\App\AppManager; use OCP\AppFramework\QueryException; @@ -112,7 +113,8 @@ class Manager { $provider = OC::$server->query($class); $providers[$provider->getId()] = $provider; } catch (QueryException $exc) { - // Provider class can not be resolved, ignore it + // Provider class can not be resolved + throw new Exception("Could not load two-factor auth provider $class"); } } } diff --git a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php index 9a3426eda2d8ec9f98aa746816188df33ebf1189..363229b01bc4ae5044d8bd6dd16edab7829e745e 100644 --- a/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php +++ b/tests/lib/Authentication/TwoFactorAuth/ManagerTest.php @@ -85,11 +85,32 @@ class ManagerTest extends TestCase { ])); } + /** + * @expectedException \Exception + * @expectedExceptionMessage Could not load two-factor auth provider \OCA\MyFaulty2faApp\DoesNotExist + */ + public function testFailHardIfProviderCanNotBeLoaded() { + $this->appManager->expects($this->once()) + ->method('getEnabledAppsForUser') + ->with($this->user) + ->will($this->returnValue(['faulty2faapp'])); + + $this->appManager->expects($this->once()) + ->method('getAppInfo') + ->with('faulty2faapp') + ->will($this->returnValue([ + 'two-factor-providers' => [ + '\OCA\MyFaulty2faApp\DoesNotExist', + ], + ])); + + $this->manager->getProviders($this->user); + } + public function testIsTwoFactorAuthenticated() { $this->prepareProviders(); - $user = $this->getMock('\OCP\IUser'); - $user->expects($this->once()) + $this->user->expects($this->once()) ->method('getUID') ->will($this->returnValue('user123')); $this->config->expects($this->once()) @@ -97,7 +118,7 @@ class ManagerTest extends TestCase { ->with('user123', 'core', 'two_factor_auth_disabled', 0) ->will($this->returnValue(0)); - $this->assertTrue($this->manager->isTwoFactorAuthenticated($user)); + $this->assertTrue($this->manager->isTwoFactorAuthenticated($this->user)); } public function testGetProvider() {