diff options
author | Marcos Zuriaga <wolfi@wolfi.es> | 2016-10-12 20:08:59 +0300 |
---|---|---|
committer | Marcos Zuriaga <wolfi@wolfi.es> | 2016-10-12 20:08:59 +0300 |
commit | 5186648889e76d92e5066b626e981ea73c15fc9f (patch) | |
tree | 640300a639279cf2db6333f10c154ee0249c1f8d /tests | |
parent | 9c53219346bb4c9b69baa27d69338d0b8b158a93 (diff) |
Added unit test for SharingACLMapper
Renamed some vars
Added launch_phpunit.sh to gitignore
Diffstat (limited to 'tests')
-rw-r--r-- | tests/db/DatabaseHelperTest.php | 23 | ||||
-rw-r--r-- | tests/unit/lib/Db/SharingACLMapperTest.php | 139 |
2 files changed, 161 insertions, 1 deletions
diff --git a/tests/db/DatabaseHelperTest.php b/tests/db/DatabaseHelperTest.php index 0d4a4d9a..a10e7724 100644 --- a/tests/db/DatabaseHelperTest.php +++ b/tests/db/DatabaseHelperTest.php @@ -103,6 +103,29 @@ abstract class DatabaseHelperTest extends PHPUnit_Extensions_Database_TestCase { } /** + * Finds a subset of rows from the dataset which field name matches + * the specified value + * @param $table_name The name of the table to search into + * @param $field_name The field name + * @param $value_match The value to match data against + * @return array An array of rows + */ + public function findInDataset($table_name, $field_name, $value_match) { + $table = $this->getTableDataset($table_name); + $rows = $table->getRowCount(); + + $result = []; + for ($i = 0; $i < $rows; $i++) { + $row = $table->getRow($i); + if ($row[$field_name] == $value_match){ + $result[] = $row; + } + } + + return $result; + } + + /** * @coversNothing */ public function testTablesSetup() { diff --git a/tests/unit/lib/Db/SharingACLMapperTest.php b/tests/unit/lib/Db/SharingACLMapperTest.php index f03d8558..3d76553f 100644 --- a/tests/unit/lib/Db/SharingACLMapperTest.php +++ b/tests/unit/lib/Db/SharingACLMapperTest.php @@ -8,6 +8,143 @@ * @copyright Copyright (c) 2016, Marcos Zuriaga Miguel (wolfi@wolfi.es) * @license AGPLv3 */ -class SharingACLMapperTest { +use \OCA\Passman\Db\SharingACLMapper; +use \OCA\Passman\Db\SharingACL; +/** + * @coversDefaultClass \OCA\Passman\Db\SharingACLMapper + */ +class SharingACLMapperTest extends DatabaseHelperTest { + CONST TABLES = [ + 'oc_passman_sharing_acl' + ]; + + /** + * @var SharingACLMapper + */ + protected $mapper; + + /** + * @var PHPUnit_Extensions_Database_DataSet_ITable + */ + protected $dataset; + /** + * This function should return the table name, for example + * for a test running on oc_passman_vaults it shall return ["oc_passman_vaults"] + * + * @internal + * @return string[] + */ + public function getTablesNames() { + return self::TABLES; + } + + public function setUp() { + parent::setUp(); + $this->mapper = new SharingACLMapper($this->db); + $this->dataset = $this->getTableDataset(self::TABLES[0]); + } + + /** + * @covers ::getItemACL + * @uses SharingACL + */ + public function testGetItemACL() { + $expected_acl = $this->dataset->getRow(0); + $expected_acl = SharingACL::fromRow($expected_acl); + + $acl = $this->mapper->getItemACL( + $expected_acl->getUserId(), + $expected_acl->getItemGuid() + ); + + $this->assertInstanceOf(SharingACL::class, $acl); + $this->assertEquals($expected_acl, $acl); + } + + /** + * @covers ::getVaultEntries + */ + public function testGetVaultEntries() { + $expected_data = $this->findInDataset(self::TABLES[0], 'user_id', $this->dataset->getRow(0)['user_id']); + + $this->assertNotCount(0, $expected_data, "The dataset has no values D:"); + $result = $this->mapper->getVaultEntries($expected_data[0]['user_id'], $expected_data[0]['vault_guid']); + + $this->assertInternalType('array', $expected_data); + $this->assertCount(count($expected_data), $result); + $this->assertInstanceOf(SharingACL::class, $result[0]); + + foreach ($expected_data as &$row) { + $row = SharingACL::fromRow($row); + } + + $this->assertEquals($expected_data, $result, "Data not matching the tests data", 0.0, 10, true, false); + } + + /** + * @covers ::updateCredentialACL + */ + public function testUpdateCredentialACL() { + $expected_data = SharingACL::fromRow($this->dataset->getRow(0)); + $data = $this->mapper->getItemACL( + $expected_data->getUserId(), + $expected_data->getItemGuid() + ); + + $this->assertEquals($expected_data, $data); + + $data->setExpire(\OCA\Passman\Utility\Utils::getTime()); + $this->mapper->updateCredentialACL($data); + + $updated = $this->mapper->getItemACL( + $expected_data->getUserId(), + $expected_data->getItemGuid() + ); + + $this->assertEquals($data->getId(), $updated->getId()); + $this->assertNotEquals($expected_data->getExpire(), $updated->getExpire()); + $this->assertEquals($data->getExpire(), $updated->getExpire()); + } + + /** + * @covers ::getCredentialAclList + */ + public function testGetCredentialAclList() { + $expected_data = $this->findInDataset( + self::TABLES[0], + 'item_guid', + $this->dataset->getRow(0)['item_guid'] + ); + + $this->assertNotEmpty($expected_data); + + $data = $this->mapper->getCredentialAclList($expected_data[0]['item_guid']); + + $this->assertInternalType('array', $data); + $this->assertCount(count($expected_data), $data); + $this->assertInstanceOf(SharingACL::class, $data[0]); + + foreach ($expected_data as &$row) { + $row = SharingACL::fromRow($row); + } + + $this->assertEquals($expected_data, $data, "Data not matching the tests data", 0.0, 10, true, false); + } + + /** + * @covers ::deleteShareACL + */ + public function testDeleteShareACL() { + $test_data = SharingACL::fromRow($this->dataset->getRow(0)); + + $this->mapper->deleteShareACL($test_data); + + $this->expectException(\OCP\AppFramework\Db\DoesNotExistException::class); + + $this->mapper->getItemACL( + $test_data->getUserId(), + $test_data->getItemGuid() + ); + } }
\ No newline at end of file |