middleware([InitializeTenancyByDomain::class, CheckTenantForMaintenanceMode::class]); $tenant = MaintenanceTenant::create(); $tenant->domains()->create([ 'domain' => 'acme.localhost', ]); $this->get('http://acme.localhost/foo') ->assertSuccessful(); tenancy()->end(); // flush stored tenant instance $tenant->putDownForMaintenance(); $this->expectException(HttpException::class); $this->withoutExceptionHandling() ->get('http://acme.localhost/foo'); tenancy()->end(); $tenant->bringUpFromMaintenance(); tenancy()->end(); $this->get('http://acme.localhost/foo') ->assertSuccessful() ->assertSeeText('bar'); } /** @test */ public function tenant_can_be_in_maintenance_mode_from_command() { Route::get('/foo', function () { return 'bar'; })->middleware([InitializeTenancyByDomain::class, CheckTenantForMaintenanceMode::class]); $tenant = MaintenanceTenant::create(); $tenant->domains()->create([ 'domain' => 'acme.localhost', ]); $this->get('http://acme.localhost/foo') ->assertSuccessful(); tenancy()->end(); // flush stored tenant instance Artisan::call('tenancy:down'); $this->expectException(HttpException::class); $this->withoutExceptionHandling() ->get('http://acme.localhost/foo'); tenancy()->end(); Artisan::call('tenancy:up'); tenancy()->end(); $this->get('http://acme.localhost/foo') ->assertSuccessful() ->assertSeeText('bar'); } } class MaintenanceTenant extends Tenant { use MaintenanceMode; }