* * @author Christoph Wurst * @author Joas Schilling * @author Roeland Jago Douma * * @license GNU AGPL version 3 or any later version * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * */ namespace OCA\Settings\Tests; use InvalidArgumentException; use OCA\Settings\Activity\SecurityProvider; use OCP\Activity\IEvent; use OCP\Activity\IManager; use OCP\IL10N; use OCP\IURLGenerator; use OCP\L10N\IFactory; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; class SecurityProviderTest extends TestCase { /** @var IFactory|MockObject */ private $l10n; /** @var IURLGenerator|MockObject */ private $urlGenerator; /** @var IManager|MockObject */ private $activityManager; /** @var SecurityProvider */ private $provider; protected function setUp(): void { parent::setUp(); $this->l10n = $this->createMock(IFactory::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->activityManager = $this->createMock(IManager::class); $this->provider = new SecurityProvider($this->l10n, $this->urlGenerator, $this->activityManager); } public function testParseUnrelated() { $lang = 'ru'; $event = $this->createMock(IEvent::class); $event->expects($this->once()) ->method('getType') ->willReturn('comments'); $this->expectException(InvalidArgumentException::class); $this->provider->parse($lang, $event); } public function subjectData() { return [ ['twofactor_success'], ['twofactor_failed'], ]; } /** * @dataProvider subjectData */ public function testParse($subject) { $lang = 'ru'; $event = $this->createMock(IEvent::class); $l = $this->createMock(IL10N::class); $event->expects($this->once()) ->method('getType') ->willReturn('security'); $this->l10n->expects($this->once()) ->method('get') ->with('settings', $lang) ->willReturn($l); $this->urlGenerator->expects($this->once()) ->method('imagePath') ->with('core', 'actions/password.svg') ->willReturn('path/to/image'); $this->urlGenerator->expects($this->once()) ->method('getAbsoluteURL') ->with('path/to/image') ->willReturn('absolute/path/to/image'); $event->expects($this->once()) ->method('setIcon') ->with('absolute/path/to/image'); $event->expects($this->once()) ->method('getSubject') ->willReturn($subject); $event->method('getSubjectParameters') ->willReturn([ 'provider' => 'myProvider', ]); $event->expects($this->once()) ->method('setParsedSubject'); $this->provider->parse($lang, $event); } public function testParseInvalidSubject() { $lang = 'ru'; $l = $this->createMock(IL10N::class); $event = $this->createMock(IEvent::class); $event->expects($this->once()) ->method('getType') ->willReturn('security'); $this->l10n->expects($this->once()) ->method('get') ->with('settings', $lang) ->willReturn($l); $event->expects($this->once()) ->method('getSubject') ->willReturn('unrelated'); $this->expectException(InvalidArgumentException::class); $this->provider->parse($lang, $event); } }