refactor(tests): convert AgentApiKey tests to Pest functional syntax

- Convert AgentApiKeyTest from PHPUnit class-based syntax to Pest functional syntax
- Add tests/Pest.php configuration with helper functions (createWorkspace, createApiKey)
- Organise tests using describe() blocks for better structure
- Add additional test coverage for key rotation and security edge cases
- Update TODO.md to reflect Pest syntax usage

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Snider 2026-01-29 18:42:56 +00:00
parent c432a45ca9
commit e70e078bcb
3 changed files with 650 additions and 616 deletions

View file

@ -53,9 +53,11 @@ Production-quality task list for the AI agent orchestration package.
### Test Coverage (Critical Gap)
- [x] **TEST-001: Add AgentApiKey model tests** (FIXED 2026-01-29)
- Created `tests/Feature/AgentApiKeyTest.php`
- Created `tests/Feature/AgentApiKeyTest.php` using Pest functional syntax
- Created `tests/Pest.php` for Pest configuration with helper functions
- Covers: key generation with Argon2id, validation, permissions, rate limiting, IP restrictions
- 65+ test cases for comprehensive model coverage
- Additional coverage: key rotation, security edge cases
- 70+ test cases for comprehensive model coverage
- [x] **TEST-002: Add AgentApiKeyService tests** (FIXED 2026-01-29)
- Created `tests/Feature/AgentApiKeyServiceTest.php`

File diff suppressed because it is too large Load diff

74
tests/Pest.php Normal file
View file

@ -0,0 +1,74 @@
<?php
declare(strict_types=1);
/*
|--------------------------------------------------------------------------
| Pest Configuration
|--------------------------------------------------------------------------
|
| Configure Pest testing framework for the core-agentic package.
| This file binds test traits to test cases and provides helper functions.
|
*/
use Core\Mod\Agentic\Models\AgentApiKey;
use Core\Tenant\Models\Workspace;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase;
/*
|--------------------------------------------------------------------------
| Test Case
|--------------------------------------------------------------------------
|
| The closure passed to the "uses()" method binds an abstract test case
| to all Feature and Unit tests. The TestCase class provides a bridge
| between Laravel's testing utilities and Pest's expressive syntax.
|
*/
uses(TestCase::class)->in('Feature', 'Unit', 'UseCase');
/*
|--------------------------------------------------------------------------
| Database Refresh
|--------------------------------------------------------------------------
|
| Apply RefreshDatabase to Feature tests that need a clean database state.
| Unit tests typically don't require database access.
|
*/
uses(RefreshDatabase::class)->in('Feature');
/*
|--------------------------------------------------------------------------
| Helper Functions
|--------------------------------------------------------------------------
|
| Custom helper functions for agent-related tests.
|
*/
/**
* Create a workspace for testing.
*/
function createWorkspace(array $attributes = []): Workspace
{
return Workspace::factory()->create($attributes);
}
/**
* Create an API key for testing.
*/
function createApiKey(
Workspace|int|null $workspace = null,
string $name = 'Test Key',
array $permissions = [],
int $rateLimit = 100
): AgentApiKey {
$workspace ??= createWorkspace();
return AgentApiKey::generate($workspace, $name, $permissions, $rateLimit);
}