mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 01:56:46 +00:00
refactor: Add dto for /credentials/new endpoint (#13307)
This commit is contained in:
@@ -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 { VariableListRequestDto } from './variables/variables-list-request.dto';
|
||||||
export { CredentialsGetOneRequestQuery } from './credentials/credentials-get-one-request.dto';
|
export { CredentialsGetOneRequestQuery } from './credentials/credentials-get-one-request.dto';
|
||||||
export { CredentialsGetManyRequestQuery } from './credentials/credentials-get-many-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 { ImportWorkflowFromUrlDto } from './workflows/import-workflow-from-url.dto';
|
||||||
export { ManualRunQueryDto } from './workflows/manual-run-query.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';
|
import { GlobalConfig } from '@n8n/config';
|
||||||
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
|
// eslint-disable-next-line n8n-local-rules/misplaced-n8n-typeorm-import
|
||||||
import { In } from '@n8n/typeorm';
|
import { In } from '@n8n/typeorm';
|
||||||
@@ -79,8 +83,12 @@ export class CredentialsController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Get('/new')
|
@Get('/new')
|
||||||
async generateUniqueName(req: CredentialRequest.NewName) {
|
async generateUniqueName(
|
||||||
const requestedName = req.query.name ?? this.globalConfig.credentials.defaultName;
|
_req: unknown,
|
||||||
|
_res: unknown,
|
||||||
|
@Query query: GenerateCredentialNameRequestQuery,
|
||||||
|
) {
|
||||||
|
const requestedName = query.name ?? this.globalConfig.credentials.defaultName;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
name: await this.namingService.getUniqueCredentialName(requestedName),
|
name: await this.namingService.getUniqueCredentialName(requestedName),
|
||||||
|
|||||||
@@ -161,8 +161,6 @@ export declare namespace CredentialRequest {
|
|||||||
|
|
||||||
type Update = AuthenticatedRequest<{ credentialId: string }, {}, CredentialProperties>;
|
type Update = AuthenticatedRequest<{ credentialId: string }, {}, CredentialProperties>;
|
||||||
|
|
||||||
type NewName = AuthenticatedRequest<{}, {}, {}, { name?: string }>;
|
|
||||||
|
|
||||||
type Test = AuthenticatedRequest<{}, {}, INodeCredentialTestRequest>;
|
type Test = AuthenticatedRequest<{}, {}, INodeCredentialTestRequest>;
|
||||||
|
|
||||||
type Share = AuthenticatedRequest<{ credentialId: string }, {}, { shareWithIds: string[] }>;
|
type Share = AuthenticatedRequest<{ credentialId: string }, {}, { shareWithIds: string[] }>;
|
||||||
|
|||||||
Reference in New Issue
Block a user