mirror of
https://github.com/Lydanne/spaceflow.git
synced 2026-03-12 04:02:45 +08:00
chore: 初始化仓库
This commit is contained in:
195
core/src/shared/git-provider/detect-provider.spec.ts
Normal file
195
core/src/shared/git-provider/detect-provider.spec.ts
Normal file
@@ -0,0 +1,195 @@
|
||||
import { detectProvider } from "./detect-provider";
|
||||
|
||||
describe("detectProvider", () => {
|
||||
// ============ 显式指定 ============
|
||||
|
||||
describe("GIT_PROVIDER_TYPE 显式指定", () => {
|
||||
it("指定 github 时应返回 github", () => {
|
||||
const result = detectProvider({ GIT_PROVIDER_TYPE: "github", GITHUB_TOKEN: "ghp-xxx" });
|
||||
expect(result.provider).toBe("github");
|
||||
expect(result.source).toContain("GIT_PROVIDER_TYPE");
|
||||
});
|
||||
|
||||
it("指定 gitea 时应返回 gitea", () => {
|
||||
const result = detectProvider({ GIT_PROVIDER_TYPE: "gitea", GITEA_TOKEN: "tok" });
|
||||
expect(result.provider).toBe("gitea");
|
||||
expect(result.source).toContain("GIT_PROVIDER_TYPE");
|
||||
});
|
||||
|
||||
it("指定 gitlab 时应返回 gitlab", () => {
|
||||
const result = detectProvider({ GIT_PROVIDER_TYPE: "gitlab", GITLAB_TOKEN: "tok" });
|
||||
expect(result.provider).toBe("gitlab");
|
||||
expect(result.source).toContain("GIT_PROVIDER_TYPE");
|
||||
});
|
||||
|
||||
it("指定无效值时应走自动检测", () => {
|
||||
const result = detectProvider({ GIT_PROVIDER_TYPE: "bitbucket" });
|
||||
expect(result.provider).toBe("github");
|
||||
expect(result.source).toBe("默认");
|
||||
});
|
||||
});
|
||||
|
||||
// ============ GITEA_TOKEN 检测 ============
|
||||
|
||||
describe("GITEA_TOKEN 检测", () => {
|
||||
it("有 GITEA_TOKEN 时应识别为 gitea", () => {
|
||||
const result = detectProvider({
|
||||
GITEA_TOKEN: "tok",
|
||||
GITEA_SERVER_URL: "https://gitea.example.com",
|
||||
});
|
||||
expect(result.provider).toBe("gitea");
|
||||
expect(result.serverUrl).toBe("https://gitea.example.com");
|
||||
expect(result.token).toBe("tok");
|
||||
expect(result.source).toContain("GITEA_TOKEN");
|
||||
});
|
||||
|
||||
it("GITEA_TOKEN 优先于 GITHUB_TOKEN", () => {
|
||||
const result = detectProvider({
|
||||
GITEA_TOKEN: "gitea-tok",
|
||||
GITHUB_TOKEN: "gh-tok",
|
||||
GITHUB_SERVER_URL: "https://github.com",
|
||||
});
|
||||
expect(result.provider).toBe("gitea");
|
||||
expect(result.token).toBe("gitea-tok");
|
||||
});
|
||||
});
|
||||
|
||||
// ============ GITLAB_TOKEN / CI_JOB_TOKEN 检测 ============
|
||||
|
||||
describe("GitLab 检测", () => {
|
||||
it("有 GITLAB_TOKEN 时应识别为 gitlab", () => {
|
||||
const result = detectProvider({
|
||||
GITLAB_TOKEN: "glpat-xxx",
|
||||
CI_SERVER_URL: "https://gitlab.example.com",
|
||||
});
|
||||
expect(result.provider).toBe("gitlab");
|
||||
expect(result.serverUrl).toBe("https://gitlab.example.com");
|
||||
expect(result.token).toBe("glpat-xxx");
|
||||
expect(result.source).toContain("GITLAB_TOKEN");
|
||||
});
|
||||
|
||||
it("有 CI_JOB_TOKEN 时应识别为 gitlab", () => {
|
||||
const result = detectProvider({
|
||||
CI_JOB_TOKEN: "ci-tok",
|
||||
CI_SERVER_URL: "https://gitlab.company.com",
|
||||
});
|
||||
expect(result.provider).toBe("gitlab");
|
||||
expect(result.serverUrl).toBe("https://gitlab.company.com");
|
||||
expect(result.token).toBe("ci-tok");
|
||||
expect(result.source).toContain("CI_JOB_TOKEN");
|
||||
});
|
||||
|
||||
it("未指定 CI_SERVER_URL 时应使用默认 gitlab.com", () => {
|
||||
const result = detectProvider({ GITLAB_TOKEN: "glpat-xxx" });
|
||||
expect(result.provider).toBe("gitlab");
|
||||
expect(result.serverUrl).toBe("https://gitlab.com");
|
||||
});
|
||||
|
||||
it("GITEA_TOKEN 优先于 GITLAB_TOKEN", () => {
|
||||
const result = detectProvider({
|
||||
GITEA_TOKEN: "gitea-tok",
|
||||
GITLAB_TOKEN: "gl-tok",
|
||||
});
|
||||
expect(result.provider).toBe("gitea");
|
||||
});
|
||||
});
|
||||
|
||||
// ============ GITHUB_TOKEN 检测 ============
|
||||
|
||||
describe("GITHUB_TOKEN 检测", () => {
|
||||
it("GITHUB_TOKEN + github.com 应识别为 github", () => {
|
||||
const result = detectProvider({
|
||||
GITHUB_TOKEN: "ghp-xxx",
|
||||
GITHUB_SERVER_URL: "https://github.com",
|
||||
GITHUB_API_URL: "https://api.github.com",
|
||||
});
|
||||
expect(result.provider).toBe("github");
|
||||
expect(result.serverUrl).toBe("https://api.github.com");
|
||||
expect(result.token).toBe("ghp-xxx");
|
||||
expect(result.source).toContain("GITHUB_TOKEN");
|
||||
});
|
||||
|
||||
it("GITHUB_TOKEN + 子域名也应识别为 github", () => {
|
||||
const result = detectProvider({
|
||||
GITHUB_TOKEN: "ghp-xxx",
|
||||
GITHUB_SERVER_URL: "https://enterprise.github.com",
|
||||
});
|
||||
expect(result.provider).toBe("github");
|
||||
});
|
||||
|
||||
it("GITHUB_TOKEN + 自定义域名也应识别为 github", () => {
|
||||
const result = detectProvider({
|
||||
GITHUB_TOKEN: "tok",
|
||||
GITHUB_SERVER_URL: "https://git.example.com",
|
||||
});
|
||||
expect(result.provider).toBe("github");
|
||||
expect(result.token).toBe("tok");
|
||||
expect(result.source).toContain("GITHUB_TOKEN");
|
||||
});
|
||||
|
||||
it("GITHUB_TOKEN 无 SERVER_URL 应识别为 github", () => {
|
||||
const result = detectProvider({ GITHUB_TOKEN: "tok" });
|
||||
expect(result.provider).toBe("github");
|
||||
expect(result.source).toContain("GITHUB_TOKEN");
|
||||
});
|
||||
});
|
||||
|
||||
// ============ 默认 ============
|
||||
|
||||
describe("无任何环境变量", () => {
|
||||
it("应默认为 github", () => {
|
||||
const result = detectProvider({});
|
||||
expect(result.provider).toBe("github");
|
||||
expect(result.serverUrl).toBe("https://api.github.com");
|
||||
expect(result.token).toBe("");
|
||||
expect(result.source).toBe("默认");
|
||||
});
|
||||
});
|
||||
|
||||
// ============ GIT_PROVIDER_URL / GIT_PROVIDER_TOKEN 优先级 ============
|
||||
|
||||
describe("GIT_PROVIDER_URL / GIT_PROVIDER_TOKEN 优先级", () => {
|
||||
it("GIT_PROVIDER_URL 应覆盖自动检测的 URL", () => {
|
||||
const result = detectProvider({
|
||||
GITEA_TOKEN: "tok",
|
||||
GITEA_SERVER_URL: "https://gitea.example.com",
|
||||
GIT_PROVIDER_URL: "https://custom.example.com",
|
||||
});
|
||||
expect(result.serverUrl).toBe("https://custom.example.com");
|
||||
});
|
||||
|
||||
it("GIT_PROVIDER_TOKEN 应覆盖自动检测的 token", () => {
|
||||
const result = detectProvider({
|
||||
GITEA_TOKEN: "gitea-tok",
|
||||
GIT_PROVIDER_TOKEN: "custom-tok",
|
||||
});
|
||||
expect(result.token).toBe("custom-tok");
|
||||
});
|
||||
});
|
||||
|
||||
// ============ GitHub 默认 API URL ============
|
||||
|
||||
describe("GitHub 默认 API URL", () => {
|
||||
it("未指定 GITHUB_API_URL 时应使用默认值", () => {
|
||||
const result = detectProvider({
|
||||
GIT_PROVIDER_TYPE: "github",
|
||||
GITHUB_TOKEN: "ghp-xxx",
|
||||
});
|
||||
expect(result.serverUrl).toBe("https://api.github.com");
|
||||
});
|
||||
});
|
||||
|
||||
// ============ Gitea Actions 场景(显式指定 GIT_PROVIDER_TYPE) ============
|
||||
|
||||
describe("Gitea Actions 场景", () => {
|
||||
it("显式指定 gitea 时应回退到 GITHUB_SERVER_URL", () => {
|
||||
const result = detectProvider({
|
||||
GIT_PROVIDER_TYPE: "gitea",
|
||||
GITHUB_TOKEN: "tok",
|
||||
GITHUB_SERVER_URL: "https://git.bjxgj.com",
|
||||
});
|
||||
expect(result.provider).toBe("gitea");
|
||||
expect(result.serverUrl).toBe("https://git.bjxgj.com");
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user