mirror of
https://github.com/bitwarden/browser
synced 2025-12-16 08:13:42 +00:00
[PM-328] Move Send to Tools (#5104)
* Move send in libs/common * Move send in libs/angular * Move send in browser * Move send in cli * Move send in desktop * Move send in web
This commit is contained in:
committed by
GitHub
parent
e645688f8a
commit
e238ea20a9
179
libs/common/src/tools/send/services/send.service.spec.ts
Normal file
179
libs/common/src/tools/send/services/send.service.spec.ts
Normal file
@@ -0,0 +1,179 @@
|
||||
import { any, mock, MockProxy } from "jest-mock-extended";
|
||||
import { BehaviorSubject, firstValueFrom } from "rxjs";
|
||||
|
||||
import { CryptoService } from "../../../abstractions/crypto.service";
|
||||
import { CryptoFunctionService } from "../../../abstractions/cryptoFunction.service";
|
||||
import { EncryptService } from "../../../abstractions/encrypt.service";
|
||||
import { I18nService } from "../../../abstractions/i18n.service";
|
||||
import { StateService } from "../../../abstractions/state.service";
|
||||
import { EncString } from "../../../models/domain/enc-string";
|
||||
import { ContainerService } from "../../../services/container.service";
|
||||
import { SendData } from "../models/data/send.data";
|
||||
import { Send } from "../models/domain/send";
|
||||
import { SendView } from "../models/view/send.view";
|
||||
|
||||
import { SendService } from "./send.service";
|
||||
|
||||
describe("SendService", () => {
|
||||
const cryptoService = mock<CryptoService>();
|
||||
const i18nService = mock<I18nService>();
|
||||
const cryptoFunctionService = mock<CryptoFunctionService>();
|
||||
const encryptService = mock<EncryptService>();
|
||||
|
||||
let sendService: SendService;
|
||||
|
||||
let stateService: MockProxy<StateService>;
|
||||
let activeAccount: BehaviorSubject<string>;
|
||||
let activeAccountUnlocked: BehaviorSubject<boolean>;
|
||||
|
||||
beforeEach(() => {
|
||||
activeAccount = new BehaviorSubject("123");
|
||||
activeAccountUnlocked = new BehaviorSubject(true);
|
||||
|
||||
stateService = mock<StateService>();
|
||||
stateService.activeAccount$ = activeAccount;
|
||||
stateService.activeAccountUnlocked$ = activeAccountUnlocked;
|
||||
(window as any).bitwardenContainerService = new ContainerService(cryptoService, encryptService);
|
||||
|
||||
stateService.getEncryptedSends.calledWith(any()).mockResolvedValue({
|
||||
"1": sendData("1", "Test Send"),
|
||||
});
|
||||
|
||||
stateService.getDecryptedSends
|
||||
.calledWith(any())
|
||||
.mockResolvedValue([sendView("1", "Test Send")]);
|
||||
|
||||
sendService = new SendService(cryptoService, i18nService, cryptoFunctionService, stateService);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
activeAccount.complete();
|
||||
activeAccountUnlocked.complete();
|
||||
});
|
||||
|
||||
describe("get", () => {
|
||||
it("exists", async () => {
|
||||
const result = sendService.get("1");
|
||||
|
||||
expect(result).toEqual(send("1", "Test Send"));
|
||||
});
|
||||
|
||||
it("does not exist", async () => {
|
||||
const result = sendService.get("2");
|
||||
|
||||
expect(result).toBe(undefined);
|
||||
});
|
||||
});
|
||||
|
||||
it("getAll", async () => {
|
||||
const sends = await sendService.getAll();
|
||||
const send1 = sends[0];
|
||||
|
||||
expect(sends).toHaveLength(1);
|
||||
expect(send1).toEqual(send("1", "Test Send"));
|
||||
});
|
||||
|
||||
describe("getFromState", () => {
|
||||
it("exists", async () => {
|
||||
const result = await sendService.getFromState("1");
|
||||
|
||||
expect(result).toEqual(send("1", "Test Send"));
|
||||
});
|
||||
it("does not exist", async () => {
|
||||
const result = await sendService.getFromState("2");
|
||||
|
||||
expect(result).toBe(null);
|
||||
});
|
||||
});
|
||||
|
||||
it("getAllDecryptedFromState", async () => {
|
||||
await sendService.getAllDecryptedFromState();
|
||||
|
||||
expect(stateService.getDecryptedSends).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
// InternalSendService
|
||||
|
||||
it("upsert", async () => {
|
||||
await sendService.upsert(sendData("2", "Test 2"));
|
||||
|
||||
expect(await firstValueFrom(sendService.sends$)).toEqual([
|
||||
send("1", "Test Send"),
|
||||
send("2", "Test 2"),
|
||||
]);
|
||||
});
|
||||
|
||||
it("replace", async () => {
|
||||
await sendService.replace({ "2": sendData("2", "test 2") });
|
||||
|
||||
expect(await firstValueFrom(sendService.sends$)).toEqual([send("2", "test 2")]);
|
||||
});
|
||||
|
||||
it("clear", async () => {
|
||||
await sendService.clear();
|
||||
|
||||
expect(await firstValueFrom(sendService.sends$)).toEqual([]);
|
||||
});
|
||||
|
||||
describe("delete", () => {
|
||||
it("exists", async () => {
|
||||
await sendService.delete("1");
|
||||
|
||||
expect(stateService.getEncryptedSends).toHaveBeenCalledTimes(2);
|
||||
expect(stateService.setEncryptedSends).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
it("does not exist", async () => {
|
||||
sendService.delete("1");
|
||||
|
||||
expect(stateService.getEncryptedSends).toHaveBeenCalledTimes(2);
|
||||
});
|
||||
});
|
||||
|
||||
// Send object helper functions
|
||||
|
||||
function sendData(id: string, name: string) {
|
||||
const data = new SendData({} as any);
|
||||
data.id = id;
|
||||
data.name = name;
|
||||
data.disabled = false;
|
||||
data.accessCount = 2;
|
||||
data.accessId = "1";
|
||||
data.revisionDate = null;
|
||||
data.expirationDate = null;
|
||||
data.deletionDate = null;
|
||||
data.notes = "Notes!!";
|
||||
data.key = null;
|
||||
return data;
|
||||
}
|
||||
|
||||
function sendView(id: string, name: string) {
|
||||
const data = new SendView({} as any);
|
||||
data.id = id;
|
||||
data.name = name;
|
||||
data.disabled = false;
|
||||
data.accessCount = 2;
|
||||
data.accessId = "1";
|
||||
data.revisionDate = null;
|
||||
data.expirationDate = null;
|
||||
data.deletionDate = null;
|
||||
data.notes = "Notes!!";
|
||||
data.key = null;
|
||||
return data;
|
||||
}
|
||||
|
||||
function send(id: string, name: string) {
|
||||
const data = new Send({} as any);
|
||||
data.id = id;
|
||||
data.name = new EncString(name);
|
||||
data.disabled = false;
|
||||
data.accessCount = 2;
|
||||
data.accessId = "1";
|
||||
data.revisionDate = null;
|
||||
data.expirationDate = null;
|
||||
data.deletionDate = null;
|
||||
data.notes = new EncString("Notes!!");
|
||||
data.key = null;
|
||||
return data;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user