active()->create(); [$user, $activeTenant] = createUserWithTenant(tenant: $activeTenant, role: 'owner'); $response = $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $activeTenant->workspace_id]) ->post(route('admin.select-tenant'), [ 'tenant_id' => (int) $activeTenant->getKey(), ]); $response->assertRedirect(TenantDashboard::getUrl(panel: 'tenant', tenant: $activeTenant)); expect(session()->get(WorkspaceContext::LAST_TENANT_IDS_SESSION_KEY, [])) ->toHaveKey((string) $activeTenant->workspace_id, (int) $activeTenant->getKey()); }); it('returns 404 when selecting an onboarding tenant that is not eligible for the standard lane', function (): void { $activeTenant = Tenant::factory()->active()->create(); [$user, $activeTenant] = createUserWithTenant(tenant: $activeTenant, role: 'owner'); $onboardingTenant = Tenant::factory()->onboarding()->create([ 'workspace_id' => (int) $activeTenant->workspace_id, ]); createUserWithTenant( tenant: $onboardingTenant, user: $user, role: 'owner', workspaceRole: 'owner', ensureDefaultMicrosoftProviderConnection: false, ); $this->actingAs($user) ->withSession([WorkspaceContext::SESSION_KEY => (int) $activeTenant->workspace_id]) ->post(route('admin.select-tenant'), [ 'tenant_id' => (int) $onboardingTenant->getKey(), ]) ->assertNotFound(); expect(session()->get(WorkspaceContext::LAST_TENANT_IDS_SESSION_KEY, [])) ->not->toHaveKey((string) $activeTenant->workspace_id); }); it('redirects to choose-workspace when no workspace is selected', function (): void { $user = User::factory()->create(); $workspaceA = Workspace::factory()->create(); $workspaceB = Workspace::factory()->create(); WorkspaceMembership::factory()->create([ 'workspace_id' => (int) $workspaceA->getKey(), 'user_id' => (int) $user->getKey(), 'role' => 'owner', ]); WorkspaceMembership::factory()->create([ 'workspace_id' => (int) $workspaceB->getKey(), 'user_id' => (int) $user->getKey(), 'role' => 'owner', ]); $tenant = Tenant::factory()->active()->create([ 'workspace_id' => (int) $workspaceA->getKey(), ]); $user->tenants()->syncWithoutDetaching([ $tenant->getKey() => ['role' => 'owner'], ]); $this->actingAs($user) ->post(route('admin.select-tenant'), [ 'tenant_id' => (int) $tenant->getKey(), ]) ->assertRedirect('/admin/choose-workspace'); });