passman/tests/unit/lib/Db/SharingACLMapperTest.php

150 lines
3.8 KiB
PHP
Raw Normal View History

2016-10-12 05:15:45 +08:00
<?php
/**
*
* Date: 11/10/16
* Time: 22:40
*
* @copyright Copyright (c) 2016, Marcos Zuriaga Miguel (wolfi@wolfi.es)
* @license AGPLv3
*/
use \OCA\Passman\Db\SharingACLMapper;
use \OCA\Passman\Db\SharingACL;
2016-10-12 05:15:45 +08:00
/**
* @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 \OCA\Passman\Db\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()
);
}
2016-10-12 05:15:45 +08:00
}