From da7afd3828f75fc411cbac99de1091a16c5a237a Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Fri, 30 Sep 2016 14:19:12 +0200 Subject: [PATCH] Add tests for "Admin" Signed-off-by: Lukas Reschke --- lib/Settings/Admin.php | 6 -- tests/Settings/AdminTest.php | 113 +++++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 tests/Settings/AdminTest.php diff --git a/lib/Settings/Admin.php b/lib/Settings/Admin.php index 816b3f9..4824d95 100644 --- a/lib/Settings/Admin.php +++ b/lib/Settings/Admin.php @@ -26,27 +26,21 @@ namespace OCA\User_SAML\Settings; use OCP\AppFramework\Http\TemplateResponse; use OCP\Defaults; use OCP\IL10N; -use OCP\IURLGenerator; use OCP\Settings\ISettings; class Admin implements ISettings { /** @var IL10N */ private $l10n; - /** @var IURLGenerator */ - private $urlGenerator; /** @var Defaults */ private $defaults; /** * @param IL10N $l10n - * @param IURLGenerator $urlGenerator * @param Defaults $defaults */ public function __construct(IL10N $l10n, - IURLGenerator $urlGenerator, Defaults $defaults) { $this->l10n = $l10n; - $this->urlGenerator = $urlGenerator; $this->defaults = $defaults; } diff --git a/tests/Settings/AdminTest.php b/tests/Settings/AdminTest.php new file mode 100644 index 0000000..e38a582 --- /dev/null +++ b/tests/Settings/AdminTest.php @@ -0,0 +1,113 @@ + + * + * @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\User_SAML\Tests\Settings; + +use OCP\AppFramework\Http\TemplateResponse; +use OCP\Defaults; +use OCP\IL10N; + +class AdminTest extends \Test\TestCase { + /** @var \OCA\User_SAML\Settings\Admin */ + private $admin; + /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */ + private $l10n; + /** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */ + private $defaults; + + public function setUp() { + $this->l10n = $this->createMock(IL10N::class); + $this->defaults = $this->createMock(Defaults::class); + + $this->admin = new \OCA\User_SAML\Settings\Admin( + $this->l10n, + $this->defaults + ); + + return parent::setUp(); + } + + public function testGetForm() { + $this->l10n + ->expects($this->any()) + ->method('t') + ->will($this->returnCallback(function($text, $parameters = array()) { + return vsprintf($text, $parameters); + })); + $this->defaults + ->expects($this->once()) + ->method('getName') + ->willReturn('Nextcloud'); + + $serviceProviderFields = [ + 'x509cert' => 'X.509 certificate of the Service Provider', + 'privateKey' => 'Private key of the Service Provider', + ]; + $securityOfferFields = [ + 'nameIdEncrypted' => 'Indicates that the nameID of the sent by this SP will be encrypted.', + 'authnRequestsSigned' => 'Indicates whether the messages sent by this SP will be signed. [Metadata of the SP will offer this info]', + 'logoutRequestSigned' => 'Indicates whether the messages sent by this SP will be signed.', + 'logoutResponseSigned' => 'Indicates whether the messages sent by this SP will be signed.', + 'signMetadata' => 'Whether the metadata should be signed.', + ]; + $securityRequiredFields = [ + 'wantMessagesSigned' => 'Indicates a requirement for the , and elements received by this SP to be signed.', + 'wantAssertionsSigned' => 'Indicates a requirement for the elements received by this SP to be signed. [Metadata of the SP will offer this info]', + 'wantAssertionsEncrypted' => 'Indicates a requirement for the elements received by this SP to be encrypted.', + 'wantNameId' => ' Indicates a requirement for the NameID element on the SAMLResponse received by this SP to be present.', + 'wantNameIdEncrypted' => 'Indicates a requirement for the NameID received by this SP to be encrypted.', + 'wantXMLValidation' => 'Indicates if the SP will validate all received XMLs.', + ]; + $generalSettings = [ + 'uid_mapping' => [ + 'text' => 'Attribute to map the UID to.', + 'type' => 'line', + 'required' => true, + ], + 'require_provisioned_account' => [ + 'text' => 'Only allow authentication if an account is existent on some other backend. (e.g. LDAP)', + 'type' => 'checkbox', + ], + 'use_saml_auth_for_desktop' => [ + 'text' => 'Use SAML auth for the Nextcloud desktop clients (requires user re-authentication)', + 'type' => 'checkbox', + ], + ]; + + $params = [ + 'sp' => $serviceProviderFields, + 'security-offer' => $securityOfferFields, + 'security-required' => $securityRequiredFields, + 'general' => $generalSettings, + ]; + + $expected = new TemplateResponse('user_saml', 'admin', $params); + $this->assertEquals($expected, $this->admin->getForm()); + } + + public function testGetSection() { + $this->assertSame('saml', $this->admin->getSection()); + } + + public function testGetPriority() { + $this->assertSame(0, $this->admin->getPriority()); + } +}