From aeb70a02e2e4e78a91a3043869253a33d80c7476 Mon Sep 17 00:00:00 2001 From: Benjamin Janssens Date: Fri, 16 May 2025 13:40:01 +0200 Subject: [PATCH] Revert "fix(catalog-model): add support for icons containing colons" This reverts commit b902d521aa451c2222f6cb7294aa6d74ed3f2a99. Signed-off-by: Benjamin Janssens --- .../policies/FieldFormatEntityPolicy.test.ts | 16 +++++++------- .../policies/FieldFormatEntityPolicy.ts | 6 +----- .../CommonValidatorFunctions.test.ts | 21 ------------------- .../validation/CommonValidatorFunctions.ts | 14 ------------- 4 files changed, 8 insertions(+), 49 deletions(-) diff --git a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts index 1769503fe0..9fe041a839 100644 --- a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts +++ b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.test.ts @@ -189,15 +189,13 @@ describe('FieldFormatEntityPolicy', () => { await expect(policy.enforce(data)).rejects.toThrow(/links.0.icon.*""/i); }); - it.each([ - ['dashboard'], - ['admin-dashboard'], - ['foo_dashboard'], - ['kind:api'], - ])('accepts valid link icon', async icon => { - data.metadata.links = [{ url: 'http://foo', icon }]; - await expect(policy.enforce(data)).resolves.toBe(data); - }); + it.each([['dashboard'], ['admin-dashboard'], ['foo_dashboard']])( + 'accepts valid link icon', + async icon => { + data.metadata.links = [{ url: 'http://foo', icon }]; + await expect(policy.enforce(data)).resolves.toBe(data); + }, + ); it.each([[123], [{}], [[]], ['abc xyz']])( 'rejects bad link icon value %s', diff --git a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts index c3f2802258..18e9523478 100644 --- a/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts +++ b/packages/catalog-model/src/entity/policies/FieldFormatEntityPolicy.ts @@ -97,10 +97,6 @@ export class FieldFormatEntityPolicy implements EntityPolicy { case 'isNonEmptyString': expectation = 'a non empty string'; break; - case 'isValidIcon': - expectation = - 'a string that is sequences of [a-zA-Z0-9] separated by any of [-_.:], at most 63 characters in total'; - break; default: expectation = undefined; break; @@ -165,7 +161,7 @@ export class FieldFormatEntityPolicy implements EntityPolicy { optional( `links.${i}.icon`, links[i]?.icon, - CommonValidatorFunctions.isValidIcon, + KubernetesValidatorFunctions.isValidObjectName, ); } diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts index 66ab9f0932..88b6e54113 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.test.ts @@ -243,25 +243,4 @@ describe('CommonValidatorFunctions', () => { ])(`isNonEmptyString %p ? %p`, (value, result) => { expect(CommonValidatorFunctions.isNonEmptyString(value)).toBe(result); }); - - it.each([ - [7, false], - [null, false], - ['', false], - ['a', true], - ['AZ09', true], - ['a'.repeat(63), true], - ['a'.repeat(64), false], - ['a/b', false], - ['a-b', true], - ['-a-b', false], - ['a-b-', false], - ['a--b', true], - ['a_b', true], - ['a.b', true], - ['a..b', true], - ['a:b', true], - ])(`isValidIcon %p ? %p`, (value, matches) => { - expect(CommonValidatorFunctions.isValidIcon(value)).toBe(matches); - }); }); diff --git a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts index 9a685094c8..295c5b8895 100644 --- a/packages/catalog-model/src/validation/CommonValidatorFunctions.ts +++ b/packages/catalog-model/src/validation/CommonValidatorFunctions.ts @@ -147,18 +147,4 @@ export class CommonValidatorFunctions { static isNonEmptyString(value: unknown): value is string { return typeof value === 'string' && value?.trim()?.length >= 1; } - - /** - * Checks that the value is a valid icon. - * - * @param value - The value to check - */ - static isValidIcon(value: unknown): boolean { - return ( - typeof value === 'string' && - value.length >= 1 && - value.length <= 63 && - /^([A-Za-z0-9][-A-Za-z0-9_.:]*)?[A-Za-z0-9]$/.test(value) - ); - } }