Files
PaperClipAI/server/src/__tests__/cloud-instance.test.ts
T
DottaandPaperclip c5226daf7a fix(cloud): enable experimental toggles on staging (#16876)
Allow instance admins to change approved experimental feature controls on managed Cloud staging. Preserve production restrictions and managed access and execution policy.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-19 13:04:07 -05:00

94 lines
3.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import {
getCloudStackContext,
isCloudManagedInstance,
isCloudStagingInstance,
type CloudInstanceEnv,
} from "../services/cloud-instance.js";
describe("isCloudManagedInstance", () => {
it("unifies both prior signals without weakening either restrictive floor", () => {
const cases: CloudInstanceEnv[] = [
{},
{ PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN: "tenant-token" },
{ PAPERCLIP_MANAGED_CONFIG: "" },
{
PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN: "tenant-token",
PAPERCLIP_MANAGED_CONFIG: "managed-document",
},
];
for (const env of cases) {
const priorTokenFloor = Boolean(env.PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN?.trim());
const priorManagedConfigFloor = env.PAPERCLIP_MANAGED_CONFIG !== undefined;
const canonicalFloor = isCloudManagedInstance(env);
expect(canonicalFloor).toBe(priorTokenFloor || priorManagedConfigFloor);
expect(canonicalFloor || !priorTokenFloor).toBe(true);
expect(canonicalFloor || !priorManagedConfigFloor).toBe(true);
}
});
it("does not treat a blank tenant token alone as a managed signal", () => {
expect(isCloudManagedInstance({ PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN: " " })).toBe(false);
});
});
describe("isCloudStagingInstance", () => {
it("requires both a managed instance and a provisioner-owned staging hostname", () => {
expect(isCloudStagingInstance({
PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN: "tenant-token",
PAPERCLIP_PRIMARY_HOST: " team.staging.paperclip.app ",
})).toBe(true);
expect(isCloudStagingInstance({
PAPERCLIP_MANAGED_CONFIG: "managed-document",
PAPERCLIP_PRIMARY_HOST: "team.staging.paperclip.app",
})).toBe(true);
expect(isCloudStagingInstance({ PAPERCLIP_PRIMARY_HOST: "team.staging.paperclip.app" })).toBe(false);
});
it.each([undefined, "", "team.paperclip.app", "localhost", "staging.example.com", "team.staging.paperclip.app.evil.com"])(
"keeps production restrictions with primary host %s",
(primaryHost) => {
expect(isCloudStagingInstance({
PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN: "tenant-token",
PAPERCLIP_PRIMARY_HOST: primaryHost,
NODE_ENV: "development",
})).toBe(false);
},
);
});
describe("getCloudStackContext", () => {
it("returns null outside Paperclip Cloud even when stray stack metadata exists", () => {
expect(getCloudStackContext({ PAPERCLIP_STACK_SLUG: "stray-stack" })).toBeNull();
});
it("returns normalized provisioner metadata for cloud instances", () => {
expect(getCloudStackContext({
PAPERCLIP_CLOUD_TENANT_SERVER_TOKEN: "tenant-token",
PAPERCLIP_CLOUD_STACK_ID: " stack-1 ",
PAPERCLIP_STACK_SLUG: " acme ",
PAPERCLIP_CLOUD_ACCOUNT_GROUP_ID: " account-group-1 ",
PAPERCLIP_PRIMARY_HOST: " acme.paperclip.app ",
PAPERCLIP_CLOUD_API_ORIGIN: " https://app.paperclip.app ",
})).toEqual({
stackId: "stack-1",
stackSlug: "acme",
accountGroupId: "account-group-1",
primaryHost: "acme.paperclip.app",
cloudOrigin: "https://app.paperclip.app",
});
});
it("represents missing managed metadata explicitly without failing health checks", () => {
expect(getCloudStackContext({ PAPERCLIP_MANAGED_CONFIG: "managed-document" })).toEqual({
stackId: null,
stackSlug: null,
accountGroupId: null,
primaryHost: null,
cloudOrigin: null,
});
});
});