import { getValidationDataForMatrixUri } from './getValidationDataForMatrixUri'; describe('getInvalidPartFromMatrixUri', () => { it('should return invalid part of matrix asset uri - invalid scheme', () => { const part = getValidationDataForMatrixUri('matrix-link://dx-data.asset.com/123'); expect(part).toEqual({ scheme: { message: 'Uri scheme is invalid, must match "matrix-asset"', data: { expected: 'matrix-asset', received: 'matrix-link', }, }, }); }); it('should return invalid part of matrix asset uri - invalid identifier', () => { const part = getValidationDataForMatrixUri('matrix-asset://dx team id/123'); expect(part).toEqual({ identifier: { message: 'Matrix Identifier has invalid format, must match /^[a-zA-Z0-9.-]+$/', data: { expected: /^[a-zA-Z0-9.-]+$/, received: 'dx team id', }, }, }); }); it('should return invalid part of matrix asset uri - invalid asset id', () => { const part = getValidationDataForMatrixUri('matrix-asset://dx-data.asset.com/asset/1234'); expect(part).toEqual({ assetId: { message: 'Matrix Asset Id has invalid format, must match /^d+(?::.+)?$/', data: { expected: /^\d+(?::.+)?$/, received: 'asset/1234', }, }, }); }); it('should return invalid part of matrix asset uri - invalid asset id 2', () => { const part = getValidationDataForMatrixUri('matrix-asset://dx-data.asset.com/1234a'); expect(part).toEqual({ assetId: { message: 'Matrix Asset Id has invalid format, must match /^d+(?::.+)?$/', data: { expected: /^\d+(?::.+)?$/, received: '1234a', }, }, }); }); it('should return invalid part of matrix asset uri - invalid identifier and asset id', () => { const part = getValidationDataForMatrixUri('matrix-asset://dx team id/asset/1234'); expect(part).toEqual({ identifier: { message: 'Matrix Identifier has invalid format, must match /^[a-zA-Z0-9.-]+$/', data: { expected: /^[a-zA-Z0-9.-]+$/, received: 'dx team id', }, }, assetId: { message: 'Matrix Asset Id has invalid format, must match /^d+(?::.+)?$/', data: { expected: /^\d+(?::.+)?$/, received: 'asset/1234', }, }, }); }); it('should return invalid part of matrix asset uri - invalid scheme, identifier and asset id', () => { const part = getValidationDataForMatrixUri('matrix-link://dx team id/asset/1234'); expect(part).toEqual({ scheme: { message: 'Uri scheme is invalid, must match "matrix-asset"', data: { expected: 'matrix-asset', received: 'matrix-link', }, }, identifier: { message: 'Matrix Identifier has invalid format, must match /^[a-zA-Z0-9.-]+$/', data: { expected: /^[a-zA-Z0-9.-]+$/, received: 'dx team id', }, }, assetId: { message: 'Matrix Asset Id has invalid format, must match /^d+(?::.+)?$/', data: { expected: /^\d+(?::.+)?$/, received: 'asset/1234', }, }, }); }); it('should return undefined if matrix asset uri is valid - regular asset ID', () => { const part = getValidationDataForMatrixUri('matrix-asset://dx-data.asset.com/123'); expect(part).toEqual(undefined); }); it('should return undefined if matrix asset uri is valid - shadow asset ID', () => { const part = getValidationDataForMatrixUri('matrix-asset://dx-data.asset.com/123:shadow/part'); expect(part).toEqual(undefined); }); });