Files
renovate/lib/workers/repository/init/apis.spec.ts
RahulGautamSingh d1fa243a08 refactor: move onboardingConfigFileName to InheritConfig (#41383)
* refactor: move onboardingConfigFilenName to InheritConfig

* fix test

* fix type

* update fn
2026-02-26 20:29:53 +00:00

228 lines
6.9 KiB
TypeScript

import type { RenovateConfig } from '~test/util.ts';
import { platform } from '~test/util.ts';
import { getConfig } from '../../../config/defaults.ts';
import { GlobalConfig } from '../../../config/global.ts';
import {
REPOSITORY_DISABLED,
REPOSITORY_FORKED,
} from '../../../constants/error-messages.ts';
import { initApis } from './apis.ts';
describe('workers/repository/init/apis', () => {
describe('initApis', () => {
let config: RenovateConfig;
beforeEach(() => {
GlobalConfig.reset();
config = { ...getConfig() };
config.errors = [];
config.warnings = [];
delete config.optimizeForDisabled;
delete config.forkProcessing;
});
it('runs', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
const workerPlatformConfig = await initApis(config);
expect(workerPlatformConfig).toBeTruthy();
});
it('throws for disabled', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({ enabled: false });
await expect(
initApis({
...config,
optimizeForDisabled: true,
}),
).rejects.toThrow(REPOSITORY_DISABLED);
});
it('throws for forked', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: true,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({
forkProcessing: 'disabled',
});
await expect(
initApis({
...config,
forkProcessing: 'disabled',
}),
).rejects.toThrow(REPOSITORY_FORKED);
});
it('does not throw for includeForks=true', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: true,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({
includeForks: true,
});
const workerPlatformConfig = await initApis(config);
expect(workerPlatformConfig).toBeTruthy();
});
it('does not throw for forkProcessing=enabled', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: true,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({
forkProcessing: 'enabled',
});
const workerPlatformConfig = await initApis(config);
expect(workerPlatformConfig).toBeTruthy();
});
it('ignores platform.getJsonFile() failures', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
platform.getJsonFile.mockRejectedValue(new Error());
await expect(
initApis({
...config,
optimizeForDisabled: true,
forkProcessing: 'disabled',
isFork: true,
}),
).resolves.not.toThrow();
});
it('throws for fork with platform.getJsonFile() failures', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: true,
repoFingerprint: '123',
});
platform.getJsonFile.mockRejectedValue(new Error());
await expect(
initApis({
...config,
forkProcessing: 'disabled',
}),
).rejects.toThrow(REPOSITORY_FORKED);
});
it('uses the onboardingConfigFileName if set', async () => {
GlobalConfig.set({ onboardingConfigFileName: '.github/renovate.json' });
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({
forkProcessing: 'disabled',
});
const workerPlatformConfig = await initApis({
...config,
optimizeForDisabled: true,
onboardingConfigFileName: '.github/renovate.json',
});
expect(workerPlatformConfig).toBeTruthy();
expect(workerPlatformConfig.onboardingConfigFileName).toBe(
'.github/renovate.json',
);
expect(platform.getJsonFile).toHaveBeenCalledExactlyOnceWith(
'.github/renovate.json',
);
expect(platform.getJsonFile).not.toHaveBeenCalledExactlyOnceWith(
'renovate.json',
);
});
it('falls back to "renovate.json" if onboardingConfigFileName is not set', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({
forkProcessing: 'disabled',
});
const workerPlatformConfig = await initApis({
...config,
optimizeForDisabled: true,
onboardingConfigFileName: undefined,
});
expect(workerPlatformConfig).toBeTruthy();
expect(workerPlatformConfig.onboardingConfigFileName).toBeUndefined();
expect(platform.getJsonFile).toHaveBeenCalledExactlyOnceWith(
'renovate.json',
);
});
it('falls back to "renovate.json" if onboardingConfigFileName is not valid', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({ forkProcessing: false });
const workerPlatformConfig = await initApis({
...config,
optimizeForDisabled: true,
onboardingConfigFileName: 'foo.bar',
});
expect(workerPlatformConfig).toBeTruthy();
expect(workerPlatformConfig.onboardingConfigFileName).toBe('foo.bar');
expect(platform.getJsonFile).toHaveBeenCalledExactlyOnceWith(
'renovate.json',
);
});
it('checks for re-enablement and continues', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce({
enabled: true,
});
const workerPlatformConfig = await initApis({
...config,
optimizeForDisabled: true,
extends: [':disableRenovate'],
});
expect(workerPlatformConfig).toBeTruthy();
expect(platform.getJsonFile).toHaveBeenCalledExactlyOnceWith(
'renovate.json',
);
});
it('checks for re-enablement and skips', async () => {
platform.initRepo.mockResolvedValueOnce({
defaultBranch: 'master',
isFork: false,
repoFingerprint: '123',
});
platform.getJsonFile.mockResolvedValueOnce(null);
await expect(
initApis({
...config,
optimizeForDisabled: true,
extends: [':disableRenovate'],
}),
).rejects.toThrow(REPOSITORY_DISABLED);
});
});
});