n8n/packages/testing/playwright/services/source-control-api-helper.ts

64 lines
1.5 KiB
TypeScript

import { TestError } from '../Types';
import type { ApiHelpers } from './api-helper';
export class SourceControlApiHelper {
constructor(private api: ApiHelpers) {}
async disconnect({ keepKeyPair = true }: { keepKeyPair?: boolean } = {}) {
const response = await this.api.request.post('/rest/source-control/disconnect', {
data: {
keepKeyPair,
},
});
if (!response.ok()) {
throw new TestError(`Failed to disconnect from source control: ${await response.text()}`);
}
const result = await response.json();
return result.data;
}
async connect(preferences: {
repositoryUrl: string;
}) {
const response = await this.api.request.post('/rest/source-control/preferences', {
data: {
connectionType: 'ssh',
...preferences,
},
});
if (!response.ok()) {
throw new TestError(`Failed to connect to source control: ${await response.text()}`);
}
const result = await response.json();
return result.data;
}
/**
* This will push all the changes
* OPTIMIZE: add a fileNames to select what specific changes to push
* @returns
*/
async pushWorkFolder({
commitMessage,
force = false,
}: {
commitMessage: string;
force?: boolean;
}) {
const response = await this.api.request.post('/rest/source-control/push-workfolder', {
data: {
commitMessage,
force,
fileNames: [],
},
});
if (!response.ok()) {
throw new TestError(`Failed to push work folder: ${await response.text()}`);
}
const result = await response.json();
return result.data;
}
}