assertTrue(ExtensionTestAllowlist::isActive()); $this->assertFalse(ExtensionTestAllowlist::isAllowed('plugin', 'sirsoft-gdpr')); $this->assertFalse( $this->app->providerIsLoaded(GdprServiceProvider::class), 'core-only 테스트에서 GdprServiceProvider 가 등록되었습니다 — 격리 실패' ); } /** * @effects core_only_test_does_not_register_gdpr_middleware_in_web_group, core_only_test_does_not_register_gdpr_middleware_in_api_group */ public function test_core_only_test_does_not_register_gdpr_middleware_in_groups(): void { $kernel = $this->app->make(HttpKernelContract::class); $this->assertInstanceOf(HttpKernel::class, $kernel); $groups = $kernel->getMiddlewareGroups(); $webGroup = $groups['web'] ?? []; $apiGroup = $groups['api'] ?? []; $this->assertNotContains( CookieConsentMiddleware::class, $webGroup, 'core-only 테스트의 web 미들웨어 그룹에 CookieConsentMiddleware 가 개입했습니다' ); $this->assertNotContains( CookieConsentMiddleware::class, $apiGroup, 'core-only 테스트의 api 미들웨어 그룹에 CookieConsentMiddleware 가 개입했습니다' ); } /** * @effects core_only_test_does_not_register_gdpr_plugin_routes */ public function test_core_only_test_does_not_register_gdpr_plugin_routes(): void { $routes = collect($this->app['router']->getRoutes()->getRoutes()) ->map(fn ($route) => $route->uri()) ->filter(fn ($uri) => str_contains($uri, 'plugins/sirsoft-gdpr')); $this->assertCount( 0, $routes, 'core-only 테스트에 GDPR 플러그인 라우트가 등록되었습니다 — 격리 실패' ); } /** * @effects allowlist_inactive_when_never_configured */ public function test_allowlist_is_inactive_when_never_configured(): void { // 비-테스트 부팅(또는 set 호출 전)에는 가드가 비활성이어야 // 운영/개발 환경의 확장 전수 로딩이 보존됨 ExtensionTestAllowlist::reset(); $this->assertFalse(ExtensionTestAllowlist::isActive()); // 테스트 격리 보존을 위해 본 클래스의 core-only allowlist 복원 ExtensionTestAllowlist::set($this->resolveAllowedExtensions()); } /** * @effects selfExtension_returns_null_for_core_tests */ public function test_selfExtension_returns_null_for_core_tests(): void { // 본 테스트 클래스는 tests/Feature/ 하위 (코어 테스트) → // selfExtension() 의 modules/plugins 경로 패턴에 매칭되지 않아 null 반환 $this->assertNull($this->selfExtension()); } }