/* global Signal: false */ /* global assert: false */ 'use strict'; describe('Backup', () => { describe('_sanitizeFileName', () => { it('leaves a basic string alone', () => { const initial = 'Hello, how are you #5 (\'fine\' + great).jpg'; const expected = initial; assert.strictEqual(Signal.Backup._sanitizeFileName(initial), expected); }); it('replaces all unknown characters', () => { const initial = '!@$%^&*='; const expected = '________'; assert.strictEqual(Signal.Backup._sanitizeFileName(initial), expected); }); }); describe('_trimFileName', () => { it('handles a file with no extension', () => { const initial = '0123456789012345678901234567890123456789'; const expected = '012345678901234567890123456789'; assert.strictEqual(Signal.Backup._trimFileName(initial), expected); }); it('handles a file with a long extension', () => { const initial = '0123456789012345678901234567890123456789.01234567890123456789'; const expected = '012345678901234567890123456789'; assert.strictEqual(Signal.Backup._trimFileName(initial), expected); }); it('handles a file with a normal extension', () => { const initial = '01234567890123456789012345678901234567890123456789.jpg'; const expected = '012345678901234567890123.jpg'; assert.strictEqual(Signal.Backup._trimFileName(initial), expected); }); }); describe('_getExportAttachmentFileName', () => { it('uses original filename if attachment has one', () => { const message = { body: 'something', }; const index = 0; const attachment = { fileName: 'blah.jpg', }; const expected = 'blah.jpg'; const actual = Signal.Backup._getExportAttachmentFileName( message, index, attachment ); assert.strictEqual(actual, expected); }); it('uses attachment id if no filename', () => { const message = { body: 'something', }; const index = 0; const attachment = { id: '123', }; const expected = '123'; const actual = Signal.Backup._getExportAttachmentFileName( message, index, attachment ); assert.strictEqual(actual, expected); }); it('uses filename and contentType if available', () => { const message = { body: 'something', }; const index = 0; const attachment = { id: '123', contentType: 'image/jpeg', }; const expected = '123.jpeg'; const actual = Signal.Backup._getExportAttachmentFileName( message, index, attachment ); assert.strictEqual(actual, expected); }); it('handles strange contentType', () => { const message = { body: 'something', }; const index = 0; const attachment = { id: '123', contentType: 'something', }; const expected = '123.something'; const actual = Signal.Backup._getExportAttachmentFileName( message, index, attachment ); assert.strictEqual(actual, expected); }); }); describe('_getAnonymousAttachmentFileName', () => { it('uses message id', () => { const message = { id: 'id-45', body: 'something', }; const index = 0; const attachment = { fileName: 'blah.jpg', }; const expected = 'id-45'; const actual = Signal.Backup._getAnonymousAttachmentFileName( message, index, attachment ); assert.strictEqual(actual, expected); }); it('appends index if it is above zero', () => { const message = { id: 'id-45', body: 'something', }; const index = 1; const attachment = { fileName: 'blah.jpg', }; const expected = 'id-45-1'; const actual = Signal.Backup._getAnonymousAttachmentFileName( message, index, attachment ); assert.strictEqual(actual, expected); }); }); describe('_getConversationDirName', () => { it('uses name if available', () => { const conversation = { active_at: 123, name: '0123456789012345678901234567890123456789', id: 'id', }; const expected = '123 (012345678901234567890123456789 id)'; assert.strictEqual(Signal.Backup._getConversationDirName(conversation), expected); }); it('uses just id if name is not available', () => { const conversation = { active_at: 123, id: 'id', }; const expected = '123 (id)'; assert.strictEqual(Signal.Backup._getConversationDirName(conversation), expected); }); it('uses inactive for missing active_at', () => { const conversation = { name: 'name', id: 'id', }; const expected = 'inactive (name id)'; assert.strictEqual(Signal.Backup._getConversationDirName(conversation), expected); }); }); describe('_getConversationLoggingName', () => { it('uses plain id if conversation is private', () => { const conversation = { active_at: 123, id: 'id', type: 'private', }; const expected = '123 (id)'; assert.strictEqual( Signal.Backup._getConversationLoggingName(conversation), expected ); }); it('uses just id if name is not available', () => { const conversation = { active_at: 123, id: 'groupId', type: 'group', }; const expected = '123 ([REDACTED_GROUP]pId)'; assert.strictEqual( Signal.Backup._getConversationLoggingName(conversation), expected ); }); it('uses inactive for missing active_at', () => { const conversation = { id: 'id', type: 'private', }; const expected = 'inactive (id)'; assert.strictEqual( Signal.Backup._getConversationLoggingName(conversation), expected ); }); }); });