shouldReceive('action') ->once() ->with('get_subdomains') ->andReturn([ ['subdomain_name' => 'api.mivita.care', 'subdomain_path' => '/api/public/', 'php_version' => '8.2'], ['subdomain_name' => 'shop.mivita.care', 'subdomain_path' => '/mein.mivita.care/public/', 'php_version' => '8.2'], ]); $this->app->instance(KasController::class, $kas); $this->artisan('subdomains:delete-all-kas', [ '--list-file' => $listFile, ])->assertSuccessful(); $data = json_decode(file_get_contents($listFile), true); expect(file_exists($listFile))->toBeTrue(); expect($data['count'])->toBe(2); expect($data['subdomains'])->toHaveCount(2); expect($data['mode'])->toBe('dry-run'); @unlink($listFile); }); it('löscht mit force alle subdomains aus der kas liste ohne datenbankabgleich', function () { $listFile = sys_get_temp_dir().'/kas-subdomains-force-test-'.uniqid().'.json'; $kas = \Mockery::mock(KasController::class); $kas->shouldReceive('action') ->once() ->with('get_subdomains') ->andReturn([ ['subdomain_name' => 'api.mivita.care', 'subdomain_path' => '/api/public/'], ['subdomain_name' => 'preview.mivita.care', 'subdomain_path' => '/preview/public/'], ['subdomain_name' => 'partner.mivita.care', 'subdomain_path' => '/mein.mivita.care/public/'], ]); $kas->shouldReceive('action') ->once() ->with('delete_subdomain', ['subdomain_name' => 'api.mivita.care']) ->andReturn('TRUE'); $kas->shouldReceive('action') ->once() ->with('delete_subdomain', ['subdomain_name' => 'partner.mivita.care']) ->andReturn('TRUE'); $kas->shouldReceive('action') ->once() ->with('delete_subdomain', ['subdomain_name' => 'preview.mivita.care']) ->andReturn('TRUE'); $this->app->instance(KasController::class, $kas); $this->artisan('subdomains:delete-all-kas', [ '--force' => true, '--list-file' => $listFile, ])->assertSuccessful(); $data = json_decode(file_get_contents($listFile), true); expect($data['count'])->toBe(3); expect($data['mode'])->toBe('delete'); @unlink($listFile); }); it('kann optional auf eine hauptdomain und ein limit begrenzen', function () { $listFile = sys_get_temp_dir().'/kas-subdomains-filter-test-'.uniqid().'.json'; $kas = \Mockery::mock(KasController::class); $kas->shouldReceive('action') ->once() ->with('get_subdomains') ->andReturn([ ['subdomain_name' => 'a.mivita.care'], ['subdomain_name' => 'b.mivita.care'], ['subdomain_name' => 'extern.example.com'], ]); $kas->shouldReceive('action') ->once() ->with('delete_subdomain', ['subdomain_name' => 'a.mivita.care']) ->andReturn('TRUE'); $this->app->instance(KasController::class, $kas); $this->artisan('subdomains:delete-all-kas', [ '--force' => true, '--domain' => 'mivita.care', '--limit' => 1, '--list-file' => $listFile, ])->assertSuccessful(); $data = json_decode(file_get_contents($listFile), true); expect($data['count'])->toBe(1); expect($data['domain_filter'])->toBe('mivita.care'); expect($data['subdomains'])->toHaveCount(1); @unlink($listFile); });