54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { describe, expect, it, vi } from "vitest";
|
|
|
|
vi.mock("platform", () => ({
|
|
default: {
|
|
name: "Example Browser",
|
|
version: "1.2.3",
|
|
os: { family: "Example OS", version: "4.5.6" },
|
|
},
|
|
}));
|
|
|
|
import { createAnonymousAnalyticsPayload, getUserAgentDetails } from "./AnalyticsHelper";
|
|
|
|
describe("getUserAgentDetails", () => {
|
|
it("loads browser details on demand and classifies the supplied user agent", async () => {
|
|
await expect(getUserAgentDetails("Mozilla/5.0 (iPhone; Mobile)")).resolves.toEqual({
|
|
type: "mobile",
|
|
os: { family: "Example OS", version: "4.5.6" },
|
|
browser: { name: "Example Browser", version: "1.2.3" },
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("anonymous analytics payload", () => {
|
|
it("never forwards authenticated user or portal identity fields", () => {
|
|
expect(
|
|
createAnonymousAnalyticsPayload(
|
|
{
|
|
userAnalyticsId: "visitor-1",
|
|
userId: "user-1",
|
|
portalId: "portal-1",
|
|
portalUserId: "portal-user-1",
|
|
ip: "192.0.2.1",
|
|
referrer: { source: "newsletter" },
|
|
region: { country: "DE" },
|
|
},
|
|
{
|
|
type: "desktop",
|
|
os: { family: "Example OS", version: "4.5.6" },
|
|
browser: { name: "Example Browser", version: "1.2.3" },
|
|
}
|
|
)
|
|
).toEqual({
|
|
userAnalyticsId: "visitor-1",
|
|
referrer: { source: "newsletter" },
|
|
region: { country: "DE" },
|
|
userAgent: {
|
|
type: "desktop",
|
|
os: { family: "Example OS", version: "4.5.6" },
|
|
browser: { name: "Example Browser", version: "1.2.3" },
|
|
},
|
|
});
|
|
});
|
|
});
|