fix: validate dossier scope and accurate directory MFA status

This commit is contained in:
2026-10-29 22:42:22 +02:00
parent 4f72751b8b
commit fb9a363e9e
7 changed files with 135 additions and 5 deletions
@@ -0,0 +1,39 @@
<?php
namespace Tests\Unit;
use App\Services\InvestmentConsumerScope;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Tests\TestCase;
class InvestmentConsumerScopeTest extends TestCase
{
public function test_an_explicit_opportunity_cannot_be_silently_discarded_when_the_dossier_has_no_choices(): void
{
$context = ['fields' => ['project_title' => 'Synthetic QA dossier'], 'selection' => [], 'opportunity_choices' => []];
try {
app(InvestmentConsumerScope::class)->context($context, 'opportunity:99999999');
$this->fail('An explicit opportunity outside the dossier must be rejected instead of becoming general context.');
} catch (HttpException $error) {
$this->assertSame(422, $error->getStatusCode());
$this->assertSame([], $context['opportunity_choices']);
$this->assertSame('Synthetic QA dossier', $context['fields']['project_title']);
}
}
public function test_general_context_without_an_opportunity_preserves_an_empty_dossier(): void
{
$context = ['fields' => ['project_title' => 'Synthetic QA dossier'], 'selection' => []];
$this->assertSame($context, app(InvestmentConsumerScope::class)->context($context, null));
}
public function test_an_explicit_opportunity_outside_existing_choices_is_rejected(): void
{
$context = ['fields' => [], 'selection' => [], 'opportunity_choices' => [['opportunity' => ['key' => 'opportunity:1']]]];
$this->expectException(HttpException::class);
app(InvestmentConsumerScope::class)->context($context, 'opportunity:2');
}
}