|
|
|
|
@ -16,6 +16,8 @@ use OC\Security\IdentityProof\Manager;
|
|
|
|
|
use OCP\Files\IAppData;
|
|
|
|
|
use OCP\Files\SimpleFS\ISimpleFile;
|
|
|
|
|
use OCP\Files\SimpleFS\ISimpleFolder;
|
|
|
|
|
use OCP\ICache;
|
|
|
|
|
use OCP\ICacheFactory;
|
|
|
|
|
use OCP\IConfig;
|
|
|
|
|
use OCP\IUser;
|
|
|
|
|
use OCP\Security\ICrypto;
|
|
|
|
|
@ -24,18 +26,14 @@ use Psr\Log\LoggerInterface;
|
|
|
|
|
use Test\TestCase;
|
|
|
|
|
|
|
|
|
|
class ManagerTest extends TestCase {
|
|
|
|
|
/** @var Factory|MockObject */
|
|
|
|
|
private $factory;
|
|
|
|
|
/** @var IAppData|MockObject */
|
|
|
|
|
private $appData;
|
|
|
|
|
/** @var ICrypto|MockObject */
|
|
|
|
|
private $crypto;
|
|
|
|
|
/** @var Manager|MockObject */
|
|
|
|
|
private $manager;
|
|
|
|
|
/** @var IConfig|MockObject */
|
|
|
|
|
private $config;
|
|
|
|
|
/** @var LoggerInterface|MockObject */
|
|
|
|
|
private $logger;
|
|
|
|
|
private Factory&MockObject $factory;
|
|
|
|
|
private IAppData&MockObject $appData;
|
|
|
|
|
private ICrypto&MockObject $crypto;
|
|
|
|
|
private Manager&MockObject $manager;
|
|
|
|
|
private IConfig&MockObject $config;
|
|
|
|
|
private LoggerInterface&MockObject $logger;
|
|
|
|
|
private ICacheFactory&MockObject $cacheFactory;
|
|
|
|
|
private ICache&MockObject $cache;
|
|
|
|
|
|
|
|
|
|
protected function setUp(): void {
|
|
|
|
|
parent::setUp();
|
|
|
|
|
@ -49,6 +47,12 @@ class ManagerTest extends TestCase {
|
|
|
|
|
->with('identityproof')
|
|
|
|
|
->willReturn($this->appData);
|
|
|
|
|
$this->logger = $this->createMock(LoggerInterface::class);
|
|
|
|
|
$this->cacheFactory = $this->createMock(ICacheFactory::class);
|
|
|
|
|
$this->cache = $this->createMock(ICache::class);
|
|
|
|
|
|
|
|
|
|
$this->cacheFactory->expects($this->any())
|
|
|
|
|
->method('createDistributed')
|
|
|
|
|
->willReturn($this->cache);
|
|
|
|
|
|
|
|
|
|
$this->crypto = $this->createMock(ICrypto::class);
|
|
|
|
|
$this->manager = $this->getManager(['generateKeyPair']);
|
|
|
|
|
@ -66,7 +70,8 @@ class ManagerTest extends TestCase {
|
|
|
|
|
$this->factory,
|
|
|
|
|
$this->crypto,
|
|
|
|
|
$this->config,
|
|
|
|
|
$this->logger
|
|
|
|
|
$this->logger,
|
|
|
|
|
$this->cacheFactory,
|
|
|
|
|
);
|
|
|
|
|
} else {
|
|
|
|
|
return $this->getMockBuilder(Manager::class)
|
|
|
|
|
@ -74,7 +79,8 @@ class ManagerTest extends TestCase {
|
|
|
|
|
$this->factory,
|
|
|
|
|
$this->crypto,
|
|
|
|
|
$this->config,
|
|
|
|
|
$this->logger
|
|
|
|
|
$this->logger,
|
|
|
|
|
$this->cacheFactory,
|
|
|
|
|
])
|
|
|
|
|
->onlyMethods($setMethods)
|
|
|
|
|
->getMock();
|
|
|
|
|
@ -115,6 +121,33 @@ class ManagerTest extends TestCase {
|
|
|
|
|
->method('getFolder')
|
|
|
|
|
->with('user-MyUid')
|
|
|
|
|
->willReturn($folder);
|
|
|
|
|
$this->cache
|
|
|
|
|
->expects($this->exactly(2))
|
|
|
|
|
->method('get')
|
|
|
|
|
->willReturn(null);
|
|
|
|
|
|
|
|
|
|
$expected = new Key('MyPublicKey', 'MyPrivateKey');
|
|
|
|
|
$this->assertEquals($expected, $this->manager->getKey($user));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public function testGetKeyWithExistingKeyCached(): void {
|
|
|
|
|
$user = $this->createMock(IUser::class);
|
|
|
|
|
$user
|
|
|
|
|
->expects($this->once())
|
|
|
|
|
->method('getUID')
|
|
|
|
|
->willReturn('MyUid');
|
|
|
|
|
$this->crypto
|
|
|
|
|
->expects($this->once())
|
|
|
|
|
->method('decrypt')
|
|
|
|
|
->with('EncryptedPrivateKey')
|
|
|
|
|
->willReturn('MyPrivateKey');
|
|
|
|
|
$this->cache
|
|
|
|
|
->expects($this->exactly(2))
|
|
|
|
|
->method('get')
|
|
|
|
|
->willReturnMap([
|
|
|
|
|
['user-MyUid-public', 'MyPublicKey'],
|
|
|
|
|
['user-MyUid-private', 'EncryptedPrivateKey'],
|
|
|
|
|
]);
|
|
|
|
|
|
|
|
|
|
$expected = new Key('MyPublicKey', 'MyPrivateKey');
|
|
|
|
|
$this->assertEquals($expected, $this->manager->getKey($user));
|
|
|
|
|
|