Integrate Oudelaa backend features, security, tests, and deployment updates

This commit is contained in:
boutmoun123
2026-07-26 16:58:53 +03:00
parent 1b24ca4294
commit 2fd5322ef7
178 changed files with 19068 additions and 2592 deletions
+33
View File
@@ -0,0 +1,33 @@
import { ConfigService } from '@nestjs/config';
import { buildAiMusicShareUrl, buildPostShareUrl, buildProfileShareUrl, normalizeShareBaseUrl, resolveShareBaseUrl } from './share-url.util';
describe('share URL utilities', () => {
const originalShare = process.env.SHARE_BASE_URL;
const originalPublicWeb = process.env.PUBLIC_WEB_URL;
afterEach(() => {
if (originalShare === undefined) delete process.env.SHARE_BASE_URL;
else process.env.SHARE_BASE_URL = originalShare;
if (originalPublicWeb === undefined) delete process.env.PUBLIC_WEB_URL;
else process.env.PUBLIC_WEB_URL = originalPublicWeb;
});
it('normalizes defaults and trailing slashes', () => {
expect(normalizeShareBaseUrl(undefined)).toBe('https://oudelaa.com');
expect(normalizeShareBaseUrl(' https://web.test/// ')).toBe('https://web.test');
});
it('resolves environment before configuration', () => {
process.env.SHARE_BASE_URL = 'https://env.test/';
const config = { get: jest.fn(() => 'https://config.test') } as unknown as ConfigService;
expect(resolveShareBaseUrl(config)).toBe('https://env.test');
expect(config.get).not.toHaveBeenCalled();
});
it('builds encoded profile, post, and AI music links', () => {
expect(buildProfileShareUrl('https://web', { username: 'a/b' })).toBe('https://web/u/a%2Fb');
expect(buildProfileShareUrl('https://web', { _id: { toString: () => 'id one' } })).toBe('https://web/profile/id%20one');
expect(buildPostShareUrl('https://web', 'post/1')).toBe('https://web/posts/post%2F1');
expect(buildAiMusicShareUrl('https://web', 'track 1')).toBe('https://web/ai/music/track%201');
});
});