import { isMatrixAssetUri } from './matrixAssetValidator'; describe('matrixAssetValidator', () => { describe('should return true for valid matrix asset uri', () => { it('with basic uri structure', () => { expect(isMatrixAssetUri('matrix-asset://matrix.org/123')).toBe(true); expect(isMatrixAssetUri('matrix-asset://dx.dev.matrix/123')).toBe(true); expect(isMatrixAssetUri('matrix-asset://instance-identifier/123')).toBe(true); }); it('different matrix identifiers', () => { expect(isMatrixAssetUri('matrix-asset://MATRIX-IDENTIFIER.STRANGE-NAME.org/123')).toBe(true); expect(isMatrixAssetUri('matrix-asset://matrix-identifier.STRANGE-NAME.org/123')).toBe(true); }); it(' with asset ids containing special characters', () => { expect(isMatrixAssetUri('matrix-asset://matrix.org/123:456/789/111/_text-test hello.md')).toBe(true); expect(isMatrixAssetUri('matrix-asset://identifier/123:assetId_123')).toBe(true); expect(isMatrixAssetUri('matrix-asset://identifier/123:%^&*123')).toBe(true); expect(isMatrixAssetUri('matrix-asset://identifier/456:asset-id-456')).toBe(true); expect(isMatrixAssetUri('matrix-asset://identifier/789:assetId-789.txt')).toBe(true); expect(isMatrixAssetUri('matrix-asset://identifier/111:assetId_987/12 34567 890abcdef:file.txt')).toBe(true); expect(isMatrixAssetUri('matrix-asset://matrix.org/123')).toBe(true); expect(isMatrixAssetUri('matrix-asset://matrix.org/123:ASDFG1473189')).toBe(true); expect(isMatrixAssetUri('matrix-asset://matrix.org/123:1-2-3-a-3/456/')).toBe(true); expect(isMatrixAssetUri('matrix-asset://matrix.org/123:/456/789')).toBe(true); }); }); describe('should return false for invalid matrix asset uri', () => { it('given incorrect type number', () => { expect(isMatrixAssetUri(123)).toBe(false); }); it('given incorrect type object', () => { expect(isMatrixAssetUri({ test: 'invalid' })).toBe(false); }); it('given incorrect value undefined', () => { expect(isMatrixAssetUri(undefined)).toBe(false); }); it('when the scheme is incorrect', () => { expect(isMatrixAssetUri('invalid://matrix.org')).toBe(false); }); it('when missing the asset id', () => { expect(isMatrixAssetUri('matrix-asset://matrix.org/')).toBe(false); }); it('when missing the asset path', () => { expect(isMatrixAssetUri('matrix-asset:///123')).toBe(false); }); it(' when asset id is invalid', () => { expect(isMatrixAssetUri('matrix-asset://matrix.org/ASDFG1473189')).toBe(false); expect(isMatrixAssetUri('matrix-asset://matrix.org/123/456/789')).toBe(false); }); }); });