Skip to content

Commit

Permalink
Add dedicated replay test
Browse files Browse the repository at this point in the history
  • Loading branch information
pablothedude committed Dec 4, 2024
1 parent 5d18d49 commit 82bed25
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 1 deletion.
1 change: 1 addition & 0 deletions stepup/tests/behat/config/behat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ default:
raUrl: 'https://ra.dev.openconext.local'
- ApiFeatureContext:
apiUrl: 'https://middleware.dev.openconext.local'
- ReplayContext: ~
- Behat\MinkExtension\Context\MinkContext

extensions:
Expand Down
2 changes: 1 addition & 1 deletion stepup/tests/behat/features/bootstrap/FeatureContext.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ class FeatureContext implements Context
*/
private $institutionConfiguration;

private static function execCommand(string $command): void
public static function execCommand(string $command): void
{
$output = [];
$returnCode = -1;
Expand Down
44 changes: 44 additions & 0 deletions stepup/tests/behat/features/bootstrap/ReplayContext.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
<?php

use Behat\Behat\Context\Context;
use Behat\Behat\Hook\Scope\BeforeScenarioScope;
use Behat\MinkExtension\Context\MinkContext;

class ReplayContext implements Context
{
/**
* @var \Behat\MinkExtension\Context\MinkContext
*/
private $minkContext;

/**
* @BeforeScenario
*/
public function gatherContexts(BeforeScenarioScope $scope)
{
$environment = $scope->getEnvironment();

$this->minkContext = $environment->getContext(MinkContext::class);
}

/**
* @Given a replay is performed
*/
public function replay()
{
// Generate test databases
echo "Preparing test schemas\n";
FeatureContext::execCommand('docker exec -t stepup-middleware-1 bin/console doctrine:schema:drop --em=middleware --env=smoketest --force');
FeatureContext::execCommand('docker exec -t stepup-middleware-1 bin/console doctrine:schema:drop --em=gateway --env=smoketest --force');
FeatureContext::execCommand('docker exec -t stepup-middleware-1 bin/console doctrine:schema:create --em=middleware --env=smoketest');
FeatureContext::execCommand('docker exec -t stepup-middleware-1 bin/console doctrine:schema:create --em=gateway --env=smoketest');

// Import the events.sql into middleware
echo "Add events to test database\n";
FeatureContext::execCommand("mysql -uroot -psecret middleware_test -h mariadb < ./fixtures/eventstream.sql");

// Perform an event replay
echo "Replaying event stream\n";
FeatureContext::execCommand("docker exec -t stepup-middleware-1 bin/console middleware:event:replay --env=smoketest_event_replay --no-interaction -vvv");
}
}
11 changes: 11 additions & 0 deletions stepup/tests/behat/features/replay.feature
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Feature: A replay is performed on Middleware
In order to replay an event stream
On the command line
I expect tha last event to be reflected in the data set

Scenario: After a replay is performed I would expect the last event reflected in the data set
Given a replay is performed
Given I authenticate with user "ra" and password "secret"
And I request "GET /identity?institution=institution-b.example.com&NameID=urn:collab:person:institution-b.example.com:joe-b5"
Then the api response status code should be 200
And the "items" property should contain 1 items
84 changes: 84 additions & 0 deletions stepup/tests/behat/fixtures/eventstream.sql

Large diffs are not rendered by default.

0 comments on commit 82bed25

Please sign in to comment.