Browse Source

Task/improve comment validation of MCP import tool (#8004)

Improve comment validation
pull/8006/head
Thomas Kaul 6 days ago
committed by GitHub
parent
commit
bdacd08db2
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 25
      apps/api/src/app/endpoints/mcp/mcp.schemas.spec.ts
  2. 8
      apps/api/src/app/endpoints/mcp/mcp.schemas.ts

25
apps/api/src/app/endpoints/mcp/mcp.schemas.spec.ts

@ -1,4 +1,5 @@
import { import {
COMMENT_MAXIMUM_LENGTH,
DEFAULT_DATE_RANGE, DEFAULT_DATE_RANGE,
MCP_MAX_ACTIVITIES, MCP_MAX_ACTIVITIES,
SEARCH_QUERY_MAXIMUM_LENGTH, SEARCH_QUERY_MAXIMUM_LENGTH,
@ -92,6 +93,30 @@ describe('IMPORT_ACTIVITIES_PARAMETERS', () => {
return IMPORT_ACTIVITIES_PARAMETERS.safeParse({ activities }).success; return IMPORT_ACTIVITIES_PARAMETERS.safeParse({ activities }).success;
} }
it(`Accepts a comment of ${COMMENT_MAXIMUM_LENGTH} characters with spaces at the start and the end`, () => {
expect(
parse([
createActivity({ comment: ` ${'A'.repeat(COMMENT_MAXIMUM_LENGTH)} ` })
])
).toBe(true);
});
it(`Refuses a comment longer than ${COMMENT_MAXIMUM_LENGTH} characters`, () => {
expect(
parse([
createActivity({ comment: 'A'.repeat(COMMENT_MAXIMUM_LENGTH + 1) })
])
).toBe(false);
});
it('Removes spaces at the start and the end of a comment', () => {
expect(
IMPORT_ACTIVITIES_PARAMETERS.parse({
activities: [createActivity({ comment: ' note ' })]
}).activities[0].comment
).toBe('note');
});
it('Refuses a currency in lower case', () => { it('Refuses a currency in lower case', () => {
expect(parse([createActivity({ currency: 'usd' })])).toBe(false); expect(parse([createActivity({ currency: 'usd' })])).toBe(false);
}); });

8
apps/api/src/app/endpoints/mcp/mcp.schemas.ts

@ -1,5 +1,6 @@
import { DATE_RANGE_PATTERN } from '@ghostfolio/api/dtos/date-range-filter.dto'; import { DATE_RANGE_PATTERN } from '@ghostfolio/api/dtos/date-range-filter.dto';
import { import {
COMMENT_MAXIMUM_LENGTH,
DATE_RANGES, DATE_RANGES,
DEFAULT_DATE_RANGE, DEFAULT_DATE_RANGE,
MCP_MAX_ACCOUNTS, MCP_MAX_ACCOUNTS,
@ -124,7 +125,12 @@ export const IMPORT_ACTIVITIES_PARAMETERS = z.object({
.min(1) .min(1)
.optional() .optional()
.describe('The identifier of the account of the activity'), .describe('The identifier of the account of the activity'),
comment: z.string().optional().describe('The comment of the activity'), comment: z
.string()
.trim()
.max(COMMENT_MAXIMUM_LENGTH)
.optional()
.describe('The comment of the activity'),
currency: z currency: z
.string() .string()
.refine(isValidCurrencyCode) .refine(isValidCurrencyCode)

Loading…
Cancel
Save