continuous-integration/drone/pr Build is passing
- V6 mail_lists + mail_list_members: письмо на alerts-prod@ → каждому участнику своя копия в папку рассылки; закрытая рассылка — только от вошедших отправителей (550 снаружи) - bob+prod@ → ящик bob@, папка prod (создаётся сама; системные папки нельзя) - TRAP: чужие адреса → одна копия в INBOX отправителя; наши ящики и рассылки доставляются - /api/service/** (SERVICE_TOKEN из secrets-init): аккаунты (пароль один раз, выключение → вон из рассылок), рассылки - MailDirectory: одно пространство адресов для ящиков и рассылок, без «+» в именах - Настройки → LISTS для администраторов - 86 тестов; живой прогон на Postgres 17: миграции V1–V6, API, SMTP (рассылка/метка/ловушка) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
22 lines
895 B
Java
22 lines
895 B
Java
package com.mailserver.service;
|
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
/** A "+tag" never puts mail into a system folder and never makes a strange folder name. */
|
|
class DeliveryFolderTest {
|
|
|
|
@Test
|
|
void onlyPlainOwnFolderNames() {
|
|
assertThat(MailService.deliveryFolderName("prod")).isEqualTo("prod");
|
|
assertThat(MailService.deliveryFolderName("alerts.db-1")).isEqualTo("alerts.db-1");
|
|
assertThat(MailService.deliveryFolderName(null)).isNull();
|
|
assertThat(MailService.deliveryFolderName("inbox")).isNull();
|
|
assertThat(MailService.deliveryFolderName("Trash")).isNull();
|
|
assertThat(MailService.deliveryFolderName("spam")).isNull();
|
|
assertThat(MailService.deliveryFolderName("../x")).isNull();
|
|
assertThat(MailService.deliveryFolderName("a".repeat(51))).isNull();
|
|
}
|
|
}
|