ci: add tests (#1141)

This commit is contained in:
Jiralite authored and GitHub committed 2026-06-23 04:41:46 +02:00
1 parent ad99de22bc
commit 545814abc1
152 files changed
+287 -532

No files matched your search

@@ -30,7 +30,12 @@ describe('Email verification flow', () => {
await harness?.shutdown();
});
it('allows resending verification email and verifying email', async () => {
const account = await createTestAccount(harness);
const account = await createTestAccount(harness, {skipEmailVerification: true});
await createBuilderWithoutAuth(harness)
.post(`/test/users/${account.userId}/security-flags`)
.body({email_verified: false})
.expect(200)
.execute();
await createBuilder(harness, account.token).post('/auth/verify/resend').body({}).expect(204).execute();
const emails = await listTestEmails(harness, {recipient: account.email});
const verificationEmail = findLastTestEmail(emails, 'email_verification');
@@ -22,8 +22,17 @@ describe('MFA requires verified email', () => {
afterAll(async () => {
await harness?.shutdown();
});
it('rejects TOTP enablement for unverified accounts', async () => {
async function createUnverifiedAccount() {
const account = await createTestAccount(harness, {skipEmailVerification: true});
await createBuilder(harness, '')
.post(`/test/users/${account.userId}/security-flags`)
.body({email_verified: false})
.expect(200)
.execute();
return account;
}
it('rejects TOTP enablement for unverified accounts', async () => {
const account = await createUnverifiedAccount();
const secret = createTotpSecret();
const {json} = await createBuilder<ErrorResponse>(harness, account.token)
.post('/users/@me/mfa/totp/enable')
@@ -33,7 +42,7 @@ describe('MFA requires verified email', () => {
expect(json.code).toBe(APIErrorCodes.MFA_EMAIL_VERIFICATION_REQUIRED);
});
it('rejects WebAuthn registration setup for unverified accounts', async () => {
const account = await createTestAccount(harness, {skipEmailVerification: true});
const account = await createUnverifiedAccount();
const {json} = await createBuilder<ErrorResponse>(harness, account.token)
.post('/users/@me/mfa/webauthn/credentials/registration-options')
.body({password: account.password})
@@ -187,7 +187,9 @@ describe('Phone verification flow', () => {
await allowPhoneVerification(account.userId);
const config = getConfig();
const previousInboundNumber = config.sms.inboundChallengeNumber;
const previousInboundPrefixes = config.abusePolicy.phoneVerification.inboundRequiredPrefixes;
config.sms.inboundChallengeNumber = '+15551234567';
config.abusePolicy.phoneVerification.inboundRequiredPrefixes = ['+998'];
try {
const response = await createBuilder<{
channel: string;
@@ -207,6 +209,7 @@ describe('Phone verification flow', () => {
expect(response.challenge_code).toMatch(/^\d{6}$/);
} finally {
config.sms.inboundChallengeNumber = previousInboundNumber;
config.abusePolicy.phoneVerification.inboundRequiredPrefixes = previousInboundPrefixes;
}
});
it('does not let clients force SMS for inbound-only prefixes', async () => {
@@ -214,7 +217,9 @@ describe('Phone verification flow', () => {
await allowPhoneVerification(account.userId);
const config = getConfig();
const previousInboundNumber = config.sms.inboundChallengeNumber;
const previousInboundPrefixes = config.abusePolicy.phoneVerification.inboundRequiredPrefixes;
config.sms.inboundChallengeNumber = '+15551234567';
config.abusePolicy.phoneVerification.inboundRequiredPrefixes = ['+593'];
try {
const response = await createBuilder<{
channel: string;
@@ -233,6 +238,7 @@ describe('Phone verification flow', () => {
});
} finally {
config.sms.inboundChallengeNumber = previousInboundNumber;
config.abusePolicy.phoneVerification.inboundRequiredPrefixes = previousInboundPrefixes;
}
});
});
@@ -308,19 +308,6 @@ export async function createGroupDmChannel(
return channel;
}
export async function addRecipientToGroupDm(
harness: ApiTestHarness,
token: string,
channelId: string,
userId: string,
): Promise<void> {
await createBuilder(harness, token)
.put(`/channels/${channelId}/recipients/${userId}`)
.body(null)
.expect(204)
.execute();
}
export async function updateUserSettings(
harness: ApiTestHarness,
token: string,
@@ -1,13 +1,16 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
import type {LimitKey} from '@fluxer/constants/src/LimitConfigMetadata';
import {LIMIT_KEYS} from '@fluxer/constants/src/LimitConfigMetadata';
import {MAX_GUILD_MEMBERS_VERY_LARGE_GUILD} from '@fluxer/constants/src/LimitConstants';
import {DEFAULT_RESTRICTED_LIMITS, DEFAULT_STOCK_LIMITS} from '@fluxer/limits/src/LimitDefaults';
import type {LimitConfigSnapshot, LimitRule} from '@fluxer/limits/src/LimitTypes';
const LIMIT_RULE_IDS = {
DEFAULT: 'default',
HOSTED_UPGRADE: 'premium',
VERY_LARGE_GUILD: 'very_large_guild',
} as const;
export interface CachedLimitConfig {
@@ -73,12 +76,22 @@ export function createDefaultLimitConfig(options?: {
id: LIMIT_RULE_IDS.DEFAULT,
limits: {...DEFAULT_RESTRICTED_LIMITS},
},
{
id: LIMIT_RULE_IDS.VERY_LARGE_GUILD,
filters: {guildFeatures: [GuildFeatures.VERY_LARGE_GUILD]},
limits: {max_guild_members: MAX_GUILD_MEMBERS_VERY_LARGE_GUILD},
},
]
: [
{
id: LIMIT_RULE_IDS.DEFAULT,
limits: {...DEFAULT_STOCK_LIMITS},
},
{
id: LIMIT_RULE_IDS.VERY_LARGE_GUILD,
filters: {guildFeatures: [GuildFeatures.VERY_LARGE_GUILD]},
limits: {max_guild_members: MAX_GUILD_MEMBERS_VERY_LARGE_GUILD},
},
],
};
return sanitizeLimitConfigForInstance(cloneLimitConfigSnapshot(hostedDefault), {selfHosted, premiumMode});
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_AR_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_AR_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "إذا كنت مستهلكًا في الاتحاد الأوروبي/المنطقة الاقتصادية الأوروبية، فإنني أوافق صراحةً على تقديم المحتوى الرقمي لـ {product_name} {premium_tier_name} فورًا، وأقرّ بأنني أفقد حقي القانوني في الانسحاب بمجرد تقديم الوصول. لا يؤثر هذا على حقوق المستهلك الإلزامية الأخرى. اطّلع على [شروط الخدمة]({terms_url}).",
"bulk_message_deletion.complete": "انتهينا من حذف رسائلك. أزلنا {message_count, plural, =0 {0 رسالة} one {رسالة واحدة} two {رسالتين} few {# رسائل} many {# رسالة} other {# رسالة}} من {channel_count, plural, =0 {0 مكان} one {مكان واحد} two {مكانين} few {# أماكن} many {# مكانًا} other {# مكان}}.",
"content.virus_detected": "تم الإبلاغ عن هذا الملف على أنه قد يكون غير آمن وتمت إزالته.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_BG_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_BG_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Ако съм потребител от ЕС/ЕИП, изрично се съгласявам цифровото съдържание на {product_name} {premium_tier_name} да бъде предоставено незабавно и признавам, че губя законното си право на отказ, след като достъпът бъде предоставен. Това не засяга други задължителни потребителски права. Виж [Условията за ползване]({terms_url}).",
"bulk_message_deletion.complete": "Изтриването на съобщенията ти приключи. Премахнахме {message_count, plural, =0 {0 съобщения} one {# съобщение} other {# съобщения}} от {channel_count, plural, =0 {0 места} one {# място} other {# места}}.",
"content.virus_detected": "Този файл беше маркиран като потенциално опасен и е премахнат.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_CS_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_CS_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Pokud jsem spotřebitelem z EU/EHP, výslovně souhlasím s tím, že digitální obsah {product_name} {premium_tier_name} bude poskytnut okamžitě, a beru na vědomí, že po poskytnutí přístupu ztrácím zákonné právo na odstoupení od smlouvy. Tím nejsou dotčena další povinná práva spotřebitele. Viz [Podmínky služby]({terms_url}).",
"bulk_message_deletion.complete": "Dokončili jsme mazání tvých zpráv. Odstranili jsme {message_count, plural, =0 {0 zpráv} one {# zprávu} few {# zprávy} many {# zpráv} other {# zpráv}} z {channel_count, plural, =0 {0 míst} one {# místa} few {# míst} many {# míst} other {# míst}}.",
"content.virus_detected": "Tento soubor byl označen jako potenciálně nebezpečný a byl odstraněn.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_DA_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_DA_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Hvis jeg er en EU/EØS-forbruger, giver jeg udtrykkeligt samtykke til, at {product_name}s {premium_tier_name}-abonnement digitalt indhold leveres øjeblikkeligt, og jeg anerkender, at jeg mister min lovbestemte fortrydelsesret, når adgangen gives. Dette påvirker ikke andre ufravigelige forbrugerrettigheder. Se [servicevilkårene]({terms_url}).",
"bulk_message_deletion.complete": "Vi er færdige med at slette dine beskeder. Vi fjernede {message_count, plural, =0 {0 beskeder} one {# besked} other {# beskeder}} fra {channel_count, plural, =0 {0 steder} one {# sted} other {# steder}}.",
"content.virus_detected": "Den fil blev markeret som potentielt usikker og er blevet fjernet.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_DE_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_DE_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Als EU/EWR-Verbraucher stimmst du ausdrücklich zu, dass {product_name} {premium_tier_name} digitale Inhalte sofort bereitgestellt werden, und erkennst an, dass dein gesetzliches Widerrufsrecht erlischt, sobald der Zugriff gewährt wird. Dies berührt nicht andere zwingende Verbraucherrechte. Sieh dir die [Nutzungsbedingungen]({terms_url}) an.",
"bulk_message_deletion.complete": "Wir haben deine Nachrichten gelöscht. Entfernt wurden {message_count, plural, =0 {0 Nachrichten} one {# Nachricht} other {# Nachrichten}} aus {channel_count, plural, =0 {0 Orten} one {# Ort} other {# Orten}}.",
"content.virus_detected": "Diese Datei wurde als potenziell unsicher eingestuft und entfernt.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_EL_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_EL_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Αν είμαι καταναλωτής ΕΕ/ΕΟΧ, συναινώ ρητά στην άμεση παροχή του ψηφιακού περιεχομένου του πλάνου {premium_tier_name} του {product_name} και αναγνωρίζω ότι χάνω το νόμιμο δικαίωμα υπαναχώρησης μόλις παρασχεθεί η πρόσβαση. Αυτό δεν επηρεάζει άλλα υποχρεωτικά δικαιώματα των καταναλωτών. Ανατρέξτε στους [Όρους Παροχής Υπηρεσιών]({terms_url}).",
"bulk_message_deletion.complete": "Ολοκληρώσαμε τη διαγραφή των μηνυμάτων σου. Αφαιρέσαμε {message_count, plural, =0 {0 μηνύματα} one {# μήνυμα} other {# μηνύματα}} από {channel_count, plural, =0 {0 τοποθεσίες} one {# τοποθεσία} other {# τοποθεσίες}}.",
"content.virus_detected": "Αυτό το αρχείο επισημάνθηκε ως δυνητικά μη ασφαλές και έχει αφαιρεθεί.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_EN_GB_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_EN_GB_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "If I am an EU/EEA consumer, I expressly consent to {product_name} {premium_tier_name} digital content being provided immediately and acknowledge that I lose my statutory withdrawal right once access is provided. This does not affect other mandatory consumer rights. See the [Terms of Service]({terms_url}).",
"bulk_message_deletion.complete": "We've finished deleting your messages. We removed {message_count, plural, =0 {0 messages} one {# message} other {# messages}} from {channel_count, plural, =0 {0 places} one {# place} other {# places}}.",
"content.virus_detected": "That file was flagged as potentially unsafe and has been removed.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_ES_419_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_ES_419_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Si soy un consumidor de la UE/EEE, doy mi consentimiento expreso para que el contenido digital de {product_name} {premium_tier_name} se proporcione de inmediato y reconozco que pierdo mi derecho legal de desistimiento una vez que se otorgue el acceso. Esto no afecta otros derechos de consumo obligatorios. Consulta los [Términos de servicio]({terms_url}).",
"bulk_message_deletion.complete": "Terminamos de eliminar tus mensajes. Eliminamos {message_count, plural, =0 {0 mensajes} one {# mensaje} other {# mensajes}} de {channel_count, plural, =0 {0 lugares} one {# lugar} other {# lugares}}.",
"content.virus_detected": "Ese archivo fue marcado como potencialmente inseguro y se ha eliminado.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_ES_ES_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_ES_ES_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Si soy un consumidor de la UE/EEE, doy mi consentimiento expreso para que el contenido digital de {product_name} {premium_tier_name} se proporcione de inmediato y reconozco que pierdo mi derecho legal de desistimiento una vez que se conceda el acceso. Esto no afecta a otros derechos de consumo obligatorios. Consulta los [Términos del servicio]({terms_url}).",
"bulk_message_deletion.complete": "Hemos terminado de eliminar tus mensajes. Hemos eliminado {message_count, plural, =0 {0 mensajes} one {# mensaje} other {# mensajes}} de {channel_count, plural, =0 {0 sitios} one {# sitio} other {# sitios}}.",
"content.virus_detected": "Ese archivo se ha marcado como potencialmente inseguro y se ha eliminado.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_FI_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_FI_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Jos olen EU/ETA-kuluttaja, annan nimenomaisen suostumukseni sille, että {product_name}-tuotteen {premium_tier_name} digitaalinen sisältö toimitetaan välittömästi, ja hyväksyn, että menetän lakisääteisen peruutusoikeuteni, kun pääsy on myönnetty. Tämä ei vaikuta muihin pakollisiin kuluttajaoikeuksiin. Katso [käyttöehdot]({terms_url}).",
"bulk_message_deletion.complete": "Olemme poistaneet viestisi. Poistimme {message_count, plural, =0 {0 viestiä} one {# viestin} other {# viestiä}} {channel_count, plural, =0 {0 paikasta} one {# paikasta} other {# paikasta}}.",
"content.virus_detected": "Tiedosto merkittiin mahdollisesti vaaralliseksi ja se on poistettu.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_FR_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_FR_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "En tant que consommateur UE/EEE, je consens expressément à ce que le contenu numérique {product_name} {premium_tier_name} soit fourni immédiatement et reconnais perdre mon droit de rétractation légal dès l'accès fourni. Cela n'affecte pas les autres droits impératifs des consommateurs. Voir les [Conditions d'utilisation]({terms_url}).",
"bulk_message_deletion.complete": "Nous avons terminé la suppression de tes messages. Nous avons retiré {message_count, plural, =0 {0 message} one {# message} other {# messages}} dans {channel_count, plural, =0 {0 endroit} one {# endroit} other {# endroits}}.",
"content.virus_detected": "Ce fichier a été signalé comme potentiellement dangereux et a été supprimé.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_HE_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_HE_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "אם אני צרכן באיחוד האירופי/EEA, אני מסכים במפורש לכך שתוכן דיגיטלי של {product_name} {premium_tier_name} יסופק באופן מיידי ומאשר שאני מאבד את זכות הביטול הסטטוטורית שלי מרגע שהגישה ניתנת. אין בכך כדי לפגוע בזכויות צרכניות מחייבות אחרות. ראו [תנאי השירות]({terms_url}).",
"bulk_message_deletion.complete": "סיימנו למחוק את ההודעות שלך. הסרנו {message_count, plural, =0 {0 הודעות} one {הודעה אחת} two {שתי הודעות} other {# הודעות}} מתוך {channel_count, plural, =0 {0 מקומות} one {מקום אחד} two {שני מקומות} other {# מקומות}}.",
"content.virus_detected": "הקובץ הזה סומן כחשוד והוסר.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_HI_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_HI_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "अगर मैं EU/EEA का उपभोक्ता हूँ, तो मैं {product_name} {premium_tier_name} डिजिटल कंटेंट को तुरंत उपलब्ध कराने के लिए स्पष्ट रूप से सहमति देता हूँ और स्वीकार करता हूँ कि एक्सेस मिलने के बाद मेरा वैधानिक वापसी का अधिकार समाप्त हो जाता है। इससे अन्य अनिवार्य उपभोक्ता अधिकार प्रभावित नहीं होते। [सेवा की शर्तें]({terms_url}) देखें।",
"bulk_message_deletion.complete": "हमने आपके संदेश हटाने का काम पूरा कर लिया है। हमने {channel_count, plural, =0 {0 जगहों से} one {# जगह से} other {# जगहों से}} {message_count, plural, =0 {0 संदेश} one {# संदेश} other {# संदेश}} हटा दिए।",
"content.virus_detected": "वह फाइल संभावित रूप से असुरक्षित पाई गई और उसे हटा दिया गया है।",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_HR_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_HR_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Ako si potrošač iz EU/EEA, izričito pristaješ na trenutačnu isporuku digitalnog sadržaja {product_name} pretplate {premium_tier_name} i prihvaćaš da gubiš zakonsko pravo na odustanak čim ti se omogući pristup. To ne utječe na ostala obvezna potrošačka prava. Pogledaj [Uvjete pružanja usluge]({terms_url}).",
"bulk_message_deletion.complete": "Završili smo s brisanjem tvojih poruka. Uklonili smo {message_count, plural, =0 {0 poruka} one {# poruku} few {# poruke} other {# poruka}} iz {channel_count, plural, =0 {0 mjesta} one {# mjesta} few {# mjesta} other {# mjesta}}.",
"content.virus_detected": "Ta je datoteka označena kao potencijalno nesigurna i uklonjena je.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_HU_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_HU_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Ha EU/EGT-fogyasztó vagyok, kifejezetten hozzájárulok ahhoz, hogy a {product_name} {premium_tier_name} digitális tartalmat azonnal biztosítsák, és tudomásul veszem, hogy a hozzáférés megadásával elveszítem a törvényes elállási jogomat. Ez nem érinti a többi kötelező fogyasztói jogot. Lásd a [Felhasználási feltételeket]({terms_url}).",
"bulk_message_deletion.complete": "Befejeztük az üzeneteid törlését. Eltávolítottunk {message_count, plural, =0 {0 üzenetet} one {# üzenetet} other {# üzenetet}} {channel_count, plural, =0 {0 helyről} one {# helyről} other {# helyről}}.",
"content.virus_detected": "A fájl potenciálisan veszélyesnek minősült, ezért eltávolítottuk.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_ID_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_ID_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Jika saya konsumen EU/EEA, saya setuju konten digital {product_name} paket {premium_tier_name} diberikan segera dan mengakui bahwa saya kehilangan hak pembatalan begitu akses diberikan. Ini tidak memengaruhi hak konsumen wajib lainnya. Lihat [Ketentuan Layanan]({terms_url}).",
"bulk_message_deletion.complete": "Kami sudah selesai menghapus pesanmu. Kami menghapus {message_count, plural, =0 {0 pesan} other {# pesan}} dari {channel_count, plural, =0 {0 tempat} other {# tempat}}.",
"content.virus_detected": "File itu terdeteksi tidak aman dan telah dihapus.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_IT_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_IT_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Se sono un consumatore UE/SEE, acconsento espressamente alla fornitura immediata del contenuto digitale {product_name} {premium_tier_name} e riconosco di perdere il mio diritto di recesso legale una volta che l'accesso viene fornito. Ciò non pregiudica altri diritti dei consumatori previsti dalla legge. Vedi i [Termini di servizio]({terms_url}).",
"bulk_message_deletion.complete": "Abbiamo finito di eliminare i tuoi messaggi. Abbiamo rimosso {message_count, plural, =0 {0 messaggi} one {# messaggio} other {# messaggi}} da {channel_count, plural, =0 {0 posti} one {# posto} other {# posti}}.",
"content.virus_detected": "Il file è stato segnalato come potenzialmente pericoloso ed è stato rimosso.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_JA_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_JA_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "私が EU/EEA の消費者である場合、{product_name} {premium_tier_name} のデジタルコンテンツが直ちに提供されることに明示的に同意し、アクセスが提供された時点で法定のクーリングオフ権を失うことを承諾します。これはその他の強制的な消費者権利に影響を与えません。[利用規約]({terms_url})をご確認ください。",
"bulk_message_deletion.complete": "メッセージの削除が完了しました。{channel_count, plural, =0 {0 件の場所から} other {# 件の場所から}}{message_count, plural, =0 {0 件のメッセージを削除しました} other {# 件のメッセージを削除しました}}。",
"content.virus_detected": "そのファイルは安全でないと判断されたため、削除されました。",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_KO_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_KO_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "EU/EEA 소비자로서 {product_name} {premium_tier_name} 디지털 콘텐츠를 즉시 제공받는 데 명시적으로 동의하며, 액세스가 제공된 후에는 법정 철회권을 상실함을 인정합니다. 이는 다른 필수 소비자 권리에 영향을 미치지 않습니다. [서비스 약관]({terms_url})을 확인하세요.",
"bulk_message_deletion.complete": "메시지 삭제를 완료했습니다. {channel_count, plural, =0 {0 곳에서} other {# 곳에서}} {message_count, plural, =0 {0 개의 메시지를 삭제했습니다} other {# 개의 메시지를 삭제했습니다}}.",
"content.virus_detected": "해당 파일은 잠재적으로 안전하지 않은 것으로 확인되어 삭제되었어요.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_LT_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_LT_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Jei esu ES/EEE vartotojas, aiškiai sutinku, kad {product_name} {premium_tier_name} skaitmeninis turinys būtų suteiktas nedelsiant ir pripažįstu, kad, suteikus prieigą, netenku teisės atsisakyti sutarties. Tai neturi įtakos kitoms privalomoms vartotojų teisėms. Žr. [Paslaugų teikimo sąlygas]({terms_url}).",
"bulk_message_deletion.complete": "Baigėme trinti tavo žinutes. Pašalinome {message_count, plural, =0 {0 žinučių} one {# žinutę} few {# žinutes} many {# žinutės} other {# žinučių}} iš {channel_count, plural, =0 {0 vietų} one {# vietos} few {# vietų} many {# vietos} other {# vietų}}.",
"content.virus_detected": "Failas buvo pažymėtas kaip galimai nesaugus ir pašalintas.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_NL_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_NL_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Als ik een EU/EER-consument ben, geef ik uitdrukkelijk toestemming dat de digitale inhoud van {product_name} {premium_tier_name} onmiddellijk wordt geleverd en erken ik dat ik mijn wettelijke herroepingsrecht verlies zodra toegang wordt verleend. Dit heeft geen invloed op andere dwingende consumentenrechten. Zie de [Servicevoorwaarden]({terms_url}).",
"bulk_message_deletion.complete": "We zijn klaar met het verwijderen van je berichten. We hebben {message_count, plural, =0 {0 berichten} one {# bericht} other {# berichten}} verwijderd uit {channel_count, plural, =0 {0 plekken} one {# plek} other {# plekken}}.",
"content.virus_detected": "Dat bestand is gemarkeerd als mogelijk onveilig en is verwijderd.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_NO_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_NO_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Hvis jeg er en EU/EØS-forbruker, samtykker jeg uttrykkelig til at {product_name} {premium_tier_name} digitalt innhold leveres umiddelbart, og erkjenner at jeg mister min lovbestemte angrerett når tilgangen er gitt. Dette påvirker ikke andre lovpålagte forbrukerrettigheter. Se [tjenestevilkårene]({terms_url}).",
"bulk_message_deletion.complete": "Vi er ferdige med å slette meldingene dine. Vi fjernet {message_count, plural, =0 {0 meldinger} one {# melding} other {# meldinger}} fra {channel_count, plural, =0 {0 steder} one {# sted} other {# steder}}.",
"content.virus_detected": "Filen ble flagget som potensielt utrygg og er fjernet.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_PL_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_PL_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Jako konsument z UE/EOG zgadzam się na natychmiastowe dostarczenie treści cyfrowych {product_name} {premium_tier_name} i przyjmuję do wiadomości, że po uzyskaniu dostępu tracę ustawowe prawo do odstąpienia od umowy. Nie wpływa to na inne obowiązkowe prawa konsumenta. Zobacz [Warunki użytkowania]({terms_url}).",
"bulk_message_deletion.complete": "Zakończyliśmy usuwanie Twoich wiadomości. Usunęliśmy {message_count, plural, =0 {0 wiadomości} one {# wiadomość} few {# wiadomości} many {# wiadomości} other {# wiadomości}} z {channel_count, plural, =0 {0 miejsc} one {# miejsca} few {# miejsc} many {# miejsc} other {# miejsc}}.",
"content.virus_detected": "Ten plik został oznaczony jako potencjalnie niebezpieczny i został usunięty.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_PT_BR_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_PT_BR_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Se eu for um consumidor da UE/EEE, consinto expressamente que o conteúdo digital {product_name} {premium_tier_name} seja fornecido imediatamente e reconheço que perco meu direito legal de arrependimento assim que o acesso for concedido. Isso não afeta outros direitos obrigatórios do consumidor. Consulte os [Termos de Serviço]({terms_url}).",
"bulk_message_deletion.complete": "Terminamos de excluir suas mensagens. Removemos {message_count, plural, =0 {0 mensagens} one {# mensagem} other {# mensagens}} de {channel_count, plural, =0 {0 lugares} one {# lugar} other {# lugares}}.",
"content.virus_detected": "Esse arquivo foi sinalizado como potencialmente inseguro e foi removido.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_RO_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_RO_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Dacă sunt un consumator din UE/SEE, îmi exprim consimțământul expres ca conținutul digital {product_name} {premium_tier_name} să fie furnizat imediat și recunosc că pierd dreptul legal de retragere odată ce accesul este acordat. Acest lucru nu afectează alte drepturi obligatorii ale consumatorilor. Vezi [Termenii și condițiile]({terms_url}).",
"bulk_message_deletion.complete": "Am terminat de șters mesajele tale. Am eliminat {message_count, plural, =0 {0 de mesaje} one {# mesaj} few {# mesaje} other {# de mesaje}} din {channel_count, plural, =0 {0 de locuri} one {# loc} few {# locuri} other {# de locuri}}.",
"content.virus_detected": "Acest fișier a fost marcat ca potențial nesigur și a fost eliminat.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_RU_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_RU_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Если ты являешься потребителем из ЕС/ЕЭЗ, ты даёшь явное согласие на немедленное предоставление цифрового контента {product_name} {premium_tier_name} и понимаешь, что теряешь законное право на отмены после получения доступа. Это не затрагивает другие обязательные права потребителя. См. [Условия предоставления услуг]({terms_url}).",
"bulk_message_deletion.complete": "Мы завершили удаление ваших сообщений. Удалено {message_count, plural, =0 {0 сообщений} one {# сообщение} few {# сообщения} many {# сообщений} other {# сообщений}} из {channel_count, plural, =0 {0 мест} one {# места} few {# мест} many {# мест} other {# мест}}.",
"content.virus_detected": "Этот файл был отмечен как потенциально опасный и удалён.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_SV_SE_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_SV_SE_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Om jag är en EU/EES-konsument samtycker jag uttryckligen till att {product_name} {premium_tier_name} digitalt innehåll tillhandahålls omedelbart och bekräftar att jag förlorar min lagstadgade ångerrätt när åtkomst ges. Detta påverkar inte andra tvingande konsumenträttigheter. Se [användarvillkoren]({terms_url}).",
"bulk_message_deletion.complete": "Vi har raderat dina meddelanden. Vi tog bort {message_count, plural, =0 {0 meddelanden} one {# meddelande} other {# meddelanden}} från {channel_count, plural, =0 {0 platser} one {# plats} other {# platser}}.",
"content.virus_detected": "Filen flaggades som potentiellt osäker och har tagits bort.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_TH_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_TH_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "หากฉันเป็นผู้บริโภคใน EU/EEA ฉันยินยอมให้มีการให้บริการเนื้อหาดิจิทัล {product_name} {premium_tier_name} ทันที และรับทราบว่าฉันสูญเสียสิทธิ์ในการถอนตัวตามกฎหมายเมื่อมีการให้สิทธิ์การเข้าถึงแล้ว ซึ่งไม่กระทบต่อสิทธิ์ผู้บริโภคอื่นๆ ที่จำเป็น ดู[ข้อกำหนดในการให้บริการ]({terms_url})",
"bulk_message_deletion.complete": "ลบข้อความของคุณเรียบร้อยแล้ว เราลบ {message_count, plural, =0 {0 ข้อความ} other {# ข้อความ}} จาก {channel_count, plural, =0 {0 ที่} other {# ที่}}",
"content.virus_detected": "ไฟล์นั้นถูกตรวจพบว่าอาจไม่ปลอดภัยและถูกลบออกแล้ว",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_TR_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_TR_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "AB/EEA tüketicisiysem, {product_name} {premium_tier_name} dijital içeriğinin hemen sağlanmasına açıkça onay veriyorum ve erişim sağlandıktan sonra yasal cayma hakkımı kaybettiğimi kabul ediyorum. Bu, diğer zorunlu tüketici haklarını etkilemez. [Hizmet Şartları]({terms_url}) sayfasına bakın.",
"bulk_message_deletion.complete": "Mesajlarını silme işlemini tamamladık. {channel_count, plural, =0 {0 yerden} one {# yerden} other {# yerden}} {message_count, plural, =0 {0 mesaj} one {# mesaj} other {# mesaj}} kaldırdık.",
"content.virus_detected": "Bu dosya potansiyel olarak güvensiz olarak işaretlendi ve kaldırıldı.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_UK_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_UK_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Якщо я є споживачем з ЄС/ЄЕЗ, я надаю явну згоду на негайне надання цифрового контенту {product_name} {premium_tier_name} і визнаю, що втрачаю своє законне право на відмову після отримання доступу. Це не впливає на інші обов'язкові права споживача. Див. [Умови надання послуг]({terms_url}).",
"bulk_message_deletion.complete": "Ми завершили видалення твоїх повідомлень. Видалено {message_count, plural, =0 {0 повідомлень} one {# повідомлення} few {# повідомлення} many {# повідомлень} other {# повідомлень}} з {channel_count, plural, =0 {0 місць} one {# місця} few {# місць} many {# місць} other {# місць}}.",
"content.virus_detected": "Цей файл позначено як потенційно небезпечний, і його вилучено.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_VI_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_VI_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "Nếu tôi là người tiêu dùng EU/EEA, tôi đồng ý rõ ràng rằng nội dung kỹ thuật số {product_name} {premium_tier_name} được cung cấp ngay lập tức và thừa nhận rằng tôi mất quyền hủy bỏ theo luật định sau khi có quyền truy cập. Điều này không ảnh hưởng đến các quyền lợi người tiêu dùng bắt buộc khác. Xem [Điều khoản dịch vụ]({terms_url}).",
"bulk_message_deletion.complete": "Chúng tôi đã xóa xong tin nhắn của bạn. Đã xóa {message_count, plural, =0 {0 tin nhắn} other {# tin nhắn}} khỏi {channel_count, plural, =0 {0 nơi} other {# nơi}}.",
"content.virus_detected": "Tệp đó bị gắn cờ là có khả năng không an toàn và đã bị xóa.",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_ZH_CN_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_ZH_CN_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "如果我是欧盟/欧洲经济区消费者,我明确同意立即提供 {product_name} {premium_tier_name} 数字内容,并知晓一旦获得访问权限,我将失去法定撤销权。这不影响其他强制性消费者权利。请参阅[服务条款]({terms_url})。",
"bulk_message_deletion.complete": "我们已删除你的消息。从 {channel_count, plural, =0 {0 个位置} other {# 个位置}} 中移除了 {message_count, plural, =0 {0 条消息} other {# 条消息}}。",
"content.virus_detected": "该文件被标记为可能存在风险,已被移除。",
@@ -2,7 +2,7 @@
import {defineContentI18nLocaleMessages} from '../ContentI18nMessages';
export const CONTENT_I18N_ZH_TW_MESSAGES = defineContentI18nLocaleMessages({
const CONTENT_I18N_ZH_TW_MESSAGES = defineContentI18nLocaleMessages({
"billing.eu_withdrawal_waiver_checkout": "若我是歐盟/歐洲經濟區消費者,我明確同意立即提供 {product_name} {premium_tier_name} 數位內容,並了解一旦取得存取權,即喪失法定撤回權。這不影響其他強制性消費者權益。請參閱[服務條款]({terms_url})。",
"bulk_message_deletion.complete": "我們已刪除你的訊息。從 {channel_count, plural, =0 {0 個位置} other {# 個位置}} 中移除了 {message_count, plural, =0 {0 則訊息} other {# 則訊息}}。",
"content.virus_detected": "該檔案已被標記為可能不安全,並已移除。",
@@ -51,10 +51,6 @@ export function setCassandraQueryExecutorForTesting(executor: CassandraQueryExec
injectedExecutorForTesting = executor;
}
export function hasCassandraQueryExecutorForTesting(): boolean {
return injectedExecutorForTesting !== null;
}
export function resetCassandraQueryExecutorForTesting(): void {
injectedExecutorForTesting?.reset?.();
}
@@ -1,5 +1,7 @@
// SPDX-License-Identifier: AGPL-3.0-or-later
import {GuildFeatures} from '@fluxer/constants/src/GuildConstants';
import {MAX_GUILD_MEMBERS_VERY_LARGE_GUILD} from '@fluxer/constants/src/LimitConstants';
import type {LimitConfigSnapshot, LimitRule} from '@fluxer/limits/src/LimitTypes';
import {describe, expect, test} from 'vitest';
import {createDefaultLimitConfig, mergeWithCurrentDefaults} from '../../constants/LimitConfig';
@@ -13,17 +15,27 @@ interface LegacyLimitConfigSnapshot extends Omit<LimitConfigSnapshot, 'rules'> {
}
describe('Limit config defaults', () => {
test('hosted defaults include only premium and default tier limit rules', () => {
test('hosted defaults include premium, default, and very large guild limit rules', () => {
const config = createDefaultLimitConfig({selfHosted: false});
const premiumRule = config.rules.find((rule) => rule.id === 'premium');
const defaultRule = config.rules.find((rule) => rule.id === 'default');
const veryLargeGuildRule = config.rules.find((rule) => rule.id === 'very_large_guild');
expect(premiumRule).toBeDefined();
expect(defaultRule).toBeDefined();
expect(config.rules.map((rule) => rule.id)).toEqual(['premium', 'default']);
expect(veryLargeGuildRule).toMatchObject({
filters: {guildFeatures: [GuildFeatures.VERY_LARGE_GUILD]},
limits: {max_guild_members: MAX_GUILD_MEMBERS_VERY_LARGE_GUILD},
});
expect(config.rules.map((rule) => rule.id)).toEqual(['premium', 'default', 'very_large_guild']);
});
test('self-hosted defaults include only default tier limit rule', () => {
test('self-hosted defaults include default and very large guild limit rules', () => {
const config = createDefaultLimitConfig({selfHosted: true});
expect(config.rules.map((rule) => rule.id)).toEqual(['default']);
const veryLargeGuildRule = config.rules.find((rule) => rule.id === 'very_large_guild');
expect(veryLargeGuildRule).toMatchObject({
filters: {guildFeatures: [GuildFeatures.VERY_LARGE_GUILD]},
limits: {max_guild_members: MAX_GUILD_MEMBERS_VERY_LARGE_GUILD},
});
expect(config.rules.map((rule) => rule.id)).toEqual(['default', 'very_large_guild']);
});
});