1
0
mirror of https://github.com/bitwarden/jslib synced 2025-12-10 13:23:15 +00:00
Files
jslib/common/spec/services/cipher.service.spec.ts
Hinton d68d4b4bdc Merge commit '8b2dfc6cdcb8ff5b604364c2ea6d343473aee7cd' into feature/workspaces
# Conflicts:
#	common/spec/importers/fsecureFskImporter.spec.ts
#	common/spec/services/cipher.service.spec.ts
#	package-lock.json
#	package.json
2022-01-03 12:46:02 +01:00

62 lines
2.8 KiB
TypeScript

import { Arg, Substitute, SubstituteOf } from '@fluffy-spoon/substitute';
import { ApiService } from 'src/abstractions/api.service';
import { CryptoService } from 'src/abstractions/crypto.service';
import { FileUploadService } from 'src/abstractions/fileUpload.service';
import { I18nService } from 'src/abstractions/i18n.service';
import { LogService } from 'src/abstractions/log.service';
import { SearchService } from 'src/abstractions/search.service';
import { SettingsService } from 'src/abstractions/settings.service';
import { StateService } from 'src/abstractions/state.service';
import { Utils } from 'src/misc/utils';
import { Cipher } from 'src/models/domain/cipher';
import { EncArrayBuffer } from 'src/models/domain/encArrayBuffer';
import { EncString } from 'src/models/domain/encString';
import { SymmetricCryptoKey } from 'src/models/domain/symmetricCryptoKey';
import { CipherService } from 'src/services/cipher.service';
const ENCRYPTED_TEXT = 'This data has been encrypted';
const ENCRYPTED_BYTES = new EncArrayBuffer(Utils.fromUtf8ToArray(ENCRYPTED_TEXT).buffer);
describe('Cipher Service', () => {
let cryptoService: SubstituteOf<CryptoService>;
let stateService: SubstituteOf<StateService>;
let settingsService: SubstituteOf<SettingsService>;
let apiService: SubstituteOf<ApiService>;
let fileUploadService: SubstituteOf<FileUploadService>;
let i18nService: SubstituteOf<I18nService>;
let searchService: SubstituteOf<SearchService>;
let logService: SubstituteOf<LogService>;
let cipherService: CipherService;
beforeEach(() => {
cryptoService = Substitute.for<CryptoService>();
stateService = Substitute.for<StateService>();
settingsService = Substitute.for<SettingsService>();
apiService = Substitute.for<ApiService>();
fileUploadService = Substitute.for<FileUploadService>();
i18nService = Substitute.for<I18nService>();
searchService = Substitute.for<SearchService>();
logService = Substitute.for<LogService>();
cryptoService.encryptToBytes(Arg.any(), Arg.any()).resolves(ENCRYPTED_BYTES);
cryptoService.encrypt(Arg.any(), Arg.any()).resolves(new EncString(ENCRYPTED_TEXT));
cipherService = new CipherService(cryptoService, settingsService, apiService, fileUploadService,
i18nService, () => searchService, logService, stateService);
});
it('attachments upload encrypted file contents', async () => {
const fileName = 'filename';
const fileData = new Uint8Array(10).buffer;
cryptoService.getOrgKey(Arg.any()).resolves(new SymmetricCryptoKey(new Uint8Array(32).buffer));
await cipherService.saveAttachmentRawWithServer(new Cipher(), fileName, fileData);
fileUploadService.received(1).uploadCipherAttachment(Arg.any(), Arg.any(), new EncString(ENCRYPTED_TEXT), ENCRYPTED_BYTES);
});
});