Split auth help link contracts

This commit is contained in:
2026-03-19 19:05:29 +01:00
parent 522705dd33
commit 0bacf2a7a6
6 changed files with 82 additions and 59 deletions

View File

@@ -45,7 +45,8 @@
</testsuite>
<testsuite name="ArchitectureUI">
<file>tests/Architecture/AsideNavigationContractTest.php</file>
<file>tests/Architecture/AuthHelpLinksContractTest.php</file>
<file>tests/Architecture/AuthHelpLinksPageContractTest.php</file>
<file>tests/Architecture/AuthHelpLinksPartialContractTest.php</file>
<file>tests/Architecture/AuthLoginAccessibilityContractTest.php</file>
<file>tests/Architecture/AuthzUiActionContractTest.php</file>
<file>tests/Architecture/AuthzUiLayoutContractTest.php</file>

View File

@@ -0,0 +1,20 @@
<?php
namespace MintyPHP\Tests\Architecture;
final class AuthHelpLinksContractFiles
{
/**
* @return list<string>
*/
public static function secondaryAuthPages(): array
{
return [
'pages/auth/register(login).phtml',
'pages/auth/forgot(login).phtml',
'pages/auth/verify(login).phtml',
'pages/auth/reset(login).phtml',
'pages/auth/verify-email(login).phtml',
];
}
}

View File

@@ -1,57 +0,0 @@
<?php
namespace MintyPHP\Tests\Architecture;
use PHPUnit\Framework\TestCase;
class AuthHelpLinksContractTest extends TestCase
{
use ProjectFileAssertionSupport;
public function testAuthHelpLinksPartialSupportsContextFlags(): void
{
$content = $this->readProjectFile('templates/partials/auth-help-links.phtml');
$this->assertStringContainsString('$authHelpContext', $content);
$this->assertStringContainsString("'show_forgot'", $content);
$this->assertStringContainsString("'show_register'", $content);
$this->assertStringContainsString("'show_back_to_login'", $content);
$this->assertStringContainsString("'show_support'", $content);
}
public function testRegisterLinkRemainsGuardedByRegistrationFlag(): void
{
$content = $this->readProjectFile('templates/partials/auth-help-links.phtml');
$this->assertStringContainsString('allowRegistration()', $content);
$this->assertStringContainsString("lurl('register')", $content);
}
public function testLoginTemplateDefinesStageSpecificLinkMatrix(): void
{
$content = $this->readProjectFile('pages/auth/login(login).phtml');
$this->assertStringContainsString("'show_register' => true", $content);
$this->assertStringContainsString("'show_support' => true", $content);
$this->assertStringContainsString('\'show_forgot\' => !empty($selectedTenantMethods[\'local\'])', $content);
$this->assertStringContainsString('$stage === \'choose_tenant\'', $content);
}
public function testSecondaryAuthPagesProvideBackToLoginAndSupportLinks(): void
{
$files = [
'pages/auth/register(login).phtml',
'pages/auth/forgot(login).phtml',
'pages/auth/verify(login).phtml',
'pages/auth/reset(login).phtml',
'pages/auth/verify-email(login).phtml',
];
foreach ($files as $file) {
$content = $this->readProjectFile($file);
$this->assertStringContainsString("'show_back_to_login' => true", $content, $file);
$this->assertStringContainsString("'show_support' => true", $content, $file);
$this->assertStringContainsString("templatePath('partials/auth-help-links.phtml')", $content, $file);
}
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace MintyPHP\Tests\Architecture;
use PHPUnit\Framework\TestCase;
final class AuthHelpLinksPageContractTest extends TestCase
{
use ProjectFileAssertionSupport;
public function testLoginTemplateDefinesStageSpecificLinkMatrix(): void
{
$content = $this->readProjectFile('pages/auth/login(login).phtml');
$this->assertStringContainsString("'show_register' => true", $content);
$this->assertStringContainsString("'show_support' => true", $content);
$this->assertStringContainsString('\'show_forgot\' => !empty($selectedTenantMethods[\'local\'])', $content);
$this->assertStringContainsString('$stage === \'choose_tenant\'', $content);
}
public function testSecondaryAuthPagesProvideBackToLoginAndSupportLinks(): void
{
foreach (AuthHelpLinksContractFiles::secondaryAuthPages() as $file) {
$content = $this->readProjectFile($file);
$this->assertStringContainsString("'show_back_to_login' => true", $content, $file);
$this->assertStringContainsString("'show_support' => true", $content, $file);
$this->assertStringContainsString("templatePath('partials/auth-help-links.phtml')", $content, $file);
}
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace MintyPHP\Tests\Architecture;
use PHPUnit\Framework\TestCase;
final class AuthHelpLinksPartialContractTest extends TestCase
{
use ProjectFileAssertionSupport;
public function testAuthHelpLinksPartialSupportsContextFlags(): void
{
$content = $this->readProjectFile('templates/partials/auth-help-links.phtml');
$this->assertStringContainsString('$authHelpContext', $content);
$this->assertStringContainsString("'show_forgot'", $content);
$this->assertStringContainsString("'show_register'", $content);
$this->assertStringContainsString("'show_back_to_login'", $content);
$this->assertStringContainsString("'show_support'", $content);
}
public function testRegisterLinkRemainsGuardedByRegistrationFlag(): void
{
$content = $this->readProjectFile('templates/partials/auth-help-links.phtml');
$this->assertStringContainsString('allowRegistration()', $content);
$this->assertStringContainsString("lurl('register')", $content);
}
}

View File

@@ -35,4 +35,4 @@ ohne dass jede Aenderung immer die komplette Suite im Kopf behalten muss.
- `tests/Architecture/ContainerFactoryContractTest.php`
- `tests/Architecture/SecurityLoggingContractTest.php`
- `tests/Architecture/StatusTaxonomyContractTest.php`
- `tests/Architecture/AuthHelpLinksContractTest.php`
- `tests/Architecture/AuthLoginAccessibilityContractTest.php`