Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/mail.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnna Larch <anna@nextcloud.com>2021-04-15 14:27:03 +0300
committerChristoph Wurst <christoph@winzerhof-wurst.at>2021-05-28 10:17:14 +0300
commit537a766a12b74a3118e8993a5370ae250b96645d (patch)
tree4f32a74cde113fea1b2097690c62528504df8c3b /tests/Integration
parent8c8d71e37ad87a3303c0dbe09ab39098893c50c1 (diff)
Add option to use multiple configs for mail provisioning
Signed-off-by: Anna Larch <anna@nextcloud.com> Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
Diffstat (limited to 'tests/Integration')
-rw-r--r--tests/Integration/Db/MailAccountMapperTest.php2
-rw-r--r--tests/Integration/Db/MailAccountTest.php10
-rw-r--r--tests/Integration/Db/ProvisioningMapperTest.php198
3 files changed, 204 insertions, 6 deletions
diff --git a/tests/Integration/Db/MailAccountMapperTest.php b/tests/Integration/Db/MailAccountMapperTest.php
index 9dc9b5021..7dc69b580 100644
--- a/tests/Integration/Db/MailAccountMapperTest.php
+++ b/tests/Integration/Db/MailAccountMapperTest.php
@@ -68,7 +68,7 @@ class MailAccountMapperTest extends TestCase {
$this->account->setOutboundSslMode('ssl');
$this->account->setUserId('user12345');
$this->account->setEditorMode('plaintext');
- $this->account->setProvisioned(false);
+ $this->account->setProvisioningId(null);
$this->account->setOrder(27);
}
diff --git a/tests/Integration/Db/MailAccountTest.php b/tests/Integration/Db/MailAccountTest.php
index 8db2729f8..7eea6142a 100644
--- a/tests/Integration/Db/MailAccountTest.php
+++ b/tests/Integration/Db/MailAccountTest.php
@@ -44,7 +44,7 @@ class MailAccountTest extends TestCase {
$a->setOutboundPassword('xxxx');
$a->setOutboundSslMode('ssl');
$a->setEditorMode('html');
- $a->setProvisioned(false);
+ $a->setProvisioningId(null);
$a->setOrder(13);
$this->assertEquals([
@@ -62,7 +62,7 @@ class MailAccountTest extends TestCase {
'smtpSslMode' => 'ssl',
'signature' => null,
'editorMode' => 'html',
- 'provisioned' => false,
+ 'provisioningId' => null,
'order' => 13,
'showSubscribedOnly' => null,
'personalNamespace' => null,
@@ -90,15 +90,15 @@ class MailAccountTest extends TestCase {
'smtpSslMode' => 'ssl',
'signature' => null,
'editorMode' => null,
- 'provisioned' => false,
+ 'provisioningId' => null,
'order' => null,
- 'showSubscribedOnly' => null,
+ 'showSubscribedOnly' => false,
'personalNamespace' => null,
'draftsMailboxId' => null,
'sentMailboxId' => null,
'trashMailboxId' => null,
'sieveEnabled' => false,
- 'signatureAboveQuote' => false,
+ 'signatureAboveQuote' => false
];
$a = new MailAccount($expected);
// TODO: fix inconsistency
diff --git a/tests/Integration/Db/ProvisioningMapperTest.php b/tests/Integration/Db/ProvisioningMapperTest.php
new file mode 100644
index 000000000..6ed040f04
--- /dev/null
+++ b/tests/Integration/Db/ProvisioningMapperTest.php
@@ -0,0 +1,198 @@
+<?php
+
+declare(strict_types=1);
+
+/**
+ * @author Anna Larch <anna.larch@nextcloud.com>
+ *
+ * Mail
+ *
+ * This code is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License, version 3,
+ * as published by the Free Software Foundation.
+ *
+ * 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, version 3,
+ * along with this program. If not, see <http://www.gnu.org/licenses/>
+ *
+ */
+
+namespace OCA\Mail\Tests\Integration\Db;
+
+use OC;
+use ChristophWurst\Nextcloud\Testing\DatabaseTransaction;
+use ChristophWurst\Nextcloud\Testing\TestCase;
+use OCA\Mail\Db\Provisioning;
+use OCA\Mail\Db\ProvisioningMapper;
+use OCA\Mail\Exception\ValidationException;
+use OCP\IDBConnection;
+use Psr\Log\LoggerInterface;
+
+/**
+ * @group DB
+ */
+class ProvisioningMapperTest extends TestCase {
+ use DatabaseTransaction;
+
+ /** @var ProvisioningMapper */
+ private $mapper;
+
+ /** @var IDBConnection */
+ private $db;
+
+ /** @var MockObject */
+ private $logger;
+
+ /** @var Alias */
+ private $alias;
+
+ /** @var [] */
+ public $data = [];
+
+ /**
+ * Initialize Mapper
+ */
+ public function setup(): void {
+ parent::setUp();
+ $this->db = OC::$server->getDatabaseConnection();
+ $this->logger = $this->createMock(LoggerInterface::class);
+ $this->mapper = new ProvisioningMapper($this->db, $this->logger);
+ $this->data['provisioningDomain'] = 'heart-of-gold.com' ;
+ $this->data['emailTemplate'] = '%USERID%@heart-of-gold.com';
+ $this->data['imapUser'] = 'marvin@heart-of-gold.com';
+ $this->data['imapHost'] = 'imap.heart-of-gold.com';
+ $this->data['imapPort'] = '42';
+ $this->data['imapSslMode'] = 'none';
+ $this->data['smtpUser'] = 'trillian@heart-of-gold.com';
+ $this->data['smtpHost'] = 'smtp.heart-of-gold.com';
+ $this->data['smtpPort'] = 24;
+ $this->data['smtpSslMode'] = 'none';
+ $this->data['sieveEnabled'] = false;
+ }
+
+ public function testValidate() {
+ $provisioning = new Provisioning();
+ $provisioning->setId(1);
+ $provisioning->setProvisioningDomain($this->data['provisioningDomain']);
+ $provisioning->setEmailTemplate($this->data['emailTemplate']);
+ $provisioning->setImapUser($this->data['imapUser']);
+ $provisioning->setImapHost($this->data['imapHost']);
+ $provisioning->setImapPort(42);
+ $provisioning->setImapSslMode($this->data['imapSslMode']);
+ $provisioning->setSmtpUser($this->data['smtpUser']);
+ $provisioning->setSmtpHost($this->data['smtpHost']);
+ $provisioning->setSmtpPort(24);
+ $provisioning->setSmtpSslMode($this->data['smtpSslMode']);
+ $provisioning->setSieveEnabled($this->data['sieveEnabled']);
+
+ $provisioning = $this->mapper->validate($this->data);
+
+ $this->assertInstanceOf(Provisioning::class, $provisioning);
+ foreach ($this->data as $key => $value) {
+ $getter = 'get' . ucfirst($key);
+ if ($key === 'imapPort' || $key === 'smtpPort') {
+ $this->assertIsInt($provisioning->$getter());
+ $this->assertEquals($provisioning->$getter(), (int)$value);
+ } else {
+ $this->assertEquals($provisioning->$getter(), $value);
+ }
+ }
+ }
+
+ public function testValidateException() {
+ $data = [];
+ $data['provisioningDomain'] = 'heart-of-gold.com' ;
+
+ $this->expectException(ValidationException::class);
+
+ $provisioning = $this->mapper->validate($data);
+ }
+
+ public function testGetNoResult() {
+ $db = $this->mapper->get(99999);
+ $this->assertNull($db);
+ }
+
+ /**
+ * @return void
+ */
+ public function testUpdate() {
+ $provisioning = new Provisioning();
+ $provisioning->setProvisioningDomain($this->data['provisioningDomain']);
+ $provisioning->setEmailTemplate($this->data['emailTemplate']);
+ $provisioning->setImapUser($this->data['imapUser']);
+ $provisioning->setImapHost($this->data['imapHost']);
+ $provisioning->setImapPort(42);
+ $provisioning->setImapSslMode($this->data['imapSslMode']);
+ $provisioning->setSmtpUser($this->data['smtpUser']);
+ $provisioning->setSmtpHost($this->data['smtpHost']);
+ $provisioning->setSmtpPort(24);
+ $provisioning->setSmtpSslMode($this->data['smtpSslMode']);
+ $provisioning->setSieveEnabled($this->data['sieveEnabled']);
+ $provisioning = $this->mapper->insert($provisioning);
+ $id = $provisioning->getId();
+ $provisioning->setProvisioningDomain('arthur-dent.com');
+
+ $update = $this->mapper->update($provisioning);
+
+ $this->assertInstanceOf(Provisioning::class, $update);
+ $this->assertEquals($id, $update->getId());
+ $this->assertEquals('arthur-dent.com', $update->getProvisioningDomain());
+ }
+
+ public function testGetAll() {
+ $provisioning = new Provisioning();
+ $provisioning->setProvisioningDomain($this->data['provisioningDomain']);
+ $provisioning->setEmailTemplate($this->data['emailTemplate']);
+ $provisioning->setImapUser($this->data['imapUser']);
+ $provisioning->setImapHost($this->data['imapHost']);
+ $provisioning->setImapPort(42);
+ $provisioning->setImapSslMode($this->data['imapSslMode']);
+ $provisioning->setSmtpUser($this->data['smtpUser']);
+ $provisioning->setSmtpHost($this->data['smtpHost']);
+ $provisioning->setSmtpPort(24);
+ $provisioning->setSmtpSslMode($this->data['smtpSslMode']);
+ $provisioning->setSieveEnabled($this->data['sieveEnabled']);
+ $provisioning = $this->mapper->insert($provisioning);
+
+ $results = $this->mapper->getAll();
+
+ $this->assertIsArray($results);
+ $this->assertNotEmpty($results);
+ foreach ($results as $result) {
+ $this->assertInstanceOf(Provisioning::class, $result);
+ }
+ }
+
+ public function testGet() {
+ $provisioning = new Provisioning();
+ $provisioning->setProvisioningDomain($this->data['provisioningDomain']);
+ $provisioning->setEmailTemplate($this->data['emailTemplate']);
+ $provisioning->setImapUser($this->data['imapUser']);
+ $provisioning->setImapHost($this->data['imapHost']);
+ $provisioning->setImapPort(42);
+ $provisioning->setImapSslMode($this->data['imapSslMode']);
+ $provisioning->setSmtpUser($this->data['smtpUser']);
+ $provisioning->setSmtpHost($this->data['smtpHost']);
+ $provisioning->setSmtpPort(24);
+ $provisioning->setSmtpSslMode($this->data['smtpSslMode']);
+ $provisioning->setSieveEnabled($this->data['sieveEnabled']);
+ $provisioning = $this->mapper->insert($provisioning);
+
+ $db = $this->mapper->get($provisioning->id);
+
+ $this->assertInstanceOf(Provisioning::class, $db);
+ foreach ($this->data as $key => $value) {
+ $getter = 'get' . ucfirst($key);
+ if ($key === 'imapPort' || $key === 'smtpPort') {
+ $this->assertEquals($db->$getter(), (int)$value);
+ } else {
+ $this->assertEquals($db->$getter(), $value);
+ }
+ }
+ }
+}