File size: 1,393 Bytes
fc93158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import { describe, expect, it } from "vitest";
import { normalizeOptionalSecretInput, normalizeSecretInput } from "./normalize-secret-input.js";

describe("normalizeSecretInput", () => {
  it("returns empty string for non-string values", () => {
    expect(normalizeSecretInput(undefined)).toBe("");
    expect(normalizeSecretInput(null)).toBe("");
    expect(normalizeSecretInput(123)).toBe("");
    expect(normalizeSecretInput({})).toBe("");
  });

  it("strips embedded line breaks and surrounding whitespace", () => {
    expect(normalizeSecretInput("  sk-\r\nabc\n123  ")).toBe("sk-abc123");
  });

  it("drops non-Latin1 code points that can break HTTP ByteString headers", () => {
    // U+0417 (Cyrillic З) and U+2502 (box drawing │) are > 255.
    expect(normalizeSecretInput("key-\u0417\u2502-token")).toBe("key--token");
  });

  it("preserves Latin-1 characters and internal spaces", () => {
    expect(normalizeSecretInput("  café token  ")).toBe("café token");
  });
});

describe("normalizeOptionalSecretInput", () => {
  it("returns undefined when normalized value is empty", () => {
    expect(normalizeOptionalSecretInput(" \r\n ")).toBeUndefined();
    expect(normalizeOptionalSecretInput("\u0417\u2502")).toBeUndefined();
  });

  it("returns normalized value when non-empty", () => {
    expect(normalizeOptionalSecretInput("  key-\u0417  ")).toBe("key-");
  });
});