, * Michael Stilkerich * * This file is part of RCMCardDAV. * * RCMCardDAV is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 2 of the License, or * (at your option) any later version. * * RCMCardDAV 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with RCMCardDAV. If not, see . */ declare(strict_types=1); namespace MStilkerich\Tests\RCMCardDAV\DBInteroperability; use MStilkerich\CardDavClient\{Account,AddressbookCollection,WebDavResource,WebDavCollection}; use MStilkerich\CardDavClient\Services\Discovery; use MStilkerich\Tests\RCMCardDAV\TestInfrastructure; use PHPUnit\Framework\TestCase; use carddav; /** * @psalm-type AddressbookSettings = array{ * name?: string, * username?: string, * password?: string, * url?: string, * refresh_time?: string, * active?: "1", * use_categories?: "1", * delete?: "1", * resync?: "1" * } */ final class CarddavTest extends TestCase { /** @var TestData */ private static $testData; public static function setUpBeforeClass(): void { // Set a session password so that encryption/decryption of password with scheme "encrypted" works $rcube = \rcube::get_instance(); $_SESSION['password'] = $rcube->encrypt('theRoundcubePassword'); // Setup the roundcube database handle $dbsettings = TestInfrastructureDB::dbSettings(); $db_dsnw = $dbsettings[0]; $db = TestInfrastructureDB::initDatabase($db_dsnw); // Initializes the infrastructure (central Config class with test-specific implementation) TestInfrastructure::init($db); // Setup test data in the DB self::$testData = new TestData(TestInfrastructureDB::getDbHandle()); self::$testData->initDatabase(); } public function setUp(): void { } public function tearDown(): void { TestInfrastructure::logger()->reset(); } public function testProvidesCorrectListOfAddressbooks(): void { $plugin = new carddav(\rcube_plugin_api::get_instance()); $plugin->init(); $pseudoAbook = [ "id" => "foo", "name" => "foo", "groups" => true, "autocomplete" => true, "readonly" => true ]; $res = $plugin->listAddressbooks(["sources" => ["foobar" => $pseudoAbook]]); $this->assertArrayHasKey("foobar", $res["sources"], "Other addressbooks not preserved in list"); foreach (TestData::INITDATA["carddav_addressbooks"] as $idx => $abookrow) { $id = "carddav_" . self::$testData->getRowId("carddav_addressbooks", $idx); $this->assertArrayHasKey($id, $res["sources"], print_r($res, true)); $this->assertSame($abookrow[0], $res["sources"][$id]["name"]); $this->assertFalse($res["sources"][$id]["readonly"]); $this->assertTrue($res["sources"][$id]["autocomplete"]); $this->assertTrue($res["sources"][$id]["groups"]); } } } // vim: ts=4:sw=4:expandtab:fenc=utf8:ff=unix:tw=120