59 lines
1.8 KiB
TypeScript
59 lines
1.8 KiB
TypeScript
import { describe, expect, test } from "vitest";
|
|
|
|
import { inspectPublicGit } from "./publicGit";
|
|
|
|
const source = {
|
|
host: "git.openputer.com",
|
|
normalizedUrl: "https://git.openputer.com/sai-karthik/hello-world",
|
|
projectName: "hello-world",
|
|
repositoryPath: "Sai-karthik/hello-world",
|
|
url: "https://git.openputer.com/Sai-karthik/hello-world.git",
|
|
};
|
|
|
|
describe("public Git repository inspection", () => {
|
|
test("imports metadata for an empty public Gitea repository", async () => {
|
|
const requests: string[] = [];
|
|
const result = await inspectPublicGit(source, {
|
|
fetch(input) {
|
|
const url = String(input);
|
|
requests.push(url);
|
|
if (url.endsWith("/api/v1/repos/Sai-karthik/hello-world")) {
|
|
return Promise.resolve(
|
|
Response.json({
|
|
default_branch: "main",
|
|
empty: true,
|
|
})
|
|
);
|
|
}
|
|
return Promise.resolve(new Response("not found", { status: 404 }));
|
|
},
|
|
});
|
|
|
|
expect(result).toMatchObject({
|
|
defaultBranch: "main",
|
|
documents: [],
|
|
});
|
|
expect(result.warnings).toHaveLength(6);
|
|
expect(requests).toContain(
|
|
"https://git.openputer.com/api/v1/repos/Sai-karthik/hello-world"
|
|
);
|
|
expect(requests).toContain(
|
|
"https://git.openputer.com/api/v1/repos/Sai-karthik/hello-world/raw/README.md?ref=main"
|
|
);
|
|
});
|
|
|
|
test("rejects hosts outside the supported provider allowlist", async () => {
|
|
await expect(
|
|
inspectPublicGit({
|
|
...source,
|
|
host: "example.com",
|
|
normalizedUrl: "https://example.com/example/repository",
|
|
repositoryPath: "example/repository",
|
|
url: "https://example.com/example/repository.git",
|
|
})
|
|
).rejects.toThrow(
|
|
"Repository import supports public GitHub and git.openputer.com URLs"
|
|
);
|
|
});
|
|
});
|