mirror of
https://github.com/prowler-cloud/prowler.git
synced 2026-10-04 02:04:06 +00:00
67 lines
1.9 KiB
TypeScript
67 lines
1.9 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
|
|
import { copyAttributionParams, extractUtmParams } from "./utm";
|
|
|
|
describe("extractUtmParams", () => {
|
|
it("captures every utm_* param when utm_source is present", () => {
|
|
// Given
|
|
const params = new URLSearchParams(
|
|
"utm_source=blackhat&utm_medium=conference&utm_content=badge&foo=bar",
|
|
);
|
|
|
|
// When / Then
|
|
expect(extractUtmParams(params)).toEqual({
|
|
utm_source: "blackhat",
|
|
utm_medium: "conference",
|
|
utm_content: "badge",
|
|
});
|
|
});
|
|
|
|
it("returns empty for utm params without attribution source", () => {
|
|
// Given / When / Then
|
|
expect(extractUtmParams({ utm_content: "alerts" })).toEqual({});
|
|
});
|
|
|
|
it("captures promo_code on its own as valid attribution", () => {
|
|
// Given
|
|
const params = new URLSearchParams(
|
|
"promo_code=95b2c481-f9d5-4fc2-bc34-0b542e25f00b",
|
|
);
|
|
|
|
// When / Then
|
|
expect(extractUtmParams(params)).toEqual({
|
|
promo_code: "95b2c481-f9d5-4fc2-bc34-0b542e25f00b",
|
|
});
|
|
});
|
|
|
|
it("lets promo_code carry sourceless utm params", () => {
|
|
// Given
|
|
const params = new URLSearchParams("utm_content=badge&promo_code=abc");
|
|
|
|
// When / Then
|
|
expect(extractUtmParams(params)).toEqual({
|
|
utm_content: "badge",
|
|
promo_code: "abc",
|
|
});
|
|
});
|
|
});
|
|
|
|
describe("copyAttributionParams", () => {
|
|
it("copies attribution params and drops unrelated params", () => {
|
|
// Given
|
|
const source = new URLSearchParams(
|
|
"promo_code=black-hat-2026&utm_source=blackhat&foo=bar",
|
|
);
|
|
const target = new URLSearchParams("callbackUrl=/");
|
|
|
|
// When
|
|
copyAttributionParams(source, target);
|
|
|
|
// Then
|
|
expect(target.get("callbackUrl")).toBe("/");
|
|
expect(target.get("promo_code")).toBe("black-hat-2026");
|
|
expect(target.get("utm_source")).toBe("blackhat");
|
|
expect(target.get("foo")).toBeNull();
|
|
});
|
|
});
|