mirror of
https://github.com/n8n-io/n8n.git
synced 2025-02-21 02:56:40 -08:00
refactor: Add dto for /credentials/new
endpoint (#13307)
This commit is contained in:
parent
59337019c1
commit
956637b614
|
@ -0,0 +1,39 @@
|
|||
import { GenerateCredentialNameRequestQuery } from '../generate-credential-name.dto';
|
||||
|
||||
describe('GenerateCredentialNameRequestQuery', () => {
|
||||
describe('should pass validation', () => {
|
||||
it('with empty object', () => {
|
||||
const data = {};
|
||||
|
||||
const result = GenerateCredentialNameRequestQuery.safeParse(data);
|
||||
|
||||
expect(result.success).toBe(true);
|
||||
expect(result.data?.name).toBeUndefined();
|
||||
});
|
||||
|
||||
it('with valid name', () => {
|
||||
const data = { name: 'My Credential' };
|
||||
|
||||
const result = GenerateCredentialNameRequestQuery.safeParse(data);
|
||||
|
||||
expect(result.success).toBe(true);
|
||||
expect(result.data?.name).toBe('My Credential');
|
||||
});
|
||||
});
|
||||
|
||||
describe('should fail validation', () => {
|
||||
test.each([
|
||||
{ field: 'name', value: 123 },
|
||||
{ field: 'name', value: true },
|
||||
{ field: 'name', value: {} },
|
||||
{ field: 'name', value: [] },
|
||||
])('with invalid value $value for $field', ({ field, value }) => {
|
||||
const data = { [field]: value };
|
||||
|
||||
const result = GenerateCredentialNameRequestQuery.safeParse(data);
|
||||
|
||||
expect(result.success).toBe(false);
|
||||
expect(result.error?.issues[0].path[0]).toBe(field);
|
||||
});
|
||||
});
|
||||
});
|
|
@ -0,0 +1,6 @@
|
|||
import { z } from 'zod';
|
||||
import { Z } from 'zod-class';
|
||||
|
||||
export class GenerateCredentialNameRequestQuery extends Z.class({
|
||||
name: z.string().optional(),
|
||||
}) {}
|
|
@ -42,6 +42,7 @@ export { PushWorkFolderRequestDto } from './source-control/push-work-folder-requ
|
|||
export { VariableListRequestDto } from './variables/variables-list-request.dto';
|
||||
export { CredentialsGetOneRequestQuery } from './credentials/credentials-get-one-request.dto';
|
||||
export { CredentialsGetManyRequestQuery } from './credentials/credentials-get-many-request.dto';
|
||||
export { GenerateCredentialNameRequestQuery } from './credentials/generate-credential-name.dto';
|
||||
|
||||
export { ImportWorkflowFromUrlDto } from './workflows/import-workflow-from-url.dto';
|
||||
export { ManualRunQueryDto } from './workflows/manual-run-query.dto';
|
||||
|
|
|
@ -1,4 +1,8 @@
|
|||
import { CredentialsGetManyRequestQuery, CredentialsGetOneRequestQuery } from '@n8n/api-types';
|
||||
import {
|
||||
CredentialsGetManyRequestQuery,
|
||||
CredentialsGetOneRequestQuery,
|
||||
GenerateCredentialNameRequestQuery,
|
||||
} from '@n8n/api-types';
|
||||
import { GlobalConfig } from '@n8n/config';
|
||||
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
|
||||
import { In } from '@n8n/typeorm';
|
||||
|
@ -79,8 +83,12 @@ export class CredentialsController {
|
|||
}
|
||||
|
||||
@Get('/new')
|
||||
async generateUniqueName(req: CredentialRequest.NewName) {
|
||||
const requestedName = req.query.name ?? this.globalConfig.credentials.defaultName;
|
||||
async generateUniqueName(
|
||||
_req: unknown,
|
||||
_res: unknown,
|
||||
@Query query: GenerateCredentialNameRequestQuery,
|
||||
) {
|
||||
const requestedName = query.name ?? this.globalConfig.credentials.defaultName;
|
||||
|
||||
return {
|
||||
name: await this.namingService.getUniqueCredentialName(requestedName),
|
||||
|
|
|
@ -161,8 +161,6 @@ export declare namespace CredentialRequest {
|
|||
|
||||
type Update = AuthenticatedRequest<{ credentialId: string }, {}, CredentialProperties>;
|
||||
|
||||
type NewName = AuthenticatedRequest<{}, {}, {}, { name?: string }>;
|
||||
|
||||
type Test = AuthenticatedRequest<{}, {}, INodeCredentialTestRequest>;
|
||||
|
||||
type Share = AuthenticatedRequest<{ credentialId: string }, {}, { shareWithIds: string[] }>;
|
||||
|
|
Loading…
Reference in a new issue