65 lines
1.8 KiB
TypeScript
65 lines
1.8 KiB
TypeScript
import { describe, expect, it } from "bun:test";
|
|
import {
|
|
buildAlpacaAuthHeaders,
|
|
buildAlpacaWebSocketAuthMessage,
|
|
hasAlpacaCredentials,
|
|
resolveAlpacaCredentials
|
|
} from "../src/alpaca";
|
|
|
|
describe("resolveAlpacaCredentials", () => {
|
|
it("prefers explicit key-id and secret vars", () => {
|
|
const credentials = resolveAlpacaCredentials({
|
|
ALPACA_API_KEY: "legacy-token",
|
|
ALPACA_API_KEY_ID: "key-id",
|
|
ALPACA_API_SECRET_KEY: "secret"
|
|
});
|
|
|
|
expect(credentials).toEqual({
|
|
keyId: "key-id",
|
|
secret: "secret",
|
|
legacyToken: "legacy-token",
|
|
usesLegacyBearer: false
|
|
});
|
|
expect(hasAlpacaCredentials(credentials)).toBe(true);
|
|
expect(buildAlpacaAuthHeaders(credentials)).toEqual({
|
|
"APCA-API-KEY-ID": "key-id",
|
|
"APCA-API-SECRET-KEY": "secret"
|
|
});
|
|
expect(buildAlpacaWebSocketAuthMessage(credentials)).toEqual({
|
|
action: "auth",
|
|
key: "key-id",
|
|
secret: "secret"
|
|
});
|
|
});
|
|
|
|
it("supports the older bearer-token fallback when no secret exists", () => {
|
|
const credentials = resolveAlpacaCredentials({
|
|
ALPACA_API_KEY: "legacy-token"
|
|
});
|
|
|
|
expect(credentials.usesLegacyBearer).toBe(true);
|
|
expect(hasAlpacaCredentials(credentials)).toBe(true);
|
|
expect(buildAlpacaAuthHeaders(credentials)).toEqual({
|
|
Authorization: "Bearer legacy-token"
|
|
});
|
|
expect(buildAlpacaWebSocketAuthMessage(credentials)).toEqual({
|
|
action: "auth",
|
|
key: "legacy-token",
|
|
secret: ""
|
|
});
|
|
});
|
|
|
|
it("supports alternate secret env names", () => {
|
|
const credentials = resolveAlpacaCredentials({
|
|
ALPACA_KEY_ID: "short-key",
|
|
ALPACA_SECRET_KEY: "short-secret"
|
|
});
|
|
|
|
expect(credentials).toEqual({
|
|
keyId: "short-key",
|
|
secret: "short-secret",
|
|
legacyToken: "",
|
|
usesLegacyBearer: false
|
|
});
|
|
});
|
|
});
|