mirror of
https://github.com/fluxerapp/fluxer
synced 2026-10-13 05:58:29 +09:00
refactor(api): tidy the api and shared packages (#2733)
This commit is contained in:
1 parent
580401d2dc
commit
5afbf67a70
333 files changed
+10180
-7910
No files matched your search
@@ -21,6 +21,9 @@ import {
|
||||
|
||||
const VOICE_NOISE_SUPPRESSION_CONFIG_KEY = 'voice_noise_suppression_config';
|
||||
const EXPERIMENT_DELIVERY_CONFIG_KEY = 'experiment_delivery_config';
|
||||
const APP_PUBLIC_CONFIG_KEY = 'app_public_config';
|
||||
const INSTANCE_POLICY_CONFIG_KEY = 'instance_policy_config';
|
||||
const INSTANCE_INTEGRATIONS_CONFIG_KEY = 'instance_integrations_config';
|
||||
|
||||
class CountingInMemoryCassandraQueryExecutor extends InMemoryCassandraQueryExecutor {
|
||||
instanceConfigSelects = 0;
|
||||
@@ -158,6 +161,106 @@ describe('InstanceConfigRepository', () => {
|
||||
});
|
||||
});
|
||||
|
||||
it('keeps the stored setup state when a branding field is invalid', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
const kvProvider = new MockKVProvider();
|
||||
const repository = createRepository(kvProvider);
|
||||
|
||||
await repository.setConfig(
|
||||
APP_PUBLIC_CONFIG_KEY,
|
||||
JSON.stringify({branding: {product_name: 'Kept', icon_url: 42}, setup: {configured: false}}),
|
||||
);
|
||||
|
||||
const config = await repository.getAppPublicConfig();
|
||||
expect(config.setup.configured).toBe(false);
|
||||
expect(config.branding.product_name).toBe('Kept');
|
||||
});
|
||||
|
||||
it('keeps valid stored instance policy flags when one field is invalid', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
const kvProvider = new MockKVProvider();
|
||||
const repository = createRepository(kvProvider);
|
||||
|
||||
await repository.setConfig(
|
||||
INSTANCE_POLICY_CONFIG_KEY,
|
||||
JSON.stringify({direct_messages_disabled: true, single_community_enabled: true, premium_mode: 'nonsense'}),
|
||||
);
|
||||
|
||||
const policy = await repository.getInstancePolicyConfig();
|
||||
expect(policy.direct_messages_disabled).toBe(true);
|
||||
expect(policy.single_community_enabled).toBe(true);
|
||||
expect(policy.premium_mode).toBe('everyone');
|
||||
});
|
||||
|
||||
it('keeps valid stored integration settings when one field is invalid', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
const kvProvider = new MockKVProvider();
|
||||
const repository = createRepository(kvProvider);
|
||||
|
||||
await repository.setConfig(
|
||||
INSTANCE_INTEGRATIONS_CONFIG_KEY,
|
||||
JSON.stringify({bluesky: {client_name: 'Kept Instance', enabled: 'yes'}}),
|
||||
);
|
||||
|
||||
expect((await repository.getEffectiveBlueskyConfig()).client_name).toBe('Kept Instance');
|
||||
expect((await repository.getInstanceIntegrationsConfig()).bluesky.enabled).toBeNull();
|
||||
});
|
||||
|
||||
it('drops invalid stored SSO allowed domains and keeps the valid ones', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
const kvProvider = new MockKVProvider();
|
||||
const repository = createRepository(kvProvider);
|
||||
|
||||
await repository.setConfig('sso_allowed_domains', JSON.stringify(['example.com', '[email protected]', 'Kept.ORG']));
|
||||
|
||||
expect((await repository.getSsoConfig()).allowedEmailDomains).toEqual(['example.com', 'kept.org']);
|
||||
});
|
||||
|
||||
it('falls back to the default SSO flags when a stored flag is not a boolean', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
const kvProvider = new MockKVProvider();
|
||||
const repository = createRepository(kvProvider);
|
||||
|
||||
await repository.setConfig('sso_enabled', 'yes');
|
||||
await repository.setConfig('sso_enforced', 'sometimes');
|
||||
await repository.setConfig('sso_auto_provision', 'maybe');
|
||||
|
||||
const config = await repository.getSsoConfig();
|
||||
expect(config.enabled).toBe(false);
|
||||
expect(config.enforced).toBe(false);
|
||||
expect(config.autoProvision).toBe(true);
|
||||
});
|
||||
|
||||
it('clears an invalid allowed domain list only while SSO is disabled', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
const kvProvider = new MockKVProvider();
|
||||
const repository = createRepository(kvProvider);
|
||||
|
||||
const cleared = await repository.setSsoConfig({enabled: false, allowedEmailDomains: ['[email protected]']});
|
||||
expect(cleared.allowedEmailDomains).toEqual([]);
|
||||
|
||||
await expect(repository.setSsoConfig({enabled: true, allowedEmailDomains: ['[email protected]']})).rejects.toThrow();
|
||||
});
|
||||
|
||||
it('keeps an all-invalid stored allowed domain list non-empty so SSO still rejects every domain', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
const kvProvider = new MockKVProvider();
|
||||
const repository = createRepository(kvProvider);
|
||||
|
||||
await repository.setConfig('sso_allowed_domains', JSON.stringify(['[email protected]', 'bad/domain']));
|
||||
|
||||
const domains = (await repository.getSsoConfig()).allowedEmailDomains;
|
||||
expect(domains.length).toBeGreaterThan(0);
|
||||
expect(domains).not.toContain('example.com');
|
||||
});
|
||||
|
||||
it('returns the default voice noise suppression config when the key is absent', async () => {
|
||||
const executor = new CountingInMemoryCassandraQueryExecutor();
|
||||
setCassandraQueryExecutorForTesting(executor);
|
||||
|
||||
Reference in new issue
Block a user