public function testEmailCantSendException() { $this->secureRandom->expects($this->once())->method('generate')->with('21')->will($this->returnValue('ThisIsMaybeANotSoSecretToken!')); $this->userManager->expects($this->once())->method('userExists')->with('ExistingUser')->will($this->returnValue(true)); $this->userManager->expects($this->any())->method('get')->with('ExistingUser')->willReturn($this->existingUser); $this->config->expects($this->once())->method('setUserValue')->with('ExistingUser', 'owncloud', 'lostpassword', '12348:ThisIsMaybeANotSoSecretToken!'); $this->timeFactory->expects($this->once())->method('getTime')->will($this->returnValue(12348)); $this->urlGenerator->expects($this->once())->method('linkToRouteAbsolute')->with('core.lost.resetform', array('userId' => 'ExistingUser', 'token' => 'ThisIsMaybeANotSoSecretToken!'))->will($this->returnValue('https://ownCloud.com/index.php/lostpassword/')); $message = $this->getMockBuilder('\\OC\\Mail\\Message')->disableOriginalConstructor()->getMock(); $message->expects($this->at(0))->method('setTo')->with(['*****@*****.**' => 'ExistingUser']); $message->expects($this->at(1))->method('setSubject')->with(' password reset'); $message->expects($this->at(2))->method('setPlainBody')->with('Use the following link to reset your password: https://ownCloud.com/index.php/lostpassword/'); $message->expects($this->at(3))->method('setFrom')->with(['lostpassword-noreply@localhost' => null]); $this->mailer->expects($this->at(0))->method('createMessage')->will($this->returnValue($message)); $this->mailer->expects($this->at(1))->method('send')->with($message)->will($this->throwException(new \Exception())); $response = $this->lostController->email('ExistingUser'); $expectedResponse = ['status' => 'error', 'msg' => 'Couldn\'t send reset email. Please contact your administrator.']; $this->assertSame($expectedResponse, $response); }