AkurAI Build
Menu

popagent

public

Latest change 6edc7e928c57dab23c0973ed3f7ee70b3ebb72d5 - Initial popagent baseline by AkurAI Build

import { beforeAll, describe, expect, test } from "bun:test";
import { RequestContext } from "@mastra/core/request-context";
import { recallSecret, storeSecret, updateSecret } from "./secrets";

beforeAll(() => {
  process.env.POPAGENT_SECRET_KEY ??= crypto.getRandomValues(new Uint8Array(32)).toBase64();
});

function context(resourceId: string) {
  const requestContext = new RequestContext();
  requestContext.set("popagent.resourceId", resourceId);
  return { requestContext } as never;
}

describe("secret tools", () => {
  test("store, recall, and update one encrypted resource-scoped secret", async () => {
    const resourceId = `secret-tools-${crypto.randomUUID()}`;
    const toolContext = context(resourceId);

    expect(await storeSecret.execute?.(
      { name: "database/password", value: "initial-value" },
      toolContext,
    )).toEqual({ stored: true, name: "database/password" });

    expect(await recallSecret.execute?.(
      { name: "database/password" },
      toolContext,
    )).toEqual({ name: "database/password", value: "initial-value" });

    expect(await updateSecret.execute?.(
      { name: "database/password", value: "replacement-value" },
      toolContext,
    )).toEqual({ updated: true, name: "database/password" });

    expect(await recallSecret.execute?.(
      { name: "database/password" },
      toolContext,
    )).toEqual({ name: "database/password", value: "replacement-value" });

    await expect(recallSecret.execute?.(
      { name: "database/password" },
      context(`${resourceId}-other`),
    )).rejects.toThrow("was not found");
  });

  test("store does not overwrite and update does not create", async () => {
    const toolContext = context(`secret-tools-${crypto.randomUUID()}`);

    await storeSecret.execute?.({ name: "api-token", value: "first" }, toolContext);
    await expect(storeSecret.execute?.(
      { name: "api-token", value: "second" },
      toolContext,
    )).rejects.toThrow("already exists");

    await expect(updateSecret.execute?.(
      { name: "missing", value: "value" },
      toolContext,
    )).rejects.toThrow("was not found");
  });
});