pluck('key')->sort()->values()->all()) ->toBe(['billing', 'info', 'no-reply', 'office', 'support']); }); it('marks no-reply as unanswerable and the rest as answerable', function () { expect(Mailbox::findByKey('no-reply')->no_reply)->toBeTrue() ->and(Mailbox::findByKey('support')->no_reply)->toBeFalse(); }); it('points every purpose at a mailbox, so nothing sends from nowhere', function () { // Not just "the setting has a value" — a purpose pointing at a key with // no matching row would still pass a not-null check on the setting while // MailboxResolver::named() resolves it to nothing and every send throws. foreach (MailPurpose::ALL as $purpose) { $key = Settings::get(MailPurpose::settingKey($purpose)); expect($key)->not->toBeNull() ->and(Mailbox::findByKey($key))->not->toBeNull(); } }); it('no longer offers mail.password as a secret, because it is superseded', function () { expect(SecretVault::REGISTRY)->not->toHaveKey('mail.password'); });