diff --git a/tests/AliasHandlerTest.php b/tests/AliasHandlerTest.php index 2d3659da..a21cda45 100644 --- a/tests/AliasHandlerTest.php +++ b/tests/AliasHandlerTest.php @@ -1,15 +1,149 @@ getList(""); - $this->assertTrue($list); - $results = $x->result(); - $this->assertEmpty($results); } + + public function tearDown() + { + $_SESSION = []; + parent::tearDown(); + } + + public function testCannotAddAliasUntilDomainIsThere() + { + + // Fake us being an admin. + + $_SESSION = [ + 'sessid' => [ + 'roles' => ['global-admin'] + ] + ]; + + // Trying to add an alias when the domain doesn't exist fails. + + $x = new AliasHandler(1, 'admin', true); + + $values = [ + 'localpart' => 'david.test', + 'domain' => 'example.com', + 'active' => 1, + 'address' => 'david.test@example.com', + 'goto' => ['dest@example.com'] + ]; + + try { + $r = $x->init('david.test@example.com'); + $this->fail("Should not see this - example.com is not present"); + } catch (\Exception $e) { + $this->assertEquals('Error: This domain does not exist!', $e->getMessage()); + } + + } + + + public function testAddingDataEtc() + { + // Fake being an admin. + $_SESSION = [ + 'sessid' => [ + 'roles' => ['global-admin'] + ] + ]; + // Add example.com + $dh = new DomainHandler(1, 'admin', true); + + $dh->init('example.com'); + + $ret = $dh->set( + [ + 'domain' => 'example.com', + 'description' => 'test domain', + 'aliases' => 11, + 'mailboxes' => 12, + 'active' => 1, + 'backupmx' => 0, + 'default_aliases' => 1 + ] + ); + + + $this->assertEmpty($dh->errormsg); + $this->assertEmpty($dh->infomsg); + + $this->assertTrue($ret); + + $ret = $dh->store(); + + $this->assertTrue($ret); + + // Need to add 'admin' as a domain_admin + db_insert('domain_admins', ['username' => 'admin', 'domain' => 'example.com', 'created' => '2020-01-01', 'active' => 1], ['created'], true); + + $dh = new DomainHandler(0, 'admin', true); + $dh->getList(''); + $result = $dh->result(); + + $this->assertEmpty($dh->infomsg); + $this->assertEmpty($dh->errormsg); + + $this->assertNotEmpty($result); + + $this->assertEquals('example.com', $result['example.com']['domain']); + $this->assertEquals('test domain', $result['example.com']['description']); + + $this->assertEquals(11, $result['example.com']['aliases']); + $this->assertEquals(12, $result['example.com']['mailboxes']); // default aliases. + + $this->assertEquals(4, $result['example.com']['alias_count']); // default aliases. + $this->assertEquals(0, $result['example.com']['mailbox_count']); + $this->assertEquals(1, $result['example.com']['active']); + + $x = new AliasHandler(1, 'admin', true); + + $values = [ + 'localpart' => 'david.test', + 'domain' => 'example.com', + 'active' => 1, + 'address' => 'david.test@example.com', + 'goto' => ['dest@example.com'] + ]; + + $r = $x->init('david.test@example.com'); + $this->assertTrue($r); + $x->getList(''); + $list = $x->result(); + $this->assertEquals(4, count($list)); // default aliases. + + $x->set($values); + $x->store(); + + $x->getList(''); + + $list = $x->result(); + $this->assertEquals(5, count($list)); + + $found = false; + + foreach ($list as $alias => $details) { + if ($alias == 'david.test@example.com') { + // Found! + $this->assertEquals('example.com', $details['domain']); + $this->assertEquals('david.test@example.com', $details['address']); + $this->assertEquals(['dest@example.com'], $details['goto']); + $found = true; + break; + } + } + + $this->assertTrue($found, "check output : " . json_encode($list)); + } }