-
Notifications
You must be signed in to change notification settings - Fork 305
Expand file tree
/
Copy pathSecurity.test.ts
More file actions
67 lines (57 loc) · 2.02 KB
/
Copy pathSecurity.test.ts
File metadata and controls
67 lines (57 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import { Protobuf } from "@meshtastic/sdk";
import { describe, expect, it, vi } from "vitest";
import type { RawSecurity } from "@app/validation/config/security.ts";
import {
submitSecurityConfig,
toFormShape,
toSecurityPayload,
} from "./Security.tsx";
const Policy = Protobuf.Config.Config_SecurityConfig_PacketSignaturePolicy;
const rawSecurity = (
packetSignaturePolicy: RawSecurity["packetSignaturePolicy"],
) =>
({
isManaged: false,
adminChannelEnabled: false,
debugLogApiEnabled: false,
serialEnabled: true,
packetSignaturePolicy,
privateKey: "",
publicKey: "",
adminKey: ["", "", ""],
}) satisfies RawSecurity;
describe("Security packet authenticity persistence", () => {
it("maps an absent firmware policy to Compatible", () => {
const form = toFormShape({} as Protobuf.Config.Config_SecurityConfig);
expect(form.packetSignaturePolicy).toBe(Policy.COMPATIBLE);
});
it.each([Policy.COMPATIBLE, Policy.BALANCED, Policy.STRICT])(
"preserves policy %s when mapping firmware config into the form",
(packetSignaturePolicy) => {
const form = toFormShape({
packetSignaturePolicy,
} as Protobuf.Config.Config_SecurityConfig);
expect(form.packetSignaturePolicy).toBe(packetSignaturePolicy);
},
);
it.each([Policy.COMPATIBLE, Policy.BALANCED, Policy.STRICT])(
"preserves policy %s when mapping the form to a security payload",
(packetSignaturePolicy) => {
expect(
toSecurityPayload(rawSecurity(packetSignaturePolicy))
.packetSignaturePolicy,
).toBe(packetSignaturePolicy);
},
);
it.each([Policy.COMPATIBLE, Policy.BALANCED, Policy.STRICT])(
"submits policy %s through the security radio section",
(packetSignaturePolicy) => {
const setRadioSection = vi.fn();
submitSecurityConfig(setRadioSection, rawSecurity(packetSignaturePolicy));
expect(setRadioSection).toHaveBeenCalledWith(
"security",
expect.objectContaining({ packetSignaturePolicy }),
);
},
);
});