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

github.com/nextcloud/passman.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMarcos Zuriaga <wolfi@wolfi.es>2016-10-12 20:08:59 +0300
committerMarcos Zuriaga <wolfi@wolfi.es>2016-10-12 20:08:59 +0300
commit5186648889e76d92e5066b626e981ea73c15fc9f (patch)
tree640300a639279cf2db6333f10c154ee0249c1f8d /tests
parent9c53219346bb4c9b69baa27d69338d0b8b158a93 (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.php23
-rw-r--r--tests/unit/lib/Db/SharingACLMapperTest.php139
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