mirror of
https://github.com/nextcloud/passman.git
synced 2026-01-03 22:25:01 +08:00
Added partial test
Fixed bug with null data in the mock datasets Edited mock data so there it's some expired credentials Added some phpdocs
This commit is contained in:
parent
41b0005e7c
commit
8a30328a73
4 changed files with 145 additions and 4 deletions
|
|
@ -32,12 +32,21 @@ class CredentialMapper extends Mapper {
|
|||
return $this->findEntities($sql, [$user_id, $vault_id]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $vault_id
|
||||
* @param $user_id
|
||||
* @return Credential[]
|
||||
*/
|
||||
public function getRandomCredentialByVaultId($vault_id, $user_id) {
|
||||
$sql = 'SELECT * FROM `*PREFIX*passman_credentials` ' .
|
||||
'WHERE `user_id` = ? and vault_id = ? AND shared_key is NULL ORDER BY RAND() LIMIT 1';
|
||||
return $this->findEntities($sql, [$user_id, $vault_id]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $timestamp
|
||||
* @return Credential[]
|
||||
*/
|
||||
public function getExpiredCredentials($timestamp){
|
||||
$sql = 'SELECT * FROM `*PREFIX*passman_credentials` ' .
|
||||
'WHERE `expire_time` > 0 AND `expire_time` < ?';
|
||||
|
|
|
|||
|
|
@ -81,7 +81,14 @@ abstract class DatabaseHelperTest extends PHPUnit_Extensions_Database_TestCase {
|
|||
$qb->insert($table_no_prefix);
|
||||
|
||||
foreach ($row as $key => $value){
|
||||
$qb->setValue($key, is_numeric($value) ? $value : ("'{$value}'"));
|
||||
if (is_null($value)) {
|
||||
$value = 'NULL';
|
||||
}
|
||||
else if (!is_numeric($value)) {
|
||||
$value = "'{$value}'";
|
||||
}
|
||||
|
||||
$qb->setValue($key, $value);
|
||||
}
|
||||
|
||||
$qb->execute();
|
||||
|
|
@ -114,7 +121,7 @@ abstract class DatabaseHelperTest extends PHPUnit_Extensions_Database_TestCase {
|
|||
$result = [];
|
||||
for ($i = 0; $i < $rows; $i++) {
|
||||
$row = $table->getRow($i);
|
||||
if ($row[$field_name] === $value_match){
|
||||
if ($row[$field_name] == $value_match){
|
||||
$result[] = $row;
|
||||
}
|
||||
}
|
||||
|
|
@ -132,7 +139,7 @@ abstract class DatabaseHelperTest extends PHPUnit_Extensions_Database_TestCase {
|
|||
$ret = [];
|
||||
|
||||
foreach ($dataset as $value){
|
||||
if ($value[$field_name] === $value_match){
|
||||
if ($value[$field_name] == $value_match){
|
||||
$ret[] = $value;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@
|
|||
<field name="url">eyJpdiI6Ikg2UC96K1dmdGRZN0VhYU1XV1ZsQlEiLCJ2IjoxLCJpdGVyIjoxMDAwLCJrcyI6MjU2LCJ0cyI6NjQsIm1vZGUiOiJjY20iLCJhZGF0YSI6IiIsImNpcGhlciI6ImFlcyIsInNhbHQiOiJEN1Y1Z0VYbWt6NCIsImN0IjoibFhvV25sVTluZStDQklkNCJ9</field>
|
||||
<field name="favicon" xsi:nil="true" />
|
||||
<field name="renew_interval" xsi:nil="true" />
|
||||
<field name="expire_time">0</field>
|
||||
<field name="expire_time">150</field>
|
||||
<field name="delete_time">0</field>
|
||||
<field name="files">eyJpdiI6Ijh4UTJ4ZlF5YXlJN25CYXAvUGtMWGciLCJ2IjoxLCJpdGVyIjoxMDAwLCJrcyI6MjU2LCJ0cyI6NjQsIm1vZGUiOiJjY20iLCJhZGF0YSI6IiIsImNpcGhlciI6ImFlcyIsInNhbHQiOiJEN1Y1Z0VYbWt6NCIsImN0IjoiQU9oUDBiamE0ZmxGL1EifQ==</field>
|
||||
<field name="custom_fields">eyJpdiI6Ik1QM1RPZXl1dWNzZEtiVS9ucm0vaEEiLCJ2IjoxLCJpdGVyIjoxMDAwLCJrcyI6MjU2LCJ0cyI6NjQsIm1vZGUiOiJjY20iLCJhZGF0YSI6IiIsImNpcGhlciI6ImFlcyIsInNhbHQiOiJEN1Y1Z0VYbWt6NCIsImN0IjoiSlBlMExLMWIvdTdMTkEifQ==</field>
|
||||
|
|
|
|||
125
tests/unit/lib/Db/CredentialMapperTest.php
Normal file
125
tests/unit/lib/Db/CredentialMapperTest.php
Normal file
|
|
@ -0,0 +1,125 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
*
|
||||
* Date: 15/10/16
|
||||
* Time: 20:06
|
||||
*
|
||||
* @copyright Copyright (c) 2016, Marcos Zuriaga Miguel (wolfi@wolfi.es)
|
||||
* @license AGPLv3
|
||||
*/
|
||||
use \OCA\Passman\Db\CredentialMapper;
|
||||
use \OCA\Passman\Db\Credential;
|
||||
use \OCA\Passman\Utility\Utils;
|
||||
|
||||
/**
|
||||
* @coversDefaultClass \OCA\Passman\Db\CredentialMapper
|
||||
*/
|
||||
class CredentialMapperTest extends DatabaseHelperTest {
|
||||
CONST TABLES = [
|
||||
'oc_passman_credentials'
|
||||
];
|
||||
|
||||
/**
|
||||
* @var CredentialMapper
|
||||
*/
|
||||
protected $mapper;
|
||||
|
||||
/**
|
||||
* @var PHPUnit_Extensions_Database_DataSet_ITable
|
||||
*/
|
||||
protected $dataset;
|
||||
|
||||
/**
|
||||
* @after
|
||||
*/
|
||||
public function setUp() {
|
||||
parent::setUp();
|
||||
$this->mapper = new CredentialMapper($this->db, new Utils());
|
||||
$this->dataset = $this->getTableDataset(self::TABLES[0]);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::getCredentialsByVaultId
|
||||
*/
|
||||
public function testGetCredentialsByVaultId() {
|
||||
$expected = $this->findInDataset(
|
||||
self::TABLES[0],
|
||||
'vault_id',
|
||||
$this->dataset->getRow(0)['vault_id']
|
||||
);
|
||||
|
||||
$expected = $this->filterDataset($expected, 'vault_id', $expected[0]['vault_id']);
|
||||
|
||||
/**
|
||||
* @var Credential[] $expected
|
||||
*/
|
||||
foreach ($expected as &$value) $value = Credential::fromRow($value);
|
||||
|
||||
$data = $this->mapper->getCredentialsByVaultId(
|
||||
$expected[0]->getVaultId(),
|
||||
$expected[0]->getUserId()
|
||||
);
|
||||
|
||||
$this->assertCount(count($expected), $data);
|
||||
$this->assertEquals($expected, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::getRandomCredentialByVaultId
|
||||
*/
|
||||
public function testGetRandomCredentialByVaultId() {
|
||||
$row = $this->dataset->getRow(0);
|
||||
|
||||
$data = $this->mapper->getRandomCredentialByVaultId(
|
||||
$row['vault_id'],
|
||||
$row['user_id']
|
||||
);
|
||||
$this->assertCount(1, $data);
|
||||
|
||||
$tmp = $this->findInDataset(self::TABLES[0], 'vault_id', $row['vault_id']);
|
||||
$tmp = $this->filterDataset($tmp, 'user_id', $row['user_id']);
|
||||
$tmp = $this->filterDataset($tmp, 'id', $data[0]->getId());
|
||||
$this->assertCount(count($tmp), $data);
|
||||
|
||||
$tmp[0] = Credential::fromRow($tmp[0]);
|
||||
$this->assertEquals($tmp, $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* @covers ::getExpiredCredentials
|
||||
*/
|
||||
public function testGetExpiredCredentials() {
|
||||
$expired = [];
|
||||
|
||||
for ($i = 0; $i < $this->dataset->getRowCount(); $i++) {
|
||||
$row = $this->dataset->getRow($i);
|
||||
if ($row['expire_time'] > 0 && $row['expire_time'] < Utils::getTime()){
|
||||
$expired[] = Credential::fromRow($row);
|
||||
}
|
||||
}
|
||||
|
||||
$data = $this->mapper->getExpiredCredentials(Utils::getTime());
|
||||
$this->assertNotCount(0, $data, "Not any expired credentials in the dataset?");
|
||||
$this->assertCount(count($expired), $data);
|
||||
$this->assertEquals($expired, $data);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * @covers ::getCredentialById
|
||||
// */
|
||||
// public function testGetCredentialById() {
|
||||
//
|
||||
// }
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue