CluPilotCloud/tests/Feature/Admin
nexxo a84251260c
tests / pest (push) Failing after 9m6s Details
tests / assets (push) Successful in 22s Details
tests / release (push) Has been skipped Details
Read the mailbox password where it actually is, and let the console test it
The inbox kept saying no mailbox was set up while the password sat right
there on the settings page. isConfigured() read
config('services.inbound_mail.password'), which is only ever the .env
value: this project deliberately does not overlay stored secrets onto config
at boot — SecretVault's own docblock says so, and HttpMonitoringClient reads
its token at the point of use for exactly that reason. My docblock even
asserted the opposite mechanism, which I never verified. It reads the vault
now, and falls back to .env because SecretVault::get() already does.

And a way to find out. "Verbindung prüfen" saves the form first — testing
what is on screen while the server still holds the previous values would
report on a mailbox nobody configured — then performs the same four verbs
the real fetch performs: LOGIN, SELECT, SEARCH UNSEEN. A check that proves
something easier than the actual job is worse than none.

What it reports back is one of five fixed words, never the server's own
prose: an IMAP error carries the command it failed on, and for LOGIN that
command contains the password. Each word maps to a sentence an operator can
act on — address and port, mailbox and password, the folder.

The line saying when the mailbox was last reached is on both pages, and it
is written by the SCHEDULED run as well as by the button. Otherwise "last
checked" would mean "last time somebody pressed a button", which is the less
interesting of the two: a mailbox that stopped answering at three in the
morning is the one worth seeing, and nobody presses a button at three in the
morning. It is also shown when the answer is "never" — an empty inbox and a
mailbox that stopped answering look identical, and this line is the whole
difference.

A fetch against a mailbox that just refused the login now takes nothing in
and records the refusal, rather than reporting "nothing new" — which was
true and useless.

Also: HostStepsTest asserted the literal clupilot.com for a host name. That
was true until CLUPILOT_DNS_ZONE was set to clupilot.cloud on this
installation, and then a correct configuration failed a test. The zone is
pinned in the test now; what it is about is the shape of the name and which
address it carries.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-30 13:12:29 +02:00
..
AdminConsoleTest.php Send a guest bounced off the console to the console's own sign-in 2026-07-28 13:32:05 +02:00
AdminHostRestrictionTest.php Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
AdminSettingsTest.php Check users directly for the reverse operator-identity collision, not just customers 2026-07-28 15:36:29 +02:00
BroadcastAuthTest.php Authorize the console's live feed on the operator guard, not the default 2026-07-28 13:31:50 +02:00
CapacityQueueTest.php Fix nine defects in the provisioning pipelines 2026-07-30 01:34:55 +02:00
ConsoleHostSeparationTest.php Match the logout exemption through AdminArea, not a bare route check 2026-07-28 15:27:06 +02:00
ConsoleNetworkTest.php Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
ConsoleReportsRealDataTest.php Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
CustomerDetailTabsTest.php Put the open tab in the address bar, including the first one 2026-07-29 23:46:13 +02:00
CustomerRevenueTest.php Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
DatacenterTest.php Let a datacenter code be corrected while nothing depends on it, and say which building 2026-07-28 22:25:21 +02:00
EditCustomerTest.php Let an operator correct a customer's details 2026-07-29 23:18:46 +02:00
EnvFileEditorTest.php Add a raw .env editor to the Integrations page, with a net under it 2026-07-29 01:51:27 +02:00
EnvRestartTest.php Let the customer buy it themselves, and tab the integrations page 2026-07-29 19:42:28 +02:00
GrantPlanTest.php Grant a package or module from the customer's row in the console 2026-07-29 12:42:21 +02:00
HostCapacityTest.php Warn that a package cannot be placed, before somebody pays for it 2026-07-29 18:20:51 +02:00
HostManagementTest.php Send a guest bounced off the console to the console's own sign-in 2026-07-28 13:32:05 +02:00
HostVpnStateTest.php Read VPN host state from the synced peer table, not a live hub call 2026-07-29 00:18:21 +02:00
InboundMailTest.php Read the mailbox password where it actually is, and let the console test it 2026-07-30 13:12:29 +02:00
IncidentConsoleTest.php Rebuild the status page as a status page 2026-07-29 12:45:18 +02:00
IncidentDeleteTest.php Let an incident be deleted, and start measuring whether the hosts answer 2026-07-29 15:16:48 +02:00
InstanceAdminAccessTest.php Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
IntegrationsPageTest.php Let the customer buy it themselves, and tab the integrations page 2026-07-29 19:42:28 +02:00
MailRegisterTest.php Show the customer, and write the answers once 2026-07-29 22:37:30 +02:00
MailTemplateTest.php Say that a click landed, and make moving one actually move it 2026-07-29 23:06:30 +02:00
MaintenanceTest.php Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
OperatorLogoutTest.php Stop the console logout from destroying a shared portal session 2026-07-28 13:58:42 +02:00
OperatorModelTest.php Give the people who run CluPilot a table of their own 2026-07-28 09:20:54 +02:00
OperatorTwoFactorEnrollmentTest.php Give the two-factor page a way back, and a shape 2026-07-28 22:25:42 +02:00
OperatorTwoFactorPolicyTest.php Move operator two-factor enrolment off admin.settings onto its own page 2026-07-28 15:11:20 +02:00
PasswordConfirmationGuardTest.php Merge credentials and infrastructure into one Integrations page 2026-07-29 01:49:39 +02:00
PlanAdminTest.php Paketversionen: Verkauf wieder aufnehmen und saubere Übergabe 2026-07-29 14:58:11 +02:00
ProvisioningActionsTest.php Fix nine defects in the provisioning pipelines 2026-07-30 01:34:55 +02:00
RbacMoveTest.php Restart a machine, enforce the quota that was sold, end a route that ended 2026-07-29 18:28:28 +02:00
RbacTest.php Move the console's identity out of the customer table 2026-07-28 10:31:43 +02:00
RevenueGrantedTest.php Skip the invoice for a full gift, keep it out of revenue, hide its price 2026-07-29 12:41:32 +02:00
SecretCipherTest.php Make isUsable() apply the same 32-byte rule encrypter() does 2026-07-28 05:09:09 +02:00
SecretVaultTest.php Read the DNS and monitoring tokens from the vault, not config 2026-07-29 00:34:54 +02:00
ServiceInvoiceTest.php Write an invoice for work that came off no price list 2026-07-29 20:12:26 +02:00
SettingsTabsTest.php Put the open tab in the address bar, including the first one 2026-07-29 23:46:13 +02:00
UpdateButtonTest.php Show that the update is running, and stop showing the rsync log 2026-07-29 20:33:02 +02:00
UpdateWindowTest.php Update on a schedule if the owner wants one, and say where incidents go 2026-07-29 15:01:54 +02:00
VpnTest.php Replace native confirm() dialogs with the app's own modal pattern 2026-07-28 19:34:27 +02:00