Skip to content

Commit

Permalink
Merge 1505728 into 6387fa7
Browse files Browse the repository at this point in the history
  • Loading branch information
prolic committed May 2, 2020
2 parents 6387fa7 + 1505728 commit ef37963
Show file tree
Hide file tree
Showing 13 changed files with 343 additions and 386 deletions.
2 changes: 1 addition & 1 deletion composer.json
Expand Up @@ -32,7 +32,7 @@
},
"require-dev": {
"amphp/log": "^1.0",
"amphp/phpunit-util": "dev-alt-13",
"amphp/phpunit-util": "dev-master",
"doctrine/instantiator": "^1.1",
"php-coveralls/php-coveralls": "^2.1",
"phpspec/prophecy": "^1.7.2",
Expand Down
13 changes: 6 additions & 7 deletions tests/EventStoreConnectionTestCase.php
Expand Up @@ -14,26 +14,25 @@
namespace ProophTest\EventStoreClient;

use Amp\PHPUnit\AsyncTestCase;
use Amp\Promise;
use Amp\Success;
use Generator;
use Prooph\EventStore\Async\EventStoreConnection;
use ProophTest\EventStoreClient\Helper\TestConnection;

abstract class EventStoreConnectionTestCase extends AsyncTestCase
{
protected EventStoreConnection $connection;

protected function setUpAsync(): Promise
protected function setUpAsync(): Generator
{
$this->connection = TestConnection::create();
$this->connection->connectAsync();

return parent::setUpAsync();
yield $this->connection->connectAsync();
}

protected function tearDownAsync(): Promise
protected function tearDownAsync(): Generator
{
$this->connection->close();

return parent::tearDownAsync();
yield new Success();
}
}
298 changes: 147 additions & 151 deletions tests/Security/AuthenticationTestCase.php
Expand Up @@ -41,167 +41,163 @@ abstract class AuthenticationTestCase extends AsyncTestCase
protected ?EventStoreConnection $connection;
protected ?UserCredentials $userCredentials = null;

protected function setUpAsync(): Promise
protected function setUpAsync(): Generator
{
return call(function (): Generator {
$manager = new UsersManager(
TestConnection::httpEndPoint(),
5000,
EndpointExtensions::HTTP_SCHEMA,
$this->adminUser()
);

yield $manager->createUserAsync(
'user1',
'Test User 1',
[],
'pa$$1'
);

yield $manager->createUserAsync(
'user2',
'Test User 2',
[],
'pa$$2'
);

yield $manager->createUserAsync(
'adm',
'Administrator User',
[SystemRoles::ADMINS],
'admpa$$'
);

$connection = TestConnection::create($this->adminUser());
yield $connection->connectAsync();

yield $connection->setStreamMetadataAsync(
'noacl-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->build()
);
yield $connection->setStreamMetadataAsync(
'read-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setReadRoles('user1')->build()
);
yield $connection->setStreamMetadataAsync(
'write-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setWriteRoles('user1')->build()
);
yield $connection->setStreamMetadataAsync(
'metaread-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setMetadataReadRoles('user1')->build()
);
yield $connection->setStreamMetadataAsync(
'metawrite-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setMetadataWriteRoles('user1')->build()
);

yield $connection->setStreamMetadataAsync(
'$all',
ExpectedVersion::ANY,
StreamMetadata::create()->setReadRoles('user1')->build(),
new UserCredentials('adm', 'admpa$$')
);

yield $connection->setStreamMetadataAsync(
'$system-acl',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles('user1')
->setWriteRoles('user1')
->setMetadataReadRoles('user1')
->setMetadataWriteRoles('user1')
->build(),
new UserCredentials('adm', 'admpa$$')
);
yield $connection->setStreamMetadataAsync(
'$system-adm',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles(SystemRoles::ADMINS)
->setWriteRoles(SystemRoles::ADMINS)
->setMetadataReadRoles(SystemRoles::ADMINS)
->setMetadataWriteRoles(SystemRoles::ADMINS)
->build(),
new UserCredentials('adm', 'admpa$$')
);

yield $connection->setStreamMetadataAsync(
'normal-all',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles(SystemRoles::ALL)
->setWriteRoles(SystemRoles::ALL)
->setMetadataReadRoles(SystemRoles::ALL)
->setMetadataWriteRoles(SystemRoles::ALL)
->build()
);
yield $connection->setStreamMetadataAsync(
'$system-all',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles(SystemRoles::ALL)
->setWriteRoles(SystemRoles::ALL)
->setMetadataReadRoles(SystemRoles::ALL)
->setMetadataWriteRoles(SystemRoles::ALL)
->build(),
new UserCredentials('adm', 'admpa$$')
);
$manager = new UsersManager(
TestConnection::httpEndPoint(),
5000,
EndpointExtensions::HTTP_SCHEMA,
$this->adminUser()
);

yield $manager->createUserAsync(
'user1',
'Test User 1',
[],
'pa$$1'
);

$connection->close();
yield $manager->createUserAsync(
'user2',
'Test User 2',
[],
'pa$$2'
);

yield $manager->createUserAsync(
'adm',
'Administrator User',
[SystemRoles::ADMINS],
'admpa$$'
);

$this->connection = TestConnection::create($this->userCredentials);
$connection = TestConnection::create($this->adminUser());
yield $connection->connectAsync();

yield $this->connection->connectAsync();
});
yield $connection->setStreamMetadataAsync(
'noacl-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->build()
);
yield $connection->setStreamMetadataAsync(
'read-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setReadRoles('user1')->build()
);
yield $connection->setStreamMetadataAsync(
'write-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setWriteRoles('user1')->build()
);
yield $connection->setStreamMetadataAsync(
'metaread-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setMetadataReadRoles('user1')->build()
);
yield $connection->setStreamMetadataAsync(
'metawrite-stream',
ExpectedVersion::ANY,
StreamMetadata::create()->setMetadataWriteRoles('user1')->build()
);

yield $connection->setStreamMetadataAsync(
'$all',
ExpectedVersion::ANY,
StreamMetadata::create()->setReadRoles('user1')->build(),
new UserCredentials('adm', 'admpa$$')
);

yield $connection->setStreamMetadataAsync(
'$system-acl',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles('user1')
->setWriteRoles('user1')
->setMetadataReadRoles('user1')
->setMetadataWriteRoles('user1')
->build(),
new UserCredentials('adm', 'admpa$$')
);
yield $connection->setStreamMetadataAsync(
'$system-adm',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles(SystemRoles::ADMINS)
->setWriteRoles(SystemRoles::ADMINS)
->setMetadataReadRoles(SystemRoles::ADMINS)
->setMetadataWriteRoles(SystemRoles::ADMINS)
->build(),
new UserCredentials('adm', 'admpa$$')
);

yield $connection->setStreamMetadataAsync(
'normal-all',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles(SystemRoles::ALL)
->setWriteRoles(SystemRoles::ALL)
->setMetadataReadRoles(SystemRoles::ALL)
->setMetadataWriteRoles(SystemRoles::ALL)
->build()
);
yield $connection->setStreamMetadataAsync(
'$system-all',
ExpectedVersion::ANY,
StreamMetadata::create()
->setReadRoles(SystemRoles::ALL)
->setWriteRoles(SystemRoles::ALL)
->setMetadataReadRoles(SystemRoles::ALL)
->setMetadataWriteRoles(SystemRoles::ALL)
->build(),
new UserCredentials('adm', 'admpa$$')
);

$connection->close();

$this->connection = TestConnection::create($this->userCredentials);

yield $this->connection->connectAsync();
}

protected function tearDownAsync(): Promise
protected function tearDownAsync(): Generator
{
$this->userCredentials = null;
$this->connection->close();

return call(function (): Generator {
$manager = new UsersManager(
TestConnection::httpEndPoint(),
5000,
EndpointExtensions::HTTP_SCHEMA,
$this->adminUser()
);

yield $manager->deleteUserAsync('user1');
yield $manager->deleteUserAsync('user2');
yield $manager->deleteUserAsync('adm');

$connection = TestConnection::create($this->adminUser());
yield $connection->connectAsync();

yield $connection->setStreamMetadataAsync(
'$all',
ExpectedVersion::ANY,
StreamMetadata::create()->build(),
$this->adminUser()
);

yield $connection->setStreamMetadataAsync(
'$system-acl',
ExpectedVersion::ANY,
StreamMetadata::create()->build(),
$this->adminUser()
);

yield $connection->setSystemSettingsAsync(
new SystemSettings(),
$this->adminUser()
);

$connection->close();
});
$manager = new UsersManager(
TestConnection::httpEndPoint(),
5000,
EndpointExtensions::HTTP_SCHEMA,
$this->adminUser()
);

yield $manager->deleteUserAsync('user1');
yield $manager->deleteUserAsync('user2');
yield $manager->deleteUserAsync('adm');

$connection = TestConnection::create($this->adminUser());
yield $connection->connectAsync();

yield $connection->setStreamMetadataAsync(
'$all',
ExpectedVersion::ANY,
StreamMetadata::create()->build(),
$this->adminUser()
);

yield $connection->setStreamMetadataAsync(
'$system-acl',
ExpectedVersion::ANY,
StreamMetadata::create()->build(),
$this->adminUser()
);

yield $connection->setSystemSettingsAsync(
new SystemSettings(),
$this->adminUser()
);

$connection->close();
}

protected function readEvent(string $streamId, ?string $login, ?string $password): Promise
Expand Down
17 changes: 7 additions & 10 deletions tests/Security/overriden_system_stream_security.php
Expand Up @@ -14,7 +14,6 @@
namespace ProophTest\EventStoreClient\Security;

use function Amp\call;
use Amp\Promise;
use Generator;
use Prooph\EventStore\Async\EventStoreTransaction;
use Prooph\EventStore\Exception\AccessDenied;
Expand All @@ -24,18 +23,16 @@

class overriden_system_stream_security extends AuthenticationTestCase
{
protected function setUpAsync(): Promise
protected function setUpAsync(): Generator
{
return call(function (): Generator {
yield parent::setUpAsync();
yield from parent::setUpAsync();

$settings = new SystemSettings(
null,
new StreamAcl(['user1'], ['user1'], ['user1'], ['user1'], ['user1'])
);
$settings = new SystemSettings(
null,
new StreamAcl(['user1'], ['user1'], ['user1'], ['user1'], ['user1'])
);

yield $this->connection->setSystemSettingsAsync($settings, new UserCredentials('adm', 'admpa$$'));
});
yield $this->connection->setSystemSettingsAsync($settings, new UserCredentials('adm', 'admpa$$'));
}

/** @test */
Expand Down

0 comments on commit ef37963

Please sign in to comment.